10  COM F$[7],R1,R2,E,T,S,O,P,G$[7]
12  REM
13  REM       FINDIT:  FILE INFORMATION DIALOGUE TECHNIQUE
14  REM       FINDOR:  PART 6 OF 8
15  REM 36250C, 6/74
16  REM
20  DIM A$[72],D$[14],I$[10]
25  D$="0123456789,.+-"
30  FILES *,*
40  GOSUB 1000
50  PRINT 
100  PRINT "SORT ON WHICH FILE";
105  K=1
110  GOSUB 4000
112  IF A1 THEN 100
115  F$=A$
120  ASSIGN F$,1,X
130  IF X<3 THEN 151
140  PRINT "**NO SUCH FILE."
150  GOTO 100
151  READ #1,1
152  A=TYP(-1)
153  GOTO A-1 OF 160,100,100
154  READ #1;R2,R0,E1,E3,E3
155  IF E3=1 THEN 160
156  PRINT "**AN ORDER FILE MAY NOT BE USED AS A SORT FILE - SEE MANUAL."
157  GOTO 50
160  PRINT "PRINT TO WHICH FILE";
161  K=1
162  GOSUB 4000
164  GOTO A1 OF 100,160
170  G$=A$
172  IF G$=F$ THEN 160
180  ASSIGN G$,2,X
190  IF  NOT X THEN 220
200  PRINT "**NO SUCH FILE."
210  GOTO 160
220  READ #2,1
222  IF TYP(-2)=3 THEN 228
223  PRINT 
224  PRINT '7'7"WARNING ONLY - CONTENTS OF '"G$"' WILL BE LOST."
226  PRINT 
228  IF A=1 THEN 248
242  F1=1
243  GOSUB 2000
244  L1=R2=I3-1
246  GOTO 250
248  R2=R2-1
250  X=0
260  L1=INT((R2-10)/128)+1
300  F1=2
310  GOSUB 2000
410  IF I3-1 >= L1 THEN 440
420  PRINT "FILE '"G$"' IS TOO SMALL - REOPEN TO"L1"RECORDS."
430  STOP 
440  PRINT "SORT WHICH ITEM NUMBER";
445  K=0
450  GOSUB 4000
451  GOTO A1 OF 160,440
452  E=D
454  IF A=1 THEN 460
455  K=1
456  READ #1,K
458  GOTO 500
460  IF E>0 AND E <= E1 THEN 490
470  PRINT "**BAD ELEMENT NUMBER."
480  GOTO 440
490  READ #1,R0;F,Z
500  FOR I=1 TO E
505  IF TYP(-1)>2 THEN 470
510  READ #1;A$
520  NEXT I
530  E2=2
540  IF A$#"-" THEN 550
542  K=K+1
544  IF K>10 THEN 1340
546  R0=F
548  GOTO A OF 490,456
550  IF A$[1,1]>"9" THEN 1340
552  IF A$[1,1]#"$" THEN 560
554  A$=A$[2]
560  FOR I=1 TO LEN(A$)
570  FOR J=1 TO 14
580  IF A$[I,I]=D$[J,J] THEN 620
590  NEXT J
600  E2=2
610  GOTO 1340
620  NEXT I
630  E2=1
650  GOTO 1340
700  I$=""
710  J=I/10
720  I=INT(J)
730  J=10*(J-I)
740  I$[1,1]=D$[J+1,J+1]
750  I$[2]=I$
760  IF I THEN 710
770  I$=I$[2]
780  L=LEN(I$)
790  RETURN 
1000  J4=TIM(2)
1010  J6=0
1020  RESTORE 1030
1030  DATA 31,59,90,120,151,181,212,243,273,304,334,365
1040  IF INT(TIM(3)/4)*4#TIM(3) OR J4 <= 59 THEN 1060
1050  J4=J4-1
1060  FOR J5=1 TO 12
1070  READ K1
1080  IF J4 <= K1 THEN 1110
1090  J6=K1
1100  NEXT J5
1110  I=J4-J6
1120  GOSUB 700
1130  PRINT I$;
1140  RESTORE 1150
1150  DATA "JAN.","FEB.","MAR.","APR.","MAY","JUN.","JUL.","AUG."
1160  DATA "SEP.","OCT.","NOV.","DEC."
1170  FOR I=1 TO J5
1180  READ A$
1190  NEXT I
1200  PRINT " "A$;
1210  I=TIM(3)
1220  GOSUB 700
1230  PRINT " 19"I$
1240  I=TIM(1)
1250  IF I>11 THEN 1280
1260  J5=1
1270  GOTO 1290
1280  J5=2
1290  IF I#0 THEN 1320
1300  I=12
1310  GOTO 1335
1320  IF I<13 THEN 1335
1330  I=I-12
1335  RETURN 
1340  S=1
1360  P=2
1365  T=E2
1370  IF A=2 THEN 1410
1380  O=2
1390  R1=10
1400  CHAIN "FIND1",10
1410  R1=F1=1
1430  GOSUB 2000
1440  R2=I3-1
1570  O=4
1600  GOTO 1400
2000  IF  END #F1 THEN 2070
2010  I1=1
2020  I2=32768.
2030  I3=INT((I1+I2)/2)
2040  READ #F1,I3
2050  I1=I3
2060  GOTO 2080
2070  I2=I3
2080  IF I2-I1>1 THEN 2030
2090  RETURN 
4000  PRINT "? ";
4005  ENTER 255,X1,A$
4010  PRINT 
4015  A1=0
4040  IF A$#"" THEN 4070
4050  A1=2
4060  RETURN 
4070  IF A$[1,4]#"//ER" THEN 4100
4080  A1=1
4090  RETURN 
4100  IF A$[1,4]="//ST" THEN 9999
4110  IF K THEN 4060
4120  D=0
4130  FOR I=1 TO LEN(A$)
4140  FOR J=1 TO 10
4150  IF A$[I,I]<"0" THEN 4210
4160  IF A$[I,I]#D$[J,J] THEN 4180
4170  D=10*D+J-1
4180  NEXT J
4190  NEXT I
4200  RETURN 
4210  PRINT "**USE AN INTEGER."
4220  GOTO 4050
9999  END 
