5 REM MIS CLARK BAKER 8/73 DSAA 10 PRINT "MIS V4A" 14 DIM L$(40%),N$(40%),S%(40%),S1%(40%),T%(40%),S(25%),S$(25%),L%(40%) 15 OPEN "KB:" FOR INPUT AS FILE 1%:ON ERROR GO TO 940 16 D1$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC":X$=X$+CHR$(X%) FOR X%=0% TO 96%:X$=X$+CHR$(X%) FOR X%=65% TO 90% 20 PRINT "#";:INPUT LINE #1%,L$:L$=LEFT(L$,LEN(L$)-3%+ASCII(RIGHT(L$, LEN(L$)))/10%):GO TO 9999 IF LEFT(L$,2%)="/S": I%=INSTR(1%,L$,"<"):IF I%=0% THEN O$="KB:" ELSE O$=LEFT(L$, I%-1%):L$=RIGHT(L$,I%+1%) 25 I%=INSTR(1%,L$,"/"):IF I% THEN L$=LEFT(L$,I%-1%):L9%=-1% 30 I%=INSTR(1%,L$,","):IF I%=0% THEN F1$=L$:F2$="":GO TO 36 32 IF INSTR(1%,L$,"[")I% THEN I%=INSTR(I%+1%, L$,","):IF I%=0% THEN F1$=L$:F2$="":GO TO 36 34 F1$=LEFT(L$,I%-1%):F2$=RIGHT(L$,I%+1%) 36 IF F1$="" THEN S$=SYS(CHR$(6%)+CHR$(-10%)+F2$):F1$=RAD$(SWAP%(CVT$%(MID( S$,7%,2%))))+RAD$(SWAP%(CVT$%(MID(S$,9%,2%)))) 38 IF F2$="" THEN S$=SYS(CHR$(6%)+CHR$(-10%)+F1$):F2$=RAD$(SWAP%(CVT$%(MID( S$,7%,2%))))+RAD$(SWAP%(CVT$%(MID(S$,9%,2%)))) 39 F1$=F1$+".DAT" IF INSTR(1%,F1$,".")=0%:F2$=F2$+".FOR" IF INSTR(1%,F2$, ".")=0% 40 OPEN F1$ FOR INPUT AS FILE 2%:OPEN F2$ FOR INPUT AS FILE 3%:INPUT #3%,R%,N%:FOR X%=1% TO N%:INPUT #3%,N$(X%),S1%(X%), L%(X%),T%(X%):NEXT X%:OPEN "MIS"+MID(NUM$(100%+ASCII(SYS(CHR$( 6%)+CHR$(9%)))),2%,2%)+".TMP" FOR OUTPUT AS FILE 4%:DIM #4%, F$(2%)=32%,Q%(20%),M%(1%),P%(40%),Z%(2500%) 43 IF L9% THEN MAT PRINT N$(N%), 45 L$="":PRINT 50 INPUT LINE #1%,L1$:L$=L$+LEFT(L1$,LEN(L1$)-3%+ASCII(RIGHT(L1$,LEN(L1$)))/ 10%):IF RIGHT(L$,LEN(L$))<>"." THEN L$=L$+" ":PRINT CHR$(9%);: GO TO 50 60 L$=LEFT(L$,LEN(L$)-1%):L$=LEFT(L$,LEN(L$)-1%) IF RIGHT(L$,LEN(L$)) ="":L$=L$+" ":I%,I1%,L%=0% 80 I1%=INSTR(I1%+1%,L$," "):GO TO 90 IF I1%=0%:L$(L%+1%)=MID(L$,I%+1%,I1%-I%-1% ):L%=L%+1%:I%=I1%:I1%=INSTR(I%+2%,L$,"' ") IF MID(L$,I%+1%,1%)="'":IF I1% THEN 80 ELSE PRINT "YOU HAVE A MISSING CLOSING QUOTE":GO TO 45 90 RESTORE:READ N1%:FOR N2%=1% TO N1%:READ N$:FOR X%=1% TO L%: L$(X%)="" IF L$(X%)=N$:NEXT X%:NEXT N2% 100 DATA 17,PLEASE,EACH,ON,FOR,HAVE,TO,WHICH,REPORT,THE,WITH,IN,IF, OF,WHEN,WHERE,AND,ALSO 105 Q%,S%,S1%,S2%=1%:FOR X%=1% TO L%:GO TO 195 IF LEN(L$(X%))=0%:I%=INSTR(1%, "EQ!GT!LT!NE!NG!NL!WL!OL!",L$(X%)+"!"):GO TO 195 IF I%=0%:I1%=1%:I1%= INSTR(2%,L$(X%+1%),"'") IF LEFT(L$(X%+1%),1%)="'":IF I1%=0% THEN PRINT "YOU HAVE A MISSING CLOSING QUOTE":GO TO 45 110 GO TO 150 IF INSTR(I1%,L$(X%+1%),","):IF I%>16% THEN PRINT "YOU LEFT OUT A COMMA IN YOUR WL OR OL COMMAND":GO TO 45 140 S%(S%)=(I%-1%)/3%+1%:S%(S%+1%)=FNS%(L$(X%-1%)):S%=S%+2%:S$= L$(X%+1%):ON T%(S%(S%-1%)) GOSUB 200,210,220:GO TO 190 150 IF I%<>1% THEN S%(S%)=(I%-1%)/3%+1%:S%(S%+1%)=FNS%(L$(X%-1%)): S%=S%+2%:I1%=INSTR(I1%,L$(X%+1%),","):S$=LEFT(L$(X%+1%), I1%-1%):ON T%(S%(S%-1%)) GOSUB 200,210,220:S$=RIGHT(L$(X%+1% ),I1%+1%):ON T%(S%(S%-2%)) GOSUB 200,210,220:GO TO 190 160 S%(S%)=9%:S%(S%+1%)=FNS%(L$(X%-1%)):S%=S%+3%:S9%=S%-1%:S8%=0%: L$(X%+1%)=L$(X%+1%)+"," 170 I1%=1%:S8%=S8%+1%:I1%=INSTR(2%,L$(X%+1%),"'") IF LEFT(L$(X%+1%),1%) ="'":I1%=INSTR(I1%,L$(X%+1%),","):S$=LEFT(L$(X%+1%),I1%-1%): L$(X%+1%)=RIGHT(L$(X%+1%),I1%+1%):ON T%(S%(S9%-1%)) GOSUB 200,210,220:GO TO 170 IF LEN(L$(X%+1%)):S%(S9%)=S8% 190 L$(Y%)="" FOR Y%=X%-1% TO X%+1% 195 GO TO 250 200 S(S1%)=VAL(S$):S%(S%)=S1%:S1%=S1%+1%:S%=S%+1%:RETURN 210 S$(S2%)=MID(S$,2%,LEN(S$)-2%):S%(S%)=S2%:S2%=S2%+1%:S%=S%+1%:RETURN 220 S(S1%)=FND(S$):S%(S%)=S1%:S1%=S1%+1%:S%=S%+1%:RETURN 230 DEF FNS%(S$):FOR N1%=1% TO N%:GO TO 232 IF N$(N1%)=S$:NEXT N1%:PRINT "I DON'T UNDERSTAND '";S$;"', PLEASE TRY AGAIN.":GO TO 45 232 FNS%=N1%:FNEND 240 DEF FND(D$)=VAL(RIGHT(D$,8%))*32*12+((INSTR(1%,D1$,XLATE(MID(D$,4%, 3%),X$))-1%)/3%+1%)*32+VAL(LEFT(D$,2%)) 250 IF L$(X%)="TOP" THEN M1%=VAL(L$(X%+1%)):M2%=-FNS%(L$(X%+2%)): L$(X%),L$(X%+1%),L$(X%+2%)="":GO TO 300 260 IF L$(X%)="LOW" THEN M1%=VAL(L$(X%+1%)):M2%=FNS%(L$(X%+2%)): L$(X%),L$(X%+1%),L$(X%+2%)="":GO TO 300 270 IF L$(X%)<>"SEQL/H" AND L$(X%)<>"SEQH/L" THEN 300 ELSE L$(X%+1%)= L$(X%+1%)+"," 280 I%=INSTR(1%,L$(X%+1%),","):GO TO 290 IF I%=0%:Q%(Q%)= FNS%(LEFT(L$(X%+1%),I%-1%)):L$(X%+1%)=RIGHT(L$(X%+1%),I%+1%): Q%(Q%)=-Q%(Q%) IF L$(X%)="SEQH/L":Q%=Q%+1%:GO TO 280 290 L$(X%)="" 300 NEXT X% 310 P%=1%:FOR X%=1% TO L%:GO TO 320 IF LEN(L$(X%))=0%:P%(P%)= FNS%(L$(X%)):P%=P%+1% 320 NEXT X%:R1%,Z%=1% 330 GOSUB 900:FOR X%=1% TO S%-1%:T%=T%(S%(X%+1%)):ON T% GO TO 336,337,338 336 S=VAL(MID(R$,S1%(S%(X%+1%)),L%(S%(X%+1%)))):GO TO 350 337 S$=MID(R$,S1%(S%(X%+1%)),L%(S%(X%+1%))):GO TO 350 338 S=FND(MID(R$,S1%(S%(X%+1%)),9%)):GO TO 350 350 ON S%(X%) GO TO 360,370,380,390,400,410,420,430,440 360 IF T%=2% THEN IF S$<>S$(S%(X%+2%)) THEN 460 363 IF T%<>2% THEN IF S<>S(S%(X%+2%)) THEN 460 366 X%=X%+2%:GO TO 450 370 IF T%=2% THEN IF S$<=S$(S%(X%+2%)) THEN 460 373 IF T%<>2% THEN IF S<=S(S%(X%+2%)) THEN 460 376 X%=X%+2%:GO TO 450 380 IF T%=2% THEN IF S$>=S$(S%(X%+2%)) THEN 460 383 IF T%<>2% THEN IF S>=S(S%(X%+2%)) THEN 460 386 X%=X%+2%:GO TO 450 390 IF T%=2% THEN IF S$=S$(S%(X%+2%)) THEN 460 393 IF T%<>2% THEN IF S=S(S%(X%+2%)) THEN 460 396 X%=X%+2%:GO TO 450 400 IF T%=2% THEN IF S$>S$(S%(X%+2%)) THEN 460 403 IF T%<>2% THEN IF S>S(S%(X%+2%)) THEN 460 406 X%=X%+2%:GO TO 450 410 IF T%=2% THEN IF S$2% THEN IF SS$(S%(X%+3%)) THEN 460 423 IF T%<>2% THEN IF SS(S%(X%+3%)) THEN 460 426 X%=X%+3%:GO TO 450 430 IF T%=2% THEN IF S$>=S$(S%(X%+2%)) AND S$<=S$(S%(X%+3%)) THEN 460 433 IF T%<>2% THEN IF S>=S(S%(X%+2%)) AND S<=S(S%(X%+3%)) THEN 460 436 X%=X%+3%:GO TO 450 440 FOR X1%=1% TO S%(X%+2%):IF T%=2% THEN IF S$=S$(S%(X%+X1%+2%)) THEN 446 442 IF T%<>2% THEN IF S=S(S%(X%+X1%+2%)) THEN 446 444 NEXT X1%:GO TO 460 446 X%=X%+S%(X%+2%)+2% 450 NEXT X%:Z%(Z%)=R1%:Z%=Z%+1% 460 R1%=R1%+1%:GO TO 330 470 F$(0%)=O$:F$(1%)=F1$:F$(2%)=F2$:Q%(0%)=Q%:M%(0%)=M1%:M%(1%)= M2%:P%(0%)=P%:Z%(0%)=Z%:CLOSE 1%,2%,3%,4% 480 CHAIN "MIS2" 900 R$="":R4=R%:R3=R1%*R4-R4 910 IF R2%<>INT(R3/512)+1% THEN R2%=INT(R3/512)+1%:GET #2%,RECORD R2% 920 IF R3-INT(R3/512)*512+R4<=512 THEN FIELD #2%,R3-INT(R3/512)* 512 AS R1$,R4 AS R2$:R$=R$+R2$:IF ASCII(R$)=26% OR ASCII(R$)=0% THEN 470 ELSE RETURN 930 R5%=512%-R3+INT(R3/512)*512:FIELD #2%,512%-R5% AS R1$,R5% AS R2$: R$=R$+R2$:R3=R3+R5%:R4=R4-R5%:IF ASCII(R$)=26% OR ASCII(R$)=0% THEN 470 ELSE 910 940 IF ERR=11% AND ERL=20 THEN CLOSE 1%:GO TO 9999 950 E$=RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),3%):PRINT LEFT(E$,INSTR(1%,E$, CHR$(0%))-1%):RESUME 20 9999 END