1 COM F$[7],R1,R2,E,T,S,O,P,G$[7],N7,A[10],B[10] 3 REM 4 REM FINDIT: FILE INFORMATION DIALOGUE TECHNIQUE 5 REM IRV1: PART 8 OF 8 6 REM 36250C, 6/74 7 REM 10 PRINT "PLEASE GET AND RUN YOUR ORIGINAL PROGRAM." 20 STOP 30 FILES *,*,* 40 DIM A$[72],B$[72],C$[72],D$[72],E$[1],H$[64],I$[64],J$[1],X$[72],Y$[72] 50 X$="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 60 Y$="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 70 DIM I[550],P[550],L[550],R[550],K[550] 80 N5=550 90 ASSIGN "$CHARS",3,A 100 IF A=3 THEN 130 110 READ #3;H$,I$ 120 GOTO 150 130 H$=" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ["'92 140 I$="abcdefghijklmnopqrstuvwxyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" 150 ASSIGN F$,1,A 160 GOTO P OF 190,170 170 ASSIGN G$,2,A 180 IF END #2 THEN 1320 190 S1=1 200 S2=0 210 S3=2*T+S-2 215 N8=0 220 S4=TIM(0) 225 N8=0 230 MAT I=ZER 240 MAT P=ZER 250 MAT L=ZER 260 MAT R=ZER 270 MAT K=ZER 280 N=0 290 FOR R=R1 TO R2 300 IF S4=TIM(0) THEN 330 310 S4=TIM(0) 320 PRINT '7'7; 330 A1=A2=0 340 READ #1,R 350 GOSUB 6000 360 A2=1 370 IF A1 THEN 1000 380 IF S1 THEN 540 390 GOTO S3 OF 400,430,460,500 400 IF X1X THEN 540 440 IF X1=X AND X2A$ THEN 1000 480 IF X2A$ THEN 540 510 IF D$M THEN 870 780 GOTO S OF 940,870 790 IF M=0 OR I[J]=0 THEN 820 800 IF I[J]M THEN 870 820 READ #1,K[J] 830 GOSUB 6000 840 IF A$B$ THEN 870 860 GOTO S OF 940,870 870 IF L[J]=0 THEN 900 880 J=L[J] 890 GOTO T OF 760,790 900 L[J]=N6 910 P[N6]=J 920 K[N6]=R 930 GOTO 1000 940 IF R[J]=0 THEN 970 950 J=R[J] 960 GOTO T OF 760,790 970 R[J]=N6 980 P[N6]=J 990 K[N6]=R 1000 NEXT R 1010 IF N#N5 THEN 1040 1020 GOSUB 4000 1030 S2=S2-1 1040 GOTO P OF 1050,1140 1050 IF NOT S1 THEN 1140 1060 PRINT LIN(2);"FILENAME: "F$" RECORDS"R1"THROUGH"R2 1070 PRINT LIN(2) 1080 GOTO O OF 1090,1110,1130,1140,1140 1090 PRINT "ITEM"LIN(2) 1100 GOTO 1140 1110 PRINT "RECORD"LIN(2) 1120 GOTO 1140 1130 PRINT "RECORD ITEM"LIN(2) 1140 IF K[1]=0 THEN 1170 1150 K=1 1160 GOTO 1180 1170 K=2 1180 IF P[K]=0 THEN 1210 1190 K=P[K] 1200 GOTO 1180 1210 GOTO S OF 1220,1380 1220 IF L[K]=0 THEN 1250 1230 K=L[K] 1240 GOTO 1220 1250 GOSUB 8000 1260 K2=K 1270 IF R[K]=0 THEN 1300 1280 K=R[K] 1290 GOTO 1220 1300 IF P[K]#0 THEN 1340 1310 GOTO 1470 1320 PRINT "NO ROOM LEFT IN FILE "G$". OUTPUT NOT COMPLETED." 1330 STOP 1340 J=K 1350 K=P[K] 1360 IF R[K]=J THEN 1300 1370 GOTO 1250 1380 IF R[K]=0 THEN 1410 1390 K=R[K] 1400 GOTO 1380 1410 GOSUB 8000 1420 K2=K 1430 IF L[K]=0 THEN 1460 1440 K=L[K] 1450 GOTO 1380 1460 IF P[K]#0 THEN 1620 1470 IF S2=R2-R1+1 THEN 1580 1480 S1=0 1490 GOTO T OF 1500,1530 1500 X1=I[K2] 1510 X2=K[K2] 1520 GOTO 230 1530 READ #1,K[K2] 1540 GOSUB 6000 1550 D$=A$ 1560 X2=K[K2] 1570 GOTO 230 1580 IF P=1 OR O=4 THEN 1600 1590 PRINT #2; END 1600 PRINT LIN(3)"SORT COMPLETED." 1610 STOP 1620 J=K 1630 K=P[K] 1640 IF L[K]=J THEN 1460 1650 GOTO 1410 4000 N6=1 4010 IF P[N6]=0 THEN 4040 4020 N6=P[N6] 4030 GOTO 4010 4040 GOTO S OF 4050,4140 4050 IF R[N6]=0 THEN 4080 4060 N6=R[N6] 4070 GOTO 4050 4080 IF P[N6]=0 THEN 4100 4090 R[P[N6]]=L[N6] 4100 IF L[N6]=0 THEN 4120 4110 P[L[N6]]=P[N6] 4120 GOTO 4210 4130 RETURN 4140 IF L[N6]=0 THEN 4170 4150 N6=L[N6] 4160 GOTO 4140 4170 IF P[N6]=0 THEN 4190 4180 L[P[N6]]=R[N6] 4190 IF R[N6]=0 THEN 4210 4200 P[R[N6]]=P[N6] 4210 P[N6]=L[N6]=R[N6]=I[N6]=K[N6]=0 4220 RETURN 6000 IF TYP(-1)=3 THEN 6190 6010 FOR E1=1 TO E 6020 GOTO TYP(-1) OF 6030,6060,6090,6090 6030 READ #1;X 6040 T1=1 6050 GOTO 6110 6060 READ #1;A$ 6070 T1=2 6080 GOTO 6110 6090 PRINT "THERE ARE ONLY"E1-1"ELEMENTS IN RECORD"R"." 6100 STOP 6110 NEXT E1 6120 IF T=T1 THEN 6230 6130 PRINT "ELEMENT NUMBER"E"OF RECORD"R"IS NOT A "; 6140 GOTO T OF 6150,6170 6150 PRINT "NUMBER." 6160 STOP 6170 PRINT "STRING." 6180 STOP 6190 IF A2 THEN 6230 6200 A1=1 6210 IF S1=0 THEN 6230 6220 S2=S2+1 6230 RETURN 7000 E$=A$[1,1] 7010 GOSUB 7130 7020 IF M1#0 THEN 7050 7030 M=0 7040 RETURN 7050 M=M1 7060 E$=A$[2,2] 7070 GOSUB 7130 7080 IF M1#0 THEN 7110 7090 M=0 7100 RETURN 7110 M=M*1000+M1 7120 RETURN 7130 N1=1 7140 N2=129 7150 FOR M2=1 TO 8 7160 M1=INT((N1+N2)/2) 7170 IF M1>64 THEN 7200 7180 J$=H$[M1,M1] 7190 GOTO 7210 7200 J$=I$[M1-64,M1-64] 7210 IF E$J$ THEN 7260 7230 RETURN 7240 N2=M1 7250 GOTO 7270 7260 N1=M1 7270 NEXT M2 7280 M1=0 7290 RETURN 8000 GOTO P*10+O*2+T-12 OF 8020,8060,8100,8100,8120,8160,8200,8200,8340,8340 8010 GOTO P*10+O*2+T-22 OF 8500,8540,8580,8580,8600,8640,8680,8680,8340,8340 8020 READ #1,K[K] 8030 GOSUB 6000 8040 PRINT X 8050 RETURN 8060 READ #1,K[K] 8070 GOSUB 6000 8080 PRINT A$ 8090 RETURN 8100 PRINT K[K] 8110 RETURN 8120 READ #1,K[K] 8130 GOSUB 6000 8140 PRINT K[K];X 8150 RETURN 8160 READ #1,K[K] 8170 GOSUB 6000 8180 PRINT K[K];A$ 8190 RETURN 8200 PRINT 8210 PRINT "RECORD"K[K] 8220 READ #1,K[K] 8230 GOTO TYP(-1) OF 8240,8270,8300,8320 8240 READ #1;X 8250 PRINT X 8260 GOTO 8230 8270 READ #1;A$ 8280 PRINT A$ 8290 GOTO 8230 8300 PRINT "E O F" 8310 RETURN 8320 PRINT "E O R" 8330 RETURN 8340 FOR I=1 TO N7 8350 READ #1,K[K] 8360 E=A[I] 8370 GOSUB 6000 8380 C$="#," 8390 IF I#1 OR B[1]=1 THEN 8410 8400 C$[LEN(C$)+1]=Y$[1,B[1]-1] 8410 IF I=N7 THEN 8450 8420 C$[LEN(C$)+1]=X$[1,B[I+1]-B[I]-1] 8430 C$[LEN(C$)+1]="X" 8440 GOTO 8460 8450 C$[LEN(C$)+1]=X$[1,LEN(A$)] 8460 PRINT USING C$;A$ 8470 NEXT I 8480 PRINT 8490 RETURN 8500 READ #1,K[K] 8510 GOSUB 6000 8520 PRINT #2;X 8530 RETURN 8540 READ #1,K[K] 8550 GOSUB 6000 8560 PRINT #2;A$ 8570 RETURN 8580 PRINT #2;K[K] 8590 RETURN 8600 READ #1,K[K] 8610 GOSUB 6000 8620 PRINT #2;K[K],X 8630 RETURN 8640 READ #1,K[K] 8650 GOSUB 6000 8660 PRINT #2;K[K],A$ 8670 RETURN 8680 READ #1,K[K] 8690 N8=N8+1 8700 PRINT #2,N8 8710 GOTO TYP(-1) OF 8720,8750,8780,8790 8720 READ #1;X 8730 PRINT #2;X 8740 GOTO 8710 8750 READ #1;A$ 8760 PRINT #2;A$ 8770 GOTO 8710 8780 PRINT #2; END 8790 RETURN 9999 END