CSEQ
From Pickwiki
Jump to navigationJump to searchBack to BasicSource
This is a utility to allow checking part of a large file (originally a .csv extract of 40MB) without the editor falling over or taking a long time to load.
PROGRAM CSEQ
* Views part of a large Directory-type file
*
* Keith Robert Johnson - 6th May 2011 - Public Domain
*
* Editors generally cannot handle very large files (like .csv extracts)
* This program allows the user to get the first line and 20 lines
* surrounding a given line and writes the result into a VOC item
* then chains to the editor to see what you have.
SENT = TRIM(@SENTENCE)
* Trim off any RUN stuff
CONVERT ' ' TO @AM IN SENT
IF SENT(1) EQ 'RUN' THEN
DEL SENT<1>
DEL SENT<1>
END
* Remove verb
DEL SENT<1>
* Get our input
FILE = SENT<1>
ITEM = SENT<2>
LINE = SENT<3>
* Check it
IF NOT(NUM(LINE)) THEN
CRT 'Non-numeric line "':LINE:'"'
STOP
END
LINE = INT(LINE+0)
DAWN = LINE-10 ; IF DAWN LT 2 THEN DAWN = 2
DUSK = LINE+10
JUST = 'R%':LEN(DUSK)
IF ITEM EQ '' OR FILE EQ '' THEN STOP 201
* Open the files
OPEN 'VOC' TO VOC ELSE STOP 201,'VOC'
OPENSEQ FILE,ITEM TO JUNK ELSE STOP 201,FILE:',':ITEM
* Get the header line
EOF = @FALSE
READSEQ LINE FROM JUNK ELSE EOF = @TRUE
IF EOF THEN
CRT 'Nothing in file'
CLOSESEQ JUNK
STOP
END
TEXT = LINE
* Step to the start line
FOR X = 3 TO DAWN
READSEQ LINE FROM JUNK ELSE EOF = @TRUE
IF EOF THEN
CRT 'No such line'
CLOSESEQ JUNK
STOP
END
NEXT X
* Get the lines we want
FOR X = DAWN TO DUSK
READSEQ LINE FROM JUNK ELSE EOF = @TRUE
IF EOF THEN EXIT
TEXT<-1> = FMT(X,JUST):': ':LINE
NEXT X
CLOSESEQ JUNK
* Write away the stuff we want and edit it
WRITE TEXT ON VOC,'CSEQ:':@USERNO
CHAIN 'ED VOC CSEQ:':@USERNO