1 COM F$[7],B$[7],L9,L8 2 COM A$[72],A6,A7,A8,A9 3 COM W,W$[64],W0,Y 4 COM M[500],M,M0,M9,Y[150] 5 REM COBOL, HP 36845B, 6/74 10 FILES *,*,* 20 ASSIGN F$,1,A5 22 ASSIGN "$COSC4",2,A5 24 READ #2,1;C$,D$,G$ 26 READ #2,10;S1 27 MAT READ #2;S[S1,5] 30 ASSIGN "$COSCR",2,A5 40 ASSIGN "$COSCR",3,A5 42 IF END #2 THEN 600 52 DIM D$[10],G$[25] 54 LET D$="0123456789" 60 DIM X$[72],N$[30],M$[72] 62 DIM P$[30] 64 DIM V$[72] 70 DIM S[40,5],P[20,2] 73 DIM C$[72] 80 DIM F[10],G[3] 82 IF END #1 THEN 500 90 READ #3,1 94 GOSUB 9650 96 PRINT #3;"TALLY",Y, END 97 LET Y[Y]=320060. 98 LET Y[Y+1]=13500 99 LET Y=Y+2 100 READ #1,1 110 FOR I=1 TO L8-1 120 READ #1;N,A$ 130 NEXT I 140 PRINT #2,5; END 160 LET E8=W1=W2=W3=0 170 MAT F=ZER 180 LET W2=0 220 MAT READ P[20,2] 300 LET S=1 302 GOSUB 9000 304 GOSUB 9100 306 LET W3=-1 310 GOTO 1000 400 IF E8=1 THEN 510 402 FOR V1=0 TO W0-1 404 FOR V2=V1*16+15 TO V1*16+7 STEP -1 406 IF W$[V2,V2] <> " " THEN 412 408 NEXT V2 410 GOTO 422 412 LET X$=W$[V1*16+7,V2] 414 GOSUB 9700 416 IF I0=0 THEN 470 418 IF INT(Y[I0]/100000.) <> 3 THEN 480 420 LET Y[V1*8+2]=INT((Y[I0+1]-INT(Y[I0+1]/2000)*2000)/3) 422 NEXT V1 430 CHAIN "$COPDV1" 470 LET E9=13 472 GOTO 482 480 LET E9=14 482 GOSUB 4000 484 GOTO 510 500 PRINT "*UNEXPECTED END OF FILE REACHED AFTER LINE";N 510 CHAIN B$,L9 600 REM ENTER HERE IF WE RUN OUT OF COSCR 610 PRINT "*THE SCRATCH FILE 'COSCR' IS NOT LONG ENOUGH TO COMPILE" 620 PRINT " YOUR PROGRAM. TYPE 'KIL-COSCR' FOLLOWED BY 'OPE-COSCR,N'" 630 PRINT " WHERE N IS A GREATER NUMBER OF LINKS THAN ARE CURRENTLY" 640 PRINT " AVAILABLE. THEN GET COMON AND TRY AGAIN." 670 CHAIN "$COMON",9999 900 DEF FNA(L0)=L0-INT(L0/64)*64 910 DEF FNB(L0)=L0-INT(L0/2)*2 920 DEF FNC(L0)=L0-INT(L0/10)*10 922 DEF FND(L0)=L0-INT(L0/3)*3 924 DEF FNE(L0)=L0-INT(L0/1.E+06)*1.E+06 1000 REM MAIN TABLE DRIVEN ROUTINE 1010 GOSUB 5000 1020 IF S8=0 THEN 1100 1030 IF S[S,2]=0 THEN 1045 1040 GOSUB 7000 1045 IF S[S,5]=-10 THEN 1060 1050 GOSUB 9100 1060 LET S=S[S,3] 1070 IF S <> -100 THEN 1010 1080 GOTO 400 1100 IF S[S,5] <= 0 THEN 1130 1102 LET E9=S[S,5] 1110 GOSUB 4000 1120 GOTO 1140 1130 GOTO -S[S,5]+1 OF 1060,1140,1140 1140 LET S=S[S,4] 1150 GOTO 1070 2000 REM LEVEL ROUTINE 2002 GOSUB 8250 2010 LET X9=X8=0 2012 PRINT #2,5;"","",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"", END 2020 LET F0=F1=F2=F3=F4=F5=F6=F7=F8=F9=G0=G[1]=G[2]=G[3]=0 2030 IF X >= 50 THEN 2170 2040 IF X=0 THEN 2210 2050 IF X <= X9 THEN 2110 2060 PRINT #2,5+X9;N$,P$,F0,F1,F2,F3,M*3+M0,F5,F6,F7,F8,F9, END 2062 PRINT #2;M*3+M0,G0,G[1],G[2],G[3],V$, END 2070 LET X9=X9+1 2080 IF X=X9 THEN 2240 2090 PRINT #2,5+X9;"","",0,0,0,0,0,0,0,0,0,0, END 2092 PRINT #2;0,0,0,0,0,"", END 2100 GOTO 2070 2110 GOSUB 8300 2120 LET X9=X9-1 2130 READ #2,5+X9;N$,P$,F0,F1,F2,F3,F4,F5,F6,F7,F8,I 2131 READ #2;I0,G0,G[1],G[2],G[3],V$ 2134 IF M*3+M0 >= I0 THEN 2139 2136 LET M=INT((I0-1)/3) 2138 LET M0=I0-M*3 2139 LET F9=F9 MAX M*3+M0-F4 2140 IF X <= X9 THEN 2110 2141 IF X8=1 THEN 2366 2142 LET F4=0 2143 IF X <> 1 THEN 2150 2144 GOSUB 8250 2146 LET F0=F1=F2=F3=F4=F5=F6=F7=F8=F9=G0=G[1]=G[2]=G[3]=0 2150 LET X9=X 2164 GOTO 2240 2170 IF X <> 77 THEN 2210 2190 LET X=1 2200 GOTO 2050 2210 LET E9=8 2212 GOSUB 4000 2220 LET X=1 2230 GOTO 2010 2240 GOSUB 9100 2250 LET N$=X$[1,30 MIN LEN(X$)] 2252 IF W3<0 OR X <> 1 THEN 2260 2254 LET M=INT(W2/3) 2256 LET M0=W2-INT(W2/3)*3 2260 GOSUB 9100 2270 IF A3 <> 0 THEN 2300 2280 GOSUB 5000 2290 IF S8=1 THEN 2030 2300 IF X$[1,3]="PIC" THEN 2410 2310 IF X$[1,3]="VAL" THEN 2530 2320 IF X$="USAGE" THEN 2460 2330 IF X$="BLANK" THEN 2580 2340 IF X$[1,4]="JUST" THEN 2630 2342 IF X$="OCCURS" THEN 2800 2350 IF X$[1,4]="SYNC" THEN 2680 2352 IF X$<"A" THEN 2260 2354 IF X$='92 THEN 2260 2360 IF X$="REDEFINES" THEN 2740 2362 IF S8 <> 0 THEN 2370 2363 LET X=1 2364 LET X8=1 2365 GOTO 2110 2366 LET A1=1 2367 LET W3=-10 2368 LET W1=0 2369 RETURN 2370 LET E9=9 2372 GOSUB 4000 2380 GOSUB 9100 2390 IF A3 <> 0 THEN 2380 2400 GOTO 2280 2401 LET E9=10 2402 GOSUB 4000 2403 GOTO 2380 2410 REM PICTURE 2420 GOSUB 9100 2430 IF X$="IS" THEN 2420 2440 LET P$=X$ 2450 GOTO 2260 2460 REM USAGE 2470 GOSUB 9100 2480 IF X$="IS" THEN 2470 2490 LET F0=1 2500 IF X$[1,4]="COMP" THEN 2260 2502 LET F0=0 2510 IF X$[1,4]="DISP" THEN 2260 2512 LET F0=2 2514 IF X$="INDEX" THEN 2260 2520 GOTO 2401 2530 REM VALUE 2540 GOSUB 9100 2550 IF X$="IS" THEN 2540 2560 LET V$=X$ 2570 GOTO 2260 2580 REM BLANK WHEN ZERO 2590 GOSUB 9100 2600 IF X$="WHEN" THEN 2590 2602 LET F1=1 2610 IF X$="ZERO" THEN 2260 2620 GOTO 2401 2630 REM JUSTIFIED 2640 GOSUB 9100 2650 LET F2=1 2660 IF X$="RIGHT" THEN 2260 2670 GOTO 2270 2680 REM SYNC 2690 GOSUB 9100 2700 LET F3=1 2710 IF X$="LEFT" THEN 2260 2712 LET F3=0 2720 IF X$="RIGHT" THEN 2260 2730 GOTO 2401 2740 REM REDEFINES 2742 GOSUB 9100 2750 GOSUB 9700 2760 LET I=Y[I0+1]-INT(Y[I0+1]/2000)*2000 2762 GOSUB 9650 2770 LET M=INT((I-1)/3) 2780 LET M0=I-M*3 2790 GOTO 2260 2800 REM OCCURS 2802 GOTO 2810 2804 LET E9=15 2806 GOSUB 4000 2810 GOSUB 9100 2820 GOSUB 5000 2830 IF S8=0 THEN 2401 2832 LET G0=G0+1 2840 IF G0>3 THEN 2401 2850 LET G[G0]=X 2860 GOSUB 9100 2870 IF X$="TIMES" THEN 2860 2880 IF X$ <> "INDEXED" THEN 2270 2890 GOSUB 9100 2900 IF X$="BY" THEN 2890 2906 IF X$<"A" THEN 2270 2910 PRINT #3;X$,Y, END 2920 LET M9=M9-1 2930 LET Y[Y]=420060. 2932 LET Y[Y+1]=12000+M9 2940 LET Y=Y+2 2950 GOTO 2260 3000 REM PICTURE SCAN 3010 LET X$="X9A(SVPB0Z,.*+-CD$" 3020 LET P9=LEN(P$) 3030 LET P5=P6=P7=P8=P0=P1=P3=F7=F6=0 3040 FOR I=1 TO P9 3050 LET Y$=P$[I,I] 3060 FOR I0=1 TO 18 3070 IF Y$=X$[I0,I0] THEN 3100 3080 NEXT I0 3090 LET E9=7 3092 GOSUB 4000 3094 RETURN 3100 LET I1=P[I0,2] 3110 IF I0>9 THEN 3130 3120 GOTO I0 OF 3220,3250,3290,3320,3440,3470,3500,3520,3520 3130 GOTO I0-9 OF 3540,3520,3560,3540,3572,3572,3610,3650,3580 3140 IF FNB(INT(P8/2^(I1-1))) <> 0 THEN 3090 3150 LET P8=P[I1,1] 3160 LET I2=I0 3170 IF P5 <= 0 THEN 3210 3180 LET P5=P5-1 3190 LET I0=P2 3200 GOTO 3100 3210 NEXT I 3211 IF P1=0 OR P0=0 THEN 3090 3212 IF P6=1 THEN 3218 3214 LET F7=P3+F7 3218 RETURN 3220 LET P1=P1 MAX 3 3230 LET P0=P0+1 3240 GOTO 3140 3250 LET P7=1 3251 LET P3=P3+1 3252 IF P8=1 THEN 3090 3260 GOTO P1+1 OF 3270,3230,3220,3230,3230 3270 LET P1=1 3280 GOTO 3230 3290 GOTO P1+1 OF 3300,3220,3230,3230,3230 3300 LET P1=2 3310 GOTO 3230 3320 LET P2=I0=I2 3330 LET I3=0 3340 LET I=I+1 3350 FOR I4=1 TO 10 3360 IF P$[I,I]=D$[I4,I4] THEN 3400 3370 NEXT I4 3380 IF P$[I,I]=")" THEN 3420 3390 GOTO 3090 3400 LET I3=I3*10+I4-1 3410 GOTO 3340 3420 LET P5=I3-1 3430 GOTO 3170 3440 LET F6=1 3450 LET P0=P0-1 3460 GOTO 3260 3470 LET P6=1 3480 LET F7=P3 3490 GOTO 3450 3500 LET P3=P3+1 3501 LET F7=F7-P6+1 3502 LET I1=I1+P6 3504 LET P8=P6 3510 GOTO 3450 3520 LET P1=4 3530 GOTO 3230 3540 LET P1=4 3542 LET I1=I1+P6 3550 GOTO 3250 3560 LET P6=1 3562 LET F7=P3 3570 GOTO 3520 3572 LET F6=1 3580 IF I2 <> I0 THEN 3602 3590 LET I1=I1+12 MIN 19 3592 LET P8=P[I1,1] 3600 GOTO 3540 3602 IF I0=18 THEN 3520 3604 LET I1=I1+P7 3606 LET P8=P6 3608 GOTO 3520 3610 IF P$[I+1,I+1] <> "R" THEN 3090 3620 LET P0=P0+1 3630 LET I=I+1 3640 GOTO 3520 3650 IF P$[I+1,I+1]="B" THEN 3620 3660 GOTO 3090 4000 REM ERROR MESSAGES 4002 LET F7=0 4004 PRINT "*"; 4010 GOTO INT((E9-1)/10)+1 OF 4020,4030 4020 GOTO E9 OF 4100,4120,4140,4160,4180,4200,4220,4240,4260,4280 4030 GOTO E9-10 OF 4300,4320,4340,4350,4360 4100 PRINT "'SECTION' MISSING OR MISSPELLED"; 4102 LET F7=1 4110 GOTO 4900 4120 PRINT "END OF PARAGRAPH EXPECTED"; 4122 LET F7=2 4130 GOTO 4900 4140 PRINT "ILLEGAL FILE NAME IN FD"; 4142 LET F7=1 4150 GOTO 4900 4160 PRINT "ILLEGAL CLAUSE IN FD DESCRIPTION"; 4162 LET F7=3 4170 GOTO 4900 4180 PRINT "ILLEGAL PARAGRAPH IN DATA DIVISION"; 4182 LET F7=2 4184 LET X$="" 4190 GOTO 4900 4200 PRINT "'DIVISION' MISSING OR MISSPELLED"; 4202 LET F7=1 4210 GOTO 4900 4220 PRINT "ILLEGAL PICTURE CONSTRUCTION"; 4230 GOTO 4900 4240 PRINT "ILLEGAL LEVEL NUMBER OR CONSTRUCTION"; 4250 GOTO 4900 4260 PRINT "ILLEGAL CLAUSE IN DATA DESCRIPTION"; 4270 GOTO 4900 4280 PRINT "ILLEGAL SYNTAX IN DATA DESCRIPTION"; 4290 GOTO 4900 4300 PRINT "ILLEGAL NUMERIC CONSTANT"; 4310 GOTO 4900 4320 PRINT "RECORD TOO LONG FOR FILE"; 4330 GOTO 4900 4340 PRINT "ACTUAL KEY '";X$;"' NOT DEFINED"; 4342 GOTO 4900 4350 PRINT "ACTUAL KEY '"X$"' MUST BE COMPUTATIONAL"; 4352 GOTO 4900 4360 PRINT "CAN'T SUBSCRIPT LEVEL 1 OR 77 ITEMS"; 4362 GOTO 4900 4900 PRINT " AT LINE";N;" CHR";A1 4902 LET E8=1 4910 GOTO F7+1 OF 4999,4920,4950,4970 4920 GOSUB 9100 4930 GOTO 4999 4940 IF X$='92 THEN 4999 4950 GOSUB 9100 4952 GOTO 4940 4960 IF X$='92 THEN 4999 4962 IF X$="," THEN 4999 4964 IF X$=";" THEN 4999 4966 IF X$="." THEN 4999 4970 GOSUB 9100 4972 GOTO 4960 4999 RETURN 5000 REM CHECK FOR MATCH 5010 LET S0=S[S,1] 5012 LET S8=1 5020 GOTO INT((S0-1)/10)+1 OF 5030,5040,5050 5030 GOTO S0 OF 5100,5110,5120,5130,5140,5150,5160,5170,5180,5190 5040 GOTO S0-10 OF 5200,5210,5220,5230,5240,5250,5260,5270,5280,5290 5050 GOTO S0-20 OF 5300,5310,5320 5100 IF X$="FILE" THEN 5410 5102 GOTO 5400 5110 IF X$="SECTION" THEN 5410 5112 GOTO 5400 5120 IF X$="." THEN 5410 5122 GOTO 5400 5130 IF X$='92 THEN 5410 5132 GOTO 5400 5140 IF X$="FD" THEN 5410 5142 GOTO 5400 5150 IF X$="BLOCK" THEN 5410 5152 GOTO 5400 5160 IF X$="CONTAINS" THEN 5410 5162 GOTO 5400 5170 LET X=0 5171 FOR X0=1 TO LEN(X$) 5172 FOR X1=1 TO 10 5173 IF X$[X0,X0]=D$[X1,X1] THEN 5176 5174 NEXT X1 5175 GOTO 5400 5176 LET X=X*10+X1-1 5177 NEXT X0 5178 GOTO 5410 5180 IF X$="TO" THEN 5410 5182 GOTO 5400 5190 IF X$="RECORD" THEN 5410 5192 IF X$="RECORDS" THEN 5410 5193 IF X$="MODE" THEN 5410 5194 GOTO 5400 5200 IF X$="CHARACTERS" THEN 5410 5202 GOTO 5400 5210 IF X$="DATA" THEN 5410 5212 GOTO 5400 5220 IF X$="IS" THEN 5410 5222 IF X$="ARE" THEN 5410 5228 GOTO 5400 5230 IF X$="DATA" THEN 5400 5231 IF X$="LABEL" THEN 5400 5232 IF X$="BLOCK" THEN 5400 5233 IF X$="RECORD" THEN 5400 5234 IF X$="RECORDING" THEN 5400 5238 GOTO 5410 5240 IF X$="LABEL" THEN 5410 5241 IF X$="RECORDING" THEN 5410 5242 GOTO 5400 5250 IF X$="STANDARD" THEN 5410 5251 IF X$="F" THEN 5410 5252 GOTO 5400 5260 IF X$="OMITTED" THEN 5410 5262 GOTO 5400 5270 IF X$="," THEN 5410 5272 IF X$=";" THEN 5410 5274 GOTO 5400 5280 IF X$="PROCEDURE" THEN 5410 5282 GOTO 5400 5290 IF X$="DIVISION" THEN 5410 5292 GOTO 5400 5300 IF X$="." THEN 5410 5302 IF X$='92 THEN 5410 5304 GOTO 5400 5310 IF X$="WORKING-STORAGE" THEN 5410 5312 GOTO 5400 5320 IF X$="77" THEN 5410 5321 IF X$="01" THEN 5410 5322 GOTO 5400 5400 LET S8=0 5410 RETURN 6100 REM DATA FOR PICTURE 6110 DATA 2704,9,2704,16,2960,9,343960.,0 6120 DATA 199536.,12,1.04755E+06,13,1.04755E+06,10 6130 DATA 789392.,1,1.01555E+06,2,343296.,14,1.04346E+06,3 6140 DATA 1.01017E+06,4,343320.,14,986000.,5,1.03209E+06,5 6150 DATA 1.01032E+06,7,814064.,7,917496.,8,224144.,0 6160 DATA 524184.,0 7000 REM GENERATORS 7010 LET S0=S[S,2] 7020 GOTO (S0-1)/10+1 OF 7030 7030 GOTO S0 OF 2000,7080,7100,7050,7120,7132 7050 GOSUB 9700 7052 IF I0=0 THEN 7072 7060 GOSUB 9850 7064 LET W1=I0 7065 GOSUB 8250 7066 LET W2=M*3+M0 7067 LET W3=0 7070 RETURN 7072 LET E9=3 7074 GOSUB 4000 7076 RETURN 7080 LET F[3]=X 7090 RETURN 7100 LET F[4]=X 7110 RETURN 7120 LET F[5]=X 7130 RETURN 7132 IF M*3+M0 >= W2+F[5] THEN 7138 7134 LET M=INT((W2+F[5])/3) 7136 LET M0=W2+F[5]-M*3 7138 GOSUB 8250 7140 IF W1=0 THEN 7170 7142 FOR I=0 TO 7 7150 LET Y[W1+I]=F[I+1] 7160 NEXT I 7170 GOSUB 9650 7180 RETURN 7250 LET I0=W1 7270 GOSUB 9850 7280 LET F[5]=F[5] MAX F9 7282 IF F[5] <= 72 THEN 7290 7284 LET E9=12 7286 GOSUB 4000 7288 LET F[5]=72 7290 IF F[7] <> 0 THEN 7310 7300 LET F[7]=W2 7310 LET W3=W3+1 7312 LET Y[Y]=W1 7314 GOSUB 7140 7316 LET W1=Y[Y] 7320 LET Y=Y+1 7340 GOTO 8651 7500 REM SAVE VARIABLE IN CORE ARRAY 7510 LET Y[Y]=I9*100000.+(P3-F7+20)*1000+P3*10+F1*4+F2*2+F6 7520 LET Y[Y+1]=M5*2000+M4 7530 LET Y=Y+2 7540 IF I9 <> 1 THEN 7640 7550 LET Y[Y]=0 7560 FOR M1=1 TO P9 7570 GOSUB 8000 7580 LET Y0=M1-INT((M1-1)/3)*3 7582 LET Y[Y]=Y[Y]+(M2-1)*64^(3-Y0) 7590 IF Y0 <> 3 THEN 7620 7600 LET Y=Y+1 7610 LET Y[Y]=0 7620 NEXT M1 7630 LET Y=Y+1 7640 IF I9 <> 2 THEN 7660 7650 LET Y[Y]=M3 7652 LET Y=Y+1 7660 RETURN 8000 REM M2=CHRVAL(M$(M1)) 8010 LET M2=M3=32 8020 IF M$[M1,M1] <= C$[M2,M2] THEN 8060 8030 LET M3=M3/2 8040 LET M2=M2+M3 8050 GOTO 8020 8060 IF M$[M1,M1]=C$[M2,M2] THEN 8092 8070 LET M3=M3/2 8080 LET M2=M2-M3 8090 GOTO 8020 8092 RETURN 8100 REM M$--> MEMORY 8110 FOR M1=1 TO LEN(M$) 8120 GOSUB 8000 8130 GOTO M0 OF 8140,8170,8200 8140 LET M[M]=M2*4096-4096 8150 LET M0=2 8160 GOTO 8230 8170 LET M[M]=M[M]+M2*64-64 8180 LET M0=3 8190 GOTO 8230 8200 LET M[M]=M[M]+M2-1 8210 LET M=M+1 8220 LET M0=1 8230 NEXT M1 8240 RETURN 8250 REM SYNC MEMORY 8260 IF M0=1 THEN 8290 8270 LET M0=1 8280 LET M=M+1 8290 RETURN 8300 REM GET LENGTH 8302 LET M5=F9 8304 IF F3 <> 1 THEN 8308 8306 GOSUB 8250 8308 LET M4=M*3+M0 8310 IF F4 <> 0 THEN 8620 8320 IF F0=2 THEN 8590 8330 GOSUB 3000 8340 LET M5=F9=P0 8350 IF P1=1 THEN 8520 8360 LET F0=0 8370 IF P1=4 THEN 8440 8380 LET P0=5 8400 LET P3=F7=F9 8402 LET I9=0 8404 LET F6=1 8410 IF N$="FILLER" THEN 8650 8411 PRINT #3;N$,Y, END 8412 IF G0=0 THEN 8418 8414 LET Y[Y]=-(G0*1.E+06+G[1]*10000+G[2]*100+G[3]) 8416 LET Y=Y+1 8418 IF Y>144 THEN 9900 8419 GOSUB 7500 8420 GOTO 8650 8440 LET M$=P$ 8450 LET I9=1 8510 GOTO 8410 8520 LET M8=0 8522 IF F9 <= 6 THEN 8525 8524 LET M8=1 8525 IF F0 <> 0 OR W3>0 THEN 8528 8526 LET M9=M9-1-M8 8528 GOTO F0+1 OF 8532,8550,8820 8532 LET M3=0 8533 GOTO 8535 8534 LET M3=M9 8535 LET I9=2 8536 LET P0=7 8540 GOTO 8410 8550 LET I9=3 8560 LET F9=3+3*M8 8570 LET P0=6 8580 GOTO 8410 8590 LET M9=M9-1 8591 LET P3=F7=M5=6 8592 LET I9=4 8594 LET M4=M9 8600 LET P0=2 8602 LET F9=0 8610 GOTO 8410 8620 LET M4=F4 8621 LET G1=1 8622 FOR G2=1 TO G0 8623 LET G1=G1*G[G2] 8624 NEXT G2 8625 LET P3=F7=M5=F9/G1 8626 LET I9=5 8630 LET P0=3 8640 GOTO 8410 8650 IF W1 <> 0 AND X=1 THEN 7250 8651 IF F4 <> 0 THEN 8690 8652 IF I9=4 THEN 8690 8654 LET G1=1 8655 FOR G2=1 TO G0 8656 LET G1=G1*G[G2] 8657 NEXT G2 8658 LET G2=G1 8660 IF V$ <> "" THEN 8700 8662 LET F9=F9*G1 8670 LET M=M+INT(F9/3) 8680 LET M0=M0+FND(F9) 8682 IF M0 <= 3 THEN 8690 8684 LET M0=M0-3 8686 LET M=M+1 8690 RETURN 8700 IF V$[1,1]="'" THEN 8710 8701 IF V$[1,1]>"A" THEN 8811 8702 IF V$[1,1] <> C$[3,3] THEN 8850 8710 GOTO I9+1 OF 8720,8720,8720,8820,8820 8720 LET M$=V$[2,LEN(V$)-1] 8730 IF LEN(M$) 3 THEN 8940 8936 LET Z9=M 8938 LET M=M+1+M8 8940 IF M8=1 THEN 8954 8950 LET M[Z9]=V5 8952 GOTO 8980 8954 LET M[Z9]=V4 8956 LET M[Z9+1]=V5 8958 GOTO 8980 8960 IF I9 <> 2 THEN 8810 8961 LET M$="" 8962 FOR I=F9 TO 1 STEP -1 8964 IF I>6 THEN 8970 8966 LET I0=FNC(V5/10^(I-1)) 8968 GOTO 8972 8970 LET I0=FNC(V4/10^(I-7)) 8972 LET I1=17+I0+10*V2*F6 8973 LET M$[F9-I+1,F9-I+1]=C$[I1,I1] 8974 LET V2=0 8976 NEXT I 8977 LET G1=G2 8978 GOTO 8730 8980 LET G1=G1-1 8982 IF G1 <= 0 THEN 8960 8983 IF I9=3 THEN 8932 8984 LET M9=M9-1-M8 8986 GOTO 8932 9000 REM READ NEXT LINE 9010 READ #1;N,A$ 9020 LET L8=L8+1 9030 LET A1=1 9040 LET A2=LEN(A$) 9050 LET A3=0 9060 RETURN 9100 REM GET NEXT WORD --> X$ 9102 LET A3=A3+1 9110 IF A$[A1,A1] <> " " THEN 9140 9120 LET A1=A1+1 9130 IF A1 <= A2 THEN 9110 9140 LET A0=A1 9150 IF A1 >= A2 THEN 9240 9160 IF A$[A1,A1]="'" THEN 9270 9161 IF A$[A1,A1]=C$[3,3] THEN 9270 9162 LET A1=A1+1 9164 IF A$[A1,A1] <> " " THEN 9162 9170 LET X$=A$[A0,A1-1] 9180 IF X$ <> "." THEN 9230 9190 IF A1 <> A2 THEN 9230 9200 GOSUB 9000 9210 IF A$[1,3]=" " THEN 9222 9220 LET X$='92 9222 LET A3=-1 9230 REM 9234 RETURN 9240 GOSUB 9000 9250 IF A$[1,3]=" " THEN 9110 9260 GOTO 9220 9270 LET A1=A1+1 9290 IF A1=A2 THEN 9170 9300 IF A$[A1,A1] <> A$[A0,A0] THEN 9270 9310 GOTO 9162 9400 REM SCAN CONSTANT 9402 LET I=1 9410 LET V0=V1=V2=V3=V4=V5=0 9420 IF V$[1,1]="+" THEN 9450 9430 IF V$[1,1] <> "-" THEN 9460 9440 LET V2=1 9450 LET I=2 9460 FOR I0=I TO LEN(V$) 9470 FOR N0=1 TO 10 9480 IF V$[I0,I0]=D$[N0,N0] THEN 9560 9490 NEXT N0 9500 IF V$[I0,I0] <> "." THEN 9530 9510 LET V3=1 9520 GOTO 9610 9530 LET E9=11 9540 GOSUB 4000 9550 RETURN 9560 LET V5=V5*10+N0-1 9570 LET V4=V4*10+INT(V5/1.E+06) 9580 LET V5=FNE(V5) 9590 LET V0=V0+1 9600 LET V1=V1+V3 9610 NEXT I0 9620 RETURN 9650 REM RESET FILES 3,4 9660 IF END #3 THEN 9690 9670 READ #3;M$,I1 9680 GOTO 9670 9690 RETURN 9700 REM FIND X$ AS SYMBOL 9710 READ #3,1 9720 IF END #3 THEN 9760 9730 READ #3;M$,I0 9740 IF M$ <> X$ THEN 9730 9750 RETURN 9760 LET I0=0 9770 RETURN 9850 REM READ DATA-->F 9852 FOR I1=1 TO 10 9860 LET F[I1]=Y[I0+I1-1] 9880 NEXT I1 9890 RETURN 9900 PRINT 9901 PRINT "*DATA DIVISION TOO LARGE" 9902 E8=1 9903 GOTO 510 9999 END