1 CALL FCSINI BY REF 2 PROMPT$ = CR + LF + "B4S>" 3 LENPROMPT% = LEN(PROMPT$) 10 .DEFINE .LINESIZE%=1000% 20 .DEFINE .IN%=21% 30 .DEFINE .OUT%=30% 40 COMMON (FCSERR) ERR1%,ERR2% 50 MAP (SHIT) B$=.LINESIZE% 60 DIM F$(9%) 70 .DEFINE .TRUE%=-1% 80 .DEFINE .FALSE%=0% 90 ! here to do a command 91 CALL GCL.(PROMPT$,LENPROMPT%,B$,.LINESIZE%,GOT%,EG%,EF%,ED%) 92 IF EG%=246% THEN 30050 93 C% = 0% \ N% = 0% \ F$(0%) = "" 94 do% = FnCheck%(EG%,"Read Command Line") 95 IF GOT%=0% THEN 90 96 F$ = LEFT$(B$,GOT%) 102 CALL OPEN.(F$+".B2S","W",.OUT%,0%) 103 do% = FnCheck%(ERR1%,"Open Output File:"+F$+".B2S") 104 F$(0%) = F$+".B4S" 105 ! here to open 1 level down 110 CALL OPEN.(F$(C%),"R",C%+.IN%,0%) 120 do% = FnCheck%(ERR1%,"Open Input File:"+F$(C%)) 150 L%=0% 180 ! here to start new line # 190 CONTINUED%=.FALSE% 200 ! here to process a line 210 CALL INPUT. (C%+.IN%,B$,LZ%) 212 IF ERR1%<>-10% THEN 219 213 IF CONTINUED% THEN PRINT "FILE=";F$(C%);" LEVEL=";C%;" LAST LINE CONTINUED" 214 CALL CLOSE.(.IN%+C%) 215 do% = FnCheck%(ERR1%,"Close Input File:"+F$(C%)) 216 C% = C% - 1% 217 IF C%<0% THEN 30035 218 GOTO 180 219 ! here with a line 220 do% = FnCheck%(ERR1%,"Input Line from file:"+F$(C%)) 230 L% = L% + 1% 240 L$ = LEFT$(B$,LZ%) 242 IF LEFT$(L$,2%) <> " {" THEN 249 243 C% = C% + 1% 244 F$(C%) = MID$(L$,3%,POS(L$,"}",1%)-3%) 245 GOTO 105 249 ! here with a non-indirect line 250 T% = 0% 255 Length% = LEN(L$) 257 IF Length% = 0% THEN 500 260 T% = T% + 1% 270 IF T%>Length% THEN 300 275 IF POS("0123456789",SEG$(L$,T%,T%),1%) THEN 260 280 IF T%=1% THEN 400 300 ! here with a line-number 305 IF CONTINUED% THEN PRINT "FILE=";F$(C%);" LEVEL=";C%;" LINE=";L%;" NUMBER=";N%;" BUT PREVIOUS LINE WAS CONTINUED" 310 V% = VAL(LEFT$(L$,T%-1%)) 320 IF V%<=N% THEN PRINT "FILE=";F$(C%);" LEVEL=";C%;" LINE=";L%;" NUMBER=";V%;" BUT ALREADY USED #=";N% 330 N% = V% 340 GOTO 500 400 ! here without a line number 405 IF CONTINUED% THEN 500 410 N% = N% + 1% 420 L$ = NUM1$(N%) + L$ 500 ! here with L$ to output 510 CALL PRINT.(.OUT%,L$) 515 IF RIGHT$(L$,LEN(L$))="&" THEN CONTINUED%=.TRUE% ELSE CONTINUED%=.FALSE% 520 GOTO 200 1000 Def FnCheck% (Error%,Error$) 1010 If Error%=0% then FNEXIT 1020 Print "B4S:trouble:";Error$ 1030 Print "B4S:";Err1%;"=Err1%",Err2%;"=Err2%",EG%;"=EG%",EF%;"=EF%",ED%;"=ED%" 1040 Print "B4S:",N%;"=current line number of output file" 1050 Print "B4S:",C%;"=current nesting level" 1060 Print "B4S:",L%;"=current line number of active file:";F$(C%) 1070 FOR zz% = C%-1% TO 0% STEP -1% 1080 Print "B4S:nested from file:";F$(zz%) 1090 NEXT zz% 1100 Print "B4S:closing output file!" 1110 CALL CLOSE.(.OUT%) 1120 STOP UNTIL 0% 1130 FnEnd 30035 ! here with all files read 30040 CALL CLOSE.(.OUT%) 30045 GOTO 90 30050 END