CSEQ

From Pickwiki
Revision as of 23:48, 26 February 2015 by Conversion script (talk) (link fix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Back 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