200 ! DIREX -- PRINTS DIRECTORY OF FILE STORED ON DISK ! THIS IS A FAST RANDOM-ACCESS PROGRAM 210 ! FOR COMPLETE DIRECTORY OUTPUT TO LP: OR DTN:FILE 220 ! REVISED TO REPLACE LOOKUP SUBROUTINE ! 30-JUL-73 J. WARDEN WABASH COLLEGE 230 PRINT"FILE DIRECTORY (FROM DISK)" 240 DIM A$(85%),B$(85%) 250 S5$="\ \ \ \" : S5$=S5$+" "+S5$ 260 S9$="" 270 M2$="NM" 280 INPUT" PRINT 'NM' FIELD (Y/N)";Y$ 290 IF Y$<>"N" THEN N5%=1% : GO TO 300 300 Y%=55% : Y2%=2%*Y% ! LENGTH OF DIRECTORY PAGE 310 GOSUB 4000 320 IF N5%=1% THEN 350 330 INPUT" WHICH FIELD TO PRINT";M2$ 340 M2$=LEFT(M2$,2%) 350 FOR Z%=1% TO V2%(1,0) 360 IF V2$(Z%)=M2$ THEN 390 370 NEXT Z% 380 GO TO 9999 390 INPUT"OUTPUT TO ([R] FOR KB:)";O$ 400 IF LEN(O$)<1% THEN O$="KB:" 410 S6$=SPACE$(6%) 420 V1%=V2%(1%,Z%) : V2%=V2%(2%,Z%) 430 IF V2%>28% THEN V2%=28% ELSE S9$=SPACE$(28%-V2%) 440 PRINT"FILE NAME"; : INPUT LINE F1$ : F1$=LEFT(F1$,LEN(F1$)-2%) 450 OPEN F1$ FOR INPUT AS FILE 1% 460 OPEN F1$ FOR INPUT AS FILE 3% 470 OPEN O$ FOR OUTPUT AS FILE 2% 480 FIELD #1,N1%*R% AS Z$,N1% AS A$(R%) FOR R%=0% TO N6% 490 FIELD #3%,N1%*S% AS Z$,N1% AS B$(S%) FOR S%=0% TO N6% 500 T%=INSTR(1%,F1$,":") : IF T%=0% THEN 520 510 F1$=RIGHT(F1$,T%+1%) 520 GOSUB 840 : GO TO 570 530 IF ERR<>11% THEN ON ERROR GO TO 0 540 Q%=Q%+1% : IF Q%<=1% THEN RESUME 700 550 PRINT"** END-OF-FILE MARKS LEFT OFF FILE **" 560 GO TO 810 570 ON ERROR GO TO 530 580 P%=1% ! PAGE MARKER 590 PRINT #2,"DIRECTORY OF FILE "+F$+S6$+DATE$(0)+S6$+"PAGE";P% 600 PRINT #2:PRINT #2 610 FOR I%=1% TO Y% 620 J%=I%+(P%-1%)*Y2% : J2%=J%+Y% 630 R1%=(J%+N6%)/N% : R2%=(J2%+N6%)/N% 640 GET #1%,RECORD R1% : GET #3%,RECORD R2% 650 R%=J%-1%-(R1%-1%)*N% : S%=J2%-1%-(R2%-1%)*N% 660 IF LEFT(B$(S%),1%)="\" THEN 700 670 PRINT #2%,USING S5$,LEFT(A$(R%),6%),MID(A$(R%),V1%,V2%), LEFT(B$(S%),6%),MID(B$(S%),V1%,V2%) 680 NEXT I% 690 P%=P%+1% : PRINT #2%,CHR$(12%) : GO TO 590 700 ! FINISH LAST PAGE 710 R%=J%-1%-(R1%-1%)*N% 720 PRINT #2%,USING S5$,LEFT(A$(R%),6%),MID(A$(R%),V1%,V2%) 730 I1%=I%+1% 740 FOR I%=I1% TO Y% 750 J%=I%+(P%-1%)*Y2% : R1%=(J%+N6%)/N% 760 GET #1%,RECORD R1% 770 R%=J%-1%-(R1%-1%)*N% 780 IF LEFT(A$(R%),1%)="\" THEN 810 790 PRINT #2%,USING S5$,LEFT(A$(R%),6%),MID(A$(R%),V1%,V2%) 800 NEXT I% 810 PRINT #2%,CHR$(26%) 820 CLOSE 1%,2%,3% 830 GO TO 9999 840 ! HEADER SUBROUTINE 850 G%=15% 860 G$=SPACE$(G%) 870 PRINT #2%,CHR$(10%)+CHR$(10%) 880 PRINT #2%,G$; : PRINT#2%,"====="; FOR I%=1% TO 10% : PRINT #2% 890 G9$=" " : GOSUB 1060 : GOSUB 1060 900 G9$=" DIRECTORY" : GOSUB 1060 910 G9$=" " : GOSUB 1060 915 G9$="FILE: "+F1$ : GOSUB 1060 920 G9$="TYPE: "+F$ : GOSUB 1060 930 G9$="DSCN: "+V2$(0%) : GOSUB 1060 940 G9$="R/BL:"+NUM$(N%) : GOSUB 1060 950 G9$="DATE: "+DATE$(0%) : GOSUB 1060 960 G9$=" " : GOSUB 1060 : GOSUB 1060 970 PRINT #2,G$;:PRINT#2,"="; FOR I=1 TO 50 980 PRINT#2,CHR$(12%) 990 RETURN 1000 PRINT"SKIP PAST ID#"; : INPUT LINE G1$ 1010 G1$=LEFT(G1$,LEN(G1$)-2%) 1020 IF LEN(G1$)<>6% THEN RETURN 1030 IF R%F$ THEN 4080 4140 V2%(2%,0%),N%=VAL(MID(A$(A%),4%,2%)) : N9%=VAL(MID(A$(A%),6%,1%))*2% 4160 N1%=510%/N% : N2%=N1%-8% : N3%=N%*N1% : N6%=N%-1% 4170 V2$(0%)=MID(A$(A%),11%,30%) 4180 FOR V%=1% TO 50% 4200 V2$(V%)=MID(A$(A%),42%+(V%-1%)*4%,2%) : IF V2$(V%)=" " THEN 4280 4220 V5%=CVT$%(MID(A$(A%),44%+(V%-1%)*4%,2%)) 4240 V2%(1%,V%)=ASCII(CHR$(V5%)) : V2%(2%,V%)=ASCII(CHR$(SWAP%(V5%))) 4260 NEXT V% 4280 V2%(1%,0%)=V%-1% : IF N5% THEN 4300 ELSE PRINT"CODES: "; : PRINT V2$(I%)+" "; FOR I%=1% TO V%-1% : PRINT 4300 CLOSE 1% : ON ERROR GO TO 0 : RETURN 4320 IF ERR<>5% AND ERR<>21% THEN 4380 ELSE RESUME 4340 4340 READ V1$ : GO TO 4040 4360 DATA DK2:,DK1:,DK0:,DK3: 4380 PRINT"THE FILE '$ATRIB' HAS BEEN DELETED;" : PRINT"IT MUST BE REPLACED TO PROCEED." 9999 END