1000 ! OUTPUT -- ALLOWS COMPOSITION OF OUTPUT FROM ! ANY STANDARD FILE TYPE ON THE SYSTEM. 1020 ! 14-FEB-74 J.WARDEN WABASH COLLEGE 1030 ! REVISED BY C. CHELL 1040 PRINT"OUTPUT V02C" 1060 DEF FNN$(X%)="/"+MID(NUM$(X%),2%,LEN(NUM$(X%))-2%)+"/" 1070 DEF FNM$(M$,M%)=LEFT(M$+SPACE$(M%),M%) 1080 DEF FNS$(X%)=MID(NUM$(X%),2%,LEN(NUM$(X%))-2%) 1100 OPEN "KB:" FOR INPUT AS FILE 9% 1120 DIM A$(85%),T$(80%) 1140 GOSUB 3200 1160 PRINT 1180 ON ERROR GO TO 1280 1200 PRINT"FILE TO BE LISTED"; : INPUT LINE F1$ : F1$=LEFT(F1$,LEN(F1$)-2%) 1220 OPEN F1$ FOR INPUT AS FILE 1% 1240 FIELD #1%,N1%*R% AS Z$, N1% AS A$(R%) FOR R%=0% TO N6% 1260 GO TO 1380 1280 IF ERR<>52% THEN 1320 1300 IF ERL=1980% OR ERL=2120% OR ERL=2140% THEN RESUME 2020 1320 IF ERR<>5% THEN ON ERROR GO TO 0% 1340 PRINT CHR$(7%)+"** "; 1360 PRINT"CAN'T FIND FILE ";F1$ : RESUME 1200 1380 INPUT"OUTPUT TO (DEV:FILE)";F2$ 1400 OPEN F2$ FOR OUTPUT AS FILE 2% 1420 DIM V$(5%,10%),N%(5%,10%) 1440 DIM S%(5%,10%),F%(5%,10%),L%(5%,10) 1460 ! # SPACES START POS. LENGTHS OF FIELDS 1480 ! 5 LINES BY 10 POSSIBLE POSITIONS 1500 PRINT 1520 PRINT"HEADER LINE"; : INPUT LINE H$ : H$=LEFT(H$,LEN(H$)-2%) 1540 L%=1% 1560 PRINT"LINE";L%;">"; 1580 INPUT LINE #9%,C$ 1600 C%=ASCII(C$) : IF C%=13% OR C%=10% THEN 2220 1620 C%=ASCII(RIGHT(C$,LEN(C$))) : IF C%=13% OR C%=10% THEN C$=LEFT(C$,LEN(C$)-1%) : GO TO 1620 1640 C$=C$+"+" 1660 P%,D0%=1% 1680 D%=INSTR(D0%,C$,"+") : IF D%=0% THEN 1720 1700 T$(P%)=MID(C$,D0%,D%-D0%) : P%=P%+1% : D0%=D%+1% : GO TO 1680 1720 P%=P%-1% 1740 Q%=1% 1760 FOR I%=1% TO P% 1780 IF ASCII(T$(I%))=47% THEN 1960 ELSE IF ASCII(T$(I%))=40% THEN 2040 ELSE IF ASCII(T$(I%))=34% THEN 2025 1800 IF LEN(T$(I%))<>2% THEN PRINT"** ERROR IN LINE";L%;"**" : GO TO 1560 1820 FOR V%=1% TO V2%(1%,0%) 1840 IF T$(I%)<>V2$(V%) THEN 1860 ELSE IF MID(T$(I%),2%,1%)= "#" THEN N%(L%,Q%)=1% : GOTO 1920 1850 IF MID(T$(I%),2%,1%)<>"%" THEN 1900 ELSE N%(L%,Q%)=2% : GOTO 1920 1860 NEXT V% 1880 PRINT"** NO SUCH MNEMONIC: ";T$(I%) : GO TO 1560 1900 ! STORE ATTRIBUTES 1920 V$(L%,Q%)=V2$(V%) : F%(L%,Q%)=V2%(1%,V%) : L%(L%,Q%)=V2%(2%,V%) 1940 GO TO 2160 1960 S%=INSTR(2%,T$(I%),"/") : IF S%=0% THEN PRINT"** ERROR IN LINE"L%;"**" : GO TO 1560 1980 S%(L%,Q%)=VAL(MID(T$(I%),2%,S%-2%)) 2000 GO TO 2180 2020 PRINT"<< ERROR IN LINE";L%;">>" : GO TO 1560 2025 C$(L%,Q%)=MID(T$(I%),2%,LEN(T$(I%))-2%) : V$(L%,Q%)=T$(I%) : GOTO 2160 2040 D%=INSTR(2%,T$(I%),")") : IF D%=0% THEN PRINT"<< ERROR IN LINE;"L%;">>" : GO TO 1560 2060 V$(L%,Q%)=T$(I%) 2080 T$(I%)=MID(T$(I%),2%,LEN(T$(I%))-2%) 2100 D%=INSTR(1%,T$(I%),",") : IF D%=0% THEN 2020 2120 F%(L%,Q%)=VAL(LEFT(T$(I%),D%-1%)) 2140 L%(L%,Q%)=VAL(RIGHT(T$(I%),D%+1%)) 2160 Q%=Q%+1% 2180 NEXT I% 2200 S%(L%,0%)=Q%-1% : L%=L%+1% : GO TO 1560 2220 INPUT"NUMBER OF LINES BETWEEN ENTRIES";L2% 2240 IF L0% THEN I%=L0%-1% ELSE I%=L%-1% 2260 L0%=I%+1% 2280 L$=L$+CHR$(10%) FOR L1%=2% TO L2% 2300 L3%=I%+L2% ! # LINES/ENTRY 2320 P%=55%/L3% ! ENTRIES/PAGE 2340 INPUT"LABELS OR PAGES (L/P)";P$ 2360 PRINT 2380 GOSUB 2460 2400 IF ASCII(Y$)<>78% THEN 2680 2420 INPUT"LINE ## TO CORRECT";L% : IF L%>0% AND L%<8% THEN 1560 ELSE PRINT"1 TO 7 ONLY!" : GO TO 2420 2440 GO TO 2680 2460 ! DESCRIBE FORMAT BEFORE PRINTING 2480 PRINT"YOU HAVE REQUESTED FORMAT:" : PRINT 2500 FOR H%=1% TO I% 2520 PRINT"LINE";H%;"> "; 2540 FOR J%=1% TO S%(H%,0%) 2560 PRINT FNN$(S%(H%,J%))+" "+V$(H%,J%)+" "; 2580 NEXT J% 2600 PRINT : NEXT H% 2620 PRINT"LINE";H%;"> - - BLANK - -" FOR H%=I%+1% TO L2%+I% 2640 PRINT : INPUT"CORRECT (Y/N)";Y$ 2660 RETURN 2680 ! OUTPUT PHASE 2700 IF P$<>"L" THEN GOSUB 3100 2720 P2%=1% 2740 IF R% THEN 2740 2820 FOR H%=1% TO I% 2840 FOR J%=1% TO S%(H%,0%) 2845 PRINT #2%,SPACE$(S%(H%,J%)); IF N%(H%,J%) 2850 IF N%(H%,J%)=1% THEN PRINT #2%, FNM$(NUM$(CVT$F(MID(A$(R%),F%(H%,J%),L%(H%,J%)))),11%); : GO TO 2880 2855 IF N%(H%,J%)=2% THEN PRINT #2%, FNM$(NUM$(CVT$%(MID(A$(R%),F%(H%,J%),L%(H%,J%)))),7%); : GO TO 2880 2860 PRINT#2%,SPACE$(S%(H%,J%))+MID(A$(R%),F%(H%,J%),L%(H%,J%))+ C$(H%,J%); 2880 NEXT J% 2900 PRINT #2% 2920 NEXT H% 2940 IF L2%>0% THEN PRINT #2%,L$ 2960 IF P$="L" THEN 2740 2980 P2%=P2%+1% : IF P2%>P% THEN GOSUB 3040 3000 GO TO 2740 3020 PRINT #2%, CHR$(26%) : CLOSE 1%,2% : GO TO 3620 3040 ! HEADER SUBROUTINE 3060 P2%=1% 3080 PRINT #2%,CHR$(12%) 3100 PRINT#2% 3120 PRINT #2%,H$ : PRINT#2%,DATE$(0) 3140 IF L2%>0% THEN PRINT #2%,L$ 3160 RETURN 3180 GO TO 3620 3200 DIM V2$(50),V2%(2,50) 3220 ON ERROR GO TO 3540 3240 INPUT"FILE TYPE";F$ : F$=LEFT(F$,3%) 3260 OPEN V1$+"$ATRIB" FOR INPUT AS FILE 1% 3280 FIELD #1%, 255%*A% AS Z$, 255% AS A$(A%) FOR A%=0% TO 1% 3300 IF A%<1% THEN A%=A%+1% ELSE A%=0% : GET #1% : R%=R%+1% 3320 IF LEFT(A$(A%),3%)="\\\" THEN PRINT"NO SUCH FILE TYPE" : GO TO 3620 3340 IF LEFT(A$(A%),3%)<>F$ THEN 3300 3360 V2%(2%,0%),N%=VAL(MID(A$(A%),4%,2%)) : N9%=VAL(MID(A$(A%),6%,1%))*2% 3380 N1%=510%/N% : N2%=N1%-8% : N3%=N%*N1% : N6%=N%-1% 3400 FOR V%=1% TO 50% 3420 V2$(V%)=MID(A$(A%),42%+(V%-1%)*4%,2%) : IF V2$(V%)=" " THEN 3500 3440 V5%=CVT$%(MID(A$(A%),44%+(V%-1%)*4%,2%)) 3460 V2%(1%,V%)=ASCII(CHR$(V5%)) : V2%(2%,V%)=ASCII(CHR$(SWAP%(V5%))) 3480 NEXT V% 3500 V2%(1%,0%)=V%-1% : IF N5% THEN 3520 ELSE PRINT"CODES: "; : PRINT V2$(I%)+" "; FOR I%=1% TO V%-1% : PRINT 3520 CLOSE 1% : ON ERROR GO TO 0 : RETURN 3540 IF ERR<>5% AND ERR<>21% THEN 3600 ELSE RESUME 3560 3560 IF V1$="" THEN V1$="DK1:" : GO TO 3260 3600 PRINT"THE FILE '$ATRIB' HAS BEEN DELETED;" : PRINT"IT MUST BE REPLACED TO PROCEED." 3620 END