TCL.II
From Pickwiki
Jump to navigationJump to search * Will Johnson
* Variables passed in, there is nothing that must be passed in, but
* Optionally assign PASS.ERROR to TRUE or FALSE.
* PASS.ERROR = TRUE means it is OK to assign ERROR here, but don't
* display it here, just pass it back
*
* Variables passed out
* SENTENCE is set to @SENTENCE
* ERROR is set to any error generated here
* C.WORD is set to the word position number of the command line
* T2.VERB is set to RUN or RAID if that is the first word, otherwise
* T2.VERB is set to null
* T2.FILE is set to the program file that is being RUN or RAID, if that
* is the first word, otherwise T2.FILE is set to null
* I.AM is the verb / program with this include in it, this will be the
* third word if being RUN or RAID, otherwise the first word
* N.FILE is the text name of the file being acted upon
* This is passed back as [DICT] filename[,mlfile]
* F.FILE is the file pointer to the N.FILE
* DICT.FLAG is set to TRUE if N.FILE is a DICT, otherwise FALSE
* MULTI.LEVEL is set to TRUE if N.FILE is a multi-level file reference,
* otherwise FALSE
* DF.FILE is the file pointer to the DICT of the N.FILE, or if the
* N.FILE is itself a DICT, then it points to the VOC
*
*
SENTENCE = @SENTENCE
IF NOT(ASSIGNED(PASS.ERROR)) THEN PASS.ERROR = FALSE
ERROR =
*
C.WORD = 1 ; FIRST.WORD = FIELD(SENTENCE,' ',C.WORD)
IF FIRST.WORD MATCHES "RUN":@VM:"RAID" THEN
T2.VERB = FIRST.WORD
C.WORD += 1 ; T2.FILE = FIELD(SENTENCE,' ',C.WORD)
C.WORD += 1 ; I.AM = FIELD(SENTENCE,' ',C.WORD)
END ELSE T2.VERB = "" ; T2.FILE = "" ; I.AM = FIRST.WORD
C.WORD += 1 ; N.FILE = FIELD(SENTENCE,' ',C.WORD)
C.FILEEND = COL2()
*
BEGIN CASE
CASE N.FILE = "DICT"
C.WORD += 1 ; N.FILE = "DICT ":FIELD(SENTENCE,' ',C.WORD)
C.FILEEND = COL2()
CASE N.FILE = "DATA"
C.WORD += 1 ; N.FILE = "DATA ":FIELD(SENTENCE,' ',C.WORD)
C.FILEEND = COL2()
CASE N.FILE =
PRINT "FILE: ": ; INPUT N.FILE
IF N.FILE = THEN
IF PASS.ERROR THEN
ERROR = 'No file entered' ; GOTO TCL.II.EXIT
END ELSE STOP
END
END CASE
*
* Can handle files entered as:
* CUSTOMER,10-11; CUSTOMER; DICT CUSTOMER; DATA CUSTOMER
*
DICT.FLAG = FALSE ; MULTI.LEVEL = FALSE
BEGIN CASE
CASE INDEX(N.FILE,",",1) ; *MULTI-LEVEL FILE
MULTI.LEVEL = TRUE
N2.FILE = FIELD(N.FILE,",",2)
N.FILE = FIELD(N.FILE,",",1)
CASE FIELD(N.FILE," ",1) = "DICT" ; *DICT FILE
DICT.FLAG = TRUE
N.FILE = FIELD(N.FILE," ",2)
CASE FIELD(N.FILE," ",2) = "DATA" ; *DATA THROW-AWAY
N.FILE = FIELD(N.FILE," ",2)
CASE 1 ; *NORMAL FILE
END CASE
*
IF DICT.FLAG THEN
OPEN "VOC" TO DF.FILE ELSE ERR = 'VOC' ; GOTO FILE.ERROR
END ELSE
OPEN "DICT",N.FILE TO DF.FILE ELSE
ERR = 'DICT ':N.FILE ; GOTO FILE.ERROR
END
END
IF MULTI.LEVEL THEN N.FILE = N.FILE:",":N2.FILE
IF DICT.FLAG THEN N.FILE = "DICT ":N.FILE
OPEN N.FILE TO F.FILE ELSE ERR = N.FILE ; GOTO FILE.ERROR
*
GOTO TCL.II.EXIT
*
FILE.ERROR:
ERROR = 'Cannot open ':ERR:' file.'
IF PASS.ERROR THEN
GOTO TCL.II.EXIT
END ELSE CRT ERROR:' Hit ENTER': ; INPUT NOTHING ; STOP
*
TCL.II.EXIT: