10 DIM M%(30%),N%(30%),M0%(30%) \ ON ERROR GOTO 8000 20 PRINT "TRANSFER PROGRAM COPIER "; 30 PRINT "V6-03" 40 PRINT "FROM DEVICE"; \ INPUT LINE D1$ \ PRINT "TO DEVICE"; \ INPUT LINE D2$ 45 CLOSE 4% 50 INPUT "FROM P,PN"; P1%,P2% \ INPUT "TO P,PN"; P3%,P4% 60 PRINT "SELECT BY FILE"; \ INPUT A$ \ IF LEFT(A$,1%) = "Y" THEN INPUT "FILE SPECS"; F1$ ELSE F1$ = "??????.???" 70 PRINT "OPTIONS"; \ INPUT LINE O$ \ O$ = CVT$$(O$,-1%) 80 ! ! CHECK ALL INPUT FOR VALIDITY ! 100 D1$ = CVT$$(D1$,-1%) \ D2$ = CVT$$(D2$,-1%) 110 CHANGE SYS(CHR$(6%) + CHR$(-10%) + D1$) TO M% \ IF (M%(29%) + SWAP%(M%(30))) AND 8192% <> 0% THEN 120 ELSE PRINT "INVALID FROM DEVICE" \ GOTO 40 120 CHANGE SYS(CHR$(6%) + CHR$(-10%) + D2$) TO M% \ IF (M%(29%) + SWAP%(M%(30%))) AND 8192% <> 0% THEN 130 ELSE PRINT "INVALID FROM DEVICE" \ GOTO 40 125 IF LEN(F1$) <> 10% THEN PRINT "INVALID FILE SPECS " \ GOTO 40 127 ! ! TRANSFER IF CREATED AFTER DATE ! 130 I% = INSTR(1%,O$,"/C:") 140 IF I% = 0% THEN D8% = 0% \ GOTO 170 145 ! ! GET DATE TO X$ ! 150 X$ = MID(O$,I%+3%,9%) 160 GOSUB 4000 \ D8% = D% \ IF D% = 0% THEN PRINT "CREATION ERROR" \ GOTO 40 165 ! ! TRANSFER IF ACCESSED AFTER DATE ! 170 I% = INSTR(1%,O$,"/A:") 180 IF I% = 0% THEN D9% = 0% \ GOTO 210 190 X$ = MID(O$,1%+3%,9%) 200 GOSUB 4000 \ D9% = D% \ IF D% = 0% THEN PRINT "ACCESS ERROR" \ GOTO 40 205 ! ! L2% > 0 ID SUPERCEDE IS REQ ! 210 L2% = INSTR(1%,O$,"/SUP") 215 ! ! L3% > 0 TO DETACH ! 220 L3% = INSTR(1%,O$,"/D") 225 ! ! L4% > 0 TO INSPECT BEFORE COPY ! 230 L4% = INSTR(1%,O$,"/IN") 234 ! ! SPECIAL INPUT AND OUTPUT SWITCHES ! 235 L6% = INSTR(1%,O$,"/S:IN") 236 L7% = INSTR(1%,O$,"/S:OUT") 240 PRINT "LISTING DEVICE"; \ INPUT LINE F2$ \ F2$ = CVT$$(F2$,-1%) 243 ! ! PRINT OUT THE INPUT SPECS ! 245 GOTO 15000 250 PRINT "BACKING UP "; D1$ ; " TO ";D2$ 270 OPEN F2$ AS FILE 1% 275 ! ! PRINT HEADER MESSAGE ! 280 M$ = CHR$(12%) + " BACKUP OF " + D1$ + " TO " + D2$ + " ON " + DATE$(0%) + " AT " + TIME$(0%) \ GOSUB 12000 300 ! ! ALL INPUT HAS BEEN DONE ! CHECK FOR WHICH TYPE OF TRANSFER IS REQUIRED ! 310 IF LEFT(D1$,2%) = "MT" THEN D0% = 1% ELSE D0% = 0% 315 ! ! GO TO THE EOF MARK ! AND OR ASK FOR NEW ! TAPE TO BE MOUNTED ! 320 IF LEFT(D2$,2%) = "MT" THEN GOSUB 23000 324 ! ! DETACH & NOTIFY OPERATOR ! 325 IF L3% > 0% THEN PRINT "DETACHNG..." \ PRINT CHR$(12%) \ V$ = SYS(CHR$(6%) + CHR$(7%)) 330 IF D0% = 1% THEN GOTO 5000 340 ! ! TRANSFER MAY BEGIN FROM A DIRECTORY ! STRUCTERED DEVICE (DISK) ! 350 CHANGE SYS(CHR$(6%) + CHR$(-10%) + D1$) TO M% 360 M%(0%) = 30% \ M%(1%) = 6% \ M%(2%) = 14% \ M%(3%) = 1% \ M%(4%) = 0% \ M%(5%) = 0% \ M%(6%) = 0% \ N%(I%) = M%(I%) FOR I% = 23% TO 26% 370 ON ERROR GOTO 8000 \ CHANGE M% TO D$ \ CHANGE SYS(D$) TO M0% \ M%(3%) = M%(3%) + 1% \ IF M%(3%) > 255% THEN M%(3%) = 0% \ M%(4%) = M%(4%) + 1% 375 ! ! ACCT OK ! 380 IF FNA% (M0%(7%),M0%(8%)) <> 0% THEN 390 ELSE 370 389 ! ! P, PN ! 390 A1$ = CVT$$("(" + NUM$(M0%(8%)) + "," + NUM$(M0%(7%)) + ")",-1) 400 IF A1$ <> A2$ THEN A2$ = A1$ \ L5% = 0% 410 M$ = CHR$(13%) + CHR$(10%) + "ACCOUNT "+A1$+" IS ACCEPTED FOR TRANSFER" \ GOSUB 12000 415 ! ! SET UP FOR DIRECTORY LOOKUP ! 420 N%(3%) = 0% \ N%(4%) = 0% \ N%(5%) = M0%(7%) \ N%(6%) = M0%(8%) 425 ! ! DO THE LOOK UP ! 430 N%(0%) = 30% \ N%(1%) = 6% \ N%(2%) = 15% \ CHANGE N% TO D$ \ CHANGE SYS(D$) TO N% \ N%(3%) = N%(3%) + 1% \ IF N%(3%) > 255% THEN N%(3%) = 0% \ N%(4%) = N%(4%) + 1% 435 ! ! FILE NAME TO FILE .EXT FORM ! F0$ IS THE EXTENSION ! 440 F$ = RAD$(N%(7%) + SWAP%(N%(8%))) + RAD$(N%(9%) + SWAP%(N%(10%))) \ F0$ = RAD$(N%(11%) + SWAP%(N%(12%))) \ F$ = F$ + "." + F0$ 445 ! ! LENGTH OF FILE IN BLOCKS ! 450 L9% = 256. * N%(14%) + N%(13%) 455 ! ! DO NOT COPY IF XERO LENGTH ! 460 IF L9% = 0% THEN 430 465 ! ! LAST ACCESS DATE ! 470 C1% = 256. * N%(18%) + N%(17%) 475 ! ! CREATION DATE ! 480 C2% = 256. * N%(20%) + N%(19%) 485 ! ! PROTECTION CODE OF FILE ! 490 P0% = N%(15%) 493 ! ! CLUSTER SIZE OF FILE ! 495 C3% = 245. * N%(28%) + N%(27%) 496 ! ! PROTECTION CODE $ !& P3$ = "<" + NUM$(P0%) + ">" \ P3$ = CVT$$(P3$,-1%) 500 IF F0$ = "BAS" OR F0$ = "BAC" OR F0$ = "CBL" OR F0$ = "OBJ" THEN IF D8% > 0% THEN IF C2% >= D8% THEN 520 ELSE 430 ELSE 520 510 IF D9% > 0% THEN IF C1% >= D9% THEN 520 ELSE 430 520 ! ! FILE IS ACCEPTED SO FAR LETS DO MORE CHECKING ! 530 IF FNC%(F$) = 0% THEN 430 ! FILE DOES NOT MEET REQUIRMENTS 540 IF L4% = 0% THEN 600 ELSE IF L5% > 0% THEN 600 550 PRINT A1$+F$; \ INPUT A$ \ A$=CVT$$(A$,-1%) ! GET USERS ANSWER 560 L5% = INSTR(1%,A$,"/NO") ! ASK MORE QUESTIONS ? 570 IF LEFT(A$,1%)="Y" THEN 600 ELSE 430 ! WANT THIS FILE ? 600 OPEN D1$+A1$+F$ FOR OUTPUT AS FILE 5%, RECORDSIZE 512% 614 IF L7%>0% THEN FIELD #5%, 512% AS X$ \ LSET X1$=LEFT(A1$+SPACE$(10%),10%)+F$+CVT%$(L9%)+CHR$(P0%) +CHR$(C3%) \ PUT #5%, COUNT 512% 616 GOTO 700 ! WRITE SPECIAL TAPE LABEL IF ASKED FOR 620 IF L2%=0% THEN OPEN D2$+A1$+F$ FOR INPUT AS FILE 5% \ CLOSE 5% \ M$="FILE "+A1$+F$+" ALREADY EXISTS ON "+D2$ \ GOSUB 12000 \ GOTO 430 630 ON ERROR GOTO 8000 650 OPEN D2$+A1$+F$+P3$ FOR OUTPUT AS FILE 5%, RECORDSIZE 512%, CLUSTERSIZE C3% 660 FIELD #5%, 512% AS X1$ 670 PUT #5%, RECORD L9% ! PRE-EXTEND THE OUTPUT FILE 680 NAME D2$+A1$+F$+P3$ AS D2$+A1$+F$+P3$ IF P0%>64% ! IF BAC NAME FILE 690 OPEN D2$+A1$+F$+P3$ AS FILE 5%, RECORDSIZE 512% ! OPEN OUTPUT FILE AGAIN 700 GET #4% ! GET INPUT RECORD 710 FIELD #4%, RECOUNT AS X$ 720 FIELD #5%, RECOUNT AS X1$ \ LSET X1$=X$ ! DO THE COPYING HERE 730 PUT #5%, COUNT RECOUNT 740 GOTO 700 4000! INTERPRET DATE STRING D$=DATE STRING ONLY 4100 I%=0% \ GOSUB 4550 \ GOTO 4500 IF I%=0% \ D1%=I% \ GOSUB 4550 \ D2%=I% \ D4$=FNC$(X$,D1%,D2%) 4300 D1%=VAL(LEFT(X$,D1%-1%)) \ D3%=VAL(RIGHT(X$,D2%+1%))-70% 4350 D%=0% \ RESTORE \ FOR I%=1% TO 12% \ READ D1$,D2% \ GOTO 4400 IF D1$=D4$ \ D%=D%+D2% \ NEXT I% \ GOTO 4650 ! DONT ALLOW A DAY OF THE MONTH TO BE LARGER THAN D2% 4400 IF (D3%-2%)/4%*4%+2%=D3% AND I%>2% THEN D%=D%+1% \ D1%=D1%-1% IF I%=2% 4450 IF D1%<=D2% THEN D%=D%+D1%+(D3%*1000%) ELSE 4650 ! DONT ALLOW A DAY OF THE MONTH TO BE LARGER THAN D2% 4500 RETURN ! RETURNING WITH DATE 4550 I%=INSTR(I%+1%,X$,"-") \ RETURN 4600 DATA JAN,31,FEB,28,MAR,31,APR,30,MAY,31,JUN,30,JUL,31,AUG,31, SEP,30,OCT,31,NOV,30,DEC,31 4650 PRINT "DATE ERROR";D1%;"- ";D4$;" -";D3%+70% \ D%=0% \ RETURN 4660 DEF FNC$(C9$,C8%,C9%)=MID(C9$,C8%+1%,C9%-C8%-1%) 4910 N%(0%)=30% \ N%(1%)=6% \ N%(2%)=15% \ CLOSE 4% \ CHANGE N% TO D$ \ CHANGE SYS(D$) TO N% 4920 N%(3%)=N%(3%)+1% \ IF N%(3%)>255% THEN N%(3%)=0% \ N%(4%)=N%(4%)+1% 4930 RETURN ! THIS ROUTINE GETS NEXT FILE DIRECTORY FROM TAPE 4950 OPEN D1$ AS FILE 4% \ I1%=MAGTAPE(7%,0%,4%) 4960 IF (I1% AND 512%) <> 0% THEN 40 ! EOT REACHED 4970 I%=MAGTAPE(4%,32767%,4%) \ IF (MAGTAPE(7%,0%,4%) AND 128%)=0% THEN 5060 ! READ UNTIL NEXT FILE 4980 CLOSE 4% \ RETURN ! THIS ROUTINE SKIPS TO NEXT EOF 5000 CHANGE SYS(CHR$(6%)+CHR$(-10%)+D1$) TO N% \ N%(1%)=6% \ N%(2%)=15% \ N%(3%), N%(4%)=0% \ N%(5%), N%(6%)=255% \ N%=0% 5010 GOSUB 4910 ! GO GET NEXT FILE DIRECTORY 5030 OPEN D2$+A1$+F$+P3$ AS FILE 5%, RECORDSIZE 512% 5045 A1$=CVT$$("("+NUM$(N%(22%))+","+NUM$(N%(21%))+")",-1%) ! (P,PN) 5047 IF A1$<>A2$ THEN A2$=A1$ \ L5%=0% 5050 IF FNA%(N%(21%),N%(22%))<>0% THEN 5070 ! ACCOUNT ACCEPTED 5060 GOSUB 4950 \ GOTO 5010 ! SKIP FILE AND GET NEXT LABEL 5070 F$=RAD$(N%(7%)+SWAP%(N%(8%)))+RAD$(N%(9%)+SWAP%(N%(10%)))+ "."+RAD$(N%(11%)+SWAP%(N%(12%))) ! FILE NAME TO TRANSFER 5075 CLOSE 4% 5076 IF FNC%(F$)=0 THEN GOSUB 4950 \ GOTO 5010 ! SKIP FILE AND GET NEW LABEL 5080 IF L4%=0% THEN 5120 ELSE IF L5%>0% THEN 5120 5090 PRINT A1$;F$; \ INPUT A$ \ A$=CVT$$(A$,-1%) 5100 L5%=INSTR(1%,A$,"/N") ! IN MEANS NO MORE CHECKING FOR NOW 5110 IF LEFT(A$,1%)="Y" THEN 5120 ELSE GOSUB 4910 \ GOSUB 4950 \ GOTO 5010 5120 OPEN D1$+A1$+F$ FOR INPUT AS FILE 4%, RECORDSIZE 512% 5130 IF L6%=0% THEN 5135 ELSE 5140 ! SEE IF SPECIAL LABEL AVAILABLE 5135 IF RIGHT(F$,8%)="BAC" THEN P0%=124% ELSE P0%=60% ! DEFAULT PROT CODE 5137 K1$=A1$ \ K2$=F$ \ K3%=0% \ K5%=0% \ GOTO 5170 ! SET THE DEFAULTS FOR NO SPECIAL TAPE LABEL 5140 GET #4% \ FIELD #4%, 10% AS K1$, 10% AS K2$, 2% AS K3$, 1% AS K4$, 1% AS K5$ ! K1$ = ACCOUNT (P,PN) K2$ = FILE.EXT K3$=CVT%$(LENGTH) K4$=CHR$(PROT) K5$=CHR$(CLUSTER) 5150 K6$=CVT$$(K1$,-1%) \ K3%=CVT$%(K3$) \ P0%=ASCII(K4$) \ K5%=ASCII(K5$) ! PUT INTO ACCESSABLE FORMAT 5160 IF K6$<>A1$ OR K2$<>F$ THEN PRINT "BAD LABEL FOR ";A1$+F$ \ GOTO 5135 ! CHECK FOR LABEL CONSISTENT LABEL 5170 IF LEFT(D2$,2%)="MT" THEN PRINT "TAPE TO TAPE NOT IMPLEMENTED YET" \ GOTO 32767 5180 IF L2%=0% THEN OPEN D2$+A1$+F$ FOR INPUT AS FILE 5% \ CLOSE 5% \ M$="FILE "+A1$+F$+" ALREADY EXISTS ON "+D2$ \ GOSUB 12000 \ GOTO 5010 5190 P3$="<"+NUM$(P0%)+">" \ P3$=CVT$$(P3$,-1%) ! PUT IN 5200 OPEN D2$+A1$+F$+P3$ FOR OUTPUT AS FILE 5%, RECORDSIZE 512%, CLUSTERSIZE K5% 5210 IF K3%>0% THEN FIELD #5%, 512% AS X1$ \ PUT #5%, RECORD K3%, COUNT 512% ! PRE-EXTEND 5220 NAME D2$+A1$+F$+P3$ AS D2$+A1$+F$+P3$ IF P0%>64% ! RENAME TO SET BAC FILES 5240 L9%=0% ! SET LENGTH COUNTER TO ZERO 5600 GET #4% \ L9%=L9%+1% ! GET RECORD + ADD TO SIZE 5610 FIELD #4%, RECOUNT AS X$ 5620 FIELD #5%, RECOUNT AS X1$ \ LSET X1$=X$ 5630 PUT #5%, COUNT RECOUNT 5640 GOTO 5600 8000 IF D0%=1% THEN 8010 ELSE 8500 8010 IF ERR=5% AND ERL=4910 THEN RESUME 8330 ! NO MORE ACCTS ON TAPE 8020 IF ERR=11% AND ERL=5600 THEN RESUME 8300 ! FILE COPY DONE 8030 IF ERR=5% AND ERL=5550 THEN RESUME 8320 ! ACCOUNT NOT ON D2$ 8040 IF ERR=4% AND ERL=4970 THEN RESUME 8330 ! INVALID END OF TAPE 8045 IF ERR=5% AND ERL=5180 THEN RESUME 5190 ! SUPERCEDE CHECK 8046 IF ERR=5% AND ERL=5200 THEN RESUME 8800 ! ACCT NOT D2$ 8047 IF ERR=24% AND ERL=5200 THEN RESUME 8800 ! ACCT NOT ON D2$ PRIV DK 8050 PRINT "ERROR";ERR;"AT LINE";ERL \ ON ERROR GOTO 0 8300! END OF TRANSFER FROM TAPE 8310 CLOSE 4%,5% \ M$=A1$+F$+" TRANSFERED TO "+D2$+" SIZE IS "+NUM$(L9%) +"PROT "+P3$ \ GOSUB 12000 \ IF D0%=1% THEN 5010 ELSE 430 8320 M$=A1$+" NOT ON "+D2$+" FILE "+F1$+" NOT TRANSFERED" \ GOSUB 12000 \ GOTO 5010 8330 CLOSE 1% \ OPEN D1$ AS FILE 4% ! CLOSE LISTING FILE 8335 I%=MAGTAPE(3%,0%,4%) \ GOTO 20 ! REWIND TAPE AND GO TO BEGINNING 8500 IF ERR=5% AND ERL=430 THEN RESUME 370 ! NO MORE FILES IN ACCT; GO GET NEXT ACCT 8505 IF ERR=11% AND ERL=700 THEN RESUME 8300 ! FILE IS COPIED 8510 IF ERR=5% AND ERL=620 THEN RESUME 630 ! FILE NOT FOUND AND NO SUPERCEDE - ALL IS OK 8515 IF ERR=5 AND ERL=370 THEN RESUME 8600 ! NO MORE ACCTS ON D1$ 8520 IF ERR=5% AND ERL=650% THEN RESUME 8800 ! ACCOUNT NOT ON D2$, SO GO CREATE IT 8530 IF ERR=24% AND ERL=650 THEN RESUME 8800 ! SAME AS 8520 8540 IF ERR=11% AND ERL<250% THEN RESUME 32000 ! ^Z WAS TYPED; NO MORE 8545 IF ERR=4% AND (ERL=730 OR ERL=612) THEN RESUME 8900 ! EOT REACHED; ASK FOR MORE 8550 PRINT "ERR =";ERR;" ERL=";ERL \ ON ERROR GOTO 0 ! I DONT KNOW!! 8600 CLOSE 1% \ GOTO 20 ! CLOSE LISTING FILE 8800 DIM Z%(30%),Z1%(30%) \ CHANGE SYS(CHR$(6%)+CHR$(-10%)+D2$+A1$+"??????") TO Z% \ M$="" 8810 Z1%(I%)=0% FOR I%=1% TO 30% \ Z1%(0%)=30% \ Z1%(1%)=6% \ Z1%(I%)=Z%(I%-2%) FOR I%=7% TO 12% \ Z1%(I%)=Z%(I%) FOR I%=23% TO 25% 8820 CHANGE Z1% TO Z1$ \ Z1$=SYS(Z1$) ! ENTER ACCOUNT ON DISK 8830 M$=CHR$(13%)+CHR$(10%)+ "ACCOUNT "+A1$+" CREATED ON "+D2$+" WITH PASSWORD OF ??????" \ GOSUB 12000 8840 IF D0%=1% THEN 5200 ELSE 650 ! BOTH USE SAME ROUTINE 8900 ON ERROR GOTO 9030 8910 CLOSE 5% \ OPEN D2$ AS FILE 5% 8915 IF (MAGTAPE(7%,0%,5%) AND 256%)<>0% THEN PRINT "NON-TRAPABLE END OF TAPE ERROR" \ GOTO 8950 8920 I%=MAGTAPE(5%,32767%,5%) 8930 I%=MAGTAPE(2%,0%,5%) FOR J%=1% TO 3% 8940 I%=MAGTAPE(1%,0%,5%) 8950 CLOSE 5% 8960 PRINT "TAPE UNIT ";D2$;" AT EOT" \ PRINT "MOUNT NEW TAPE ON ";D2$ 8970 INPUT "ZERO TAPE (Y OR N)";A$ \ A$=LEFT(CVT$$(A$,-1%),1%) 8980 OPEN D2$ AS FILE 5% 8990 I%=MAGTAPE(7%,0%,5%) ! FIND STATUS OF DRIVE 9000 IF (I% AND 256%) <> 0% THEN 9010 ELSE PRINT "TAPE NOT AT BOT" \ GOTO 8970 9010 IF A$="Y" THEN I%=MAGTAPE(2%,0%,5%) FOR J%=1% TO 3% \ I%=MAGTAPE(3%,0%,5%) ! ZERO AND REWIND TAPE 9015 IF L3%>0% THEN PRINT "RE-DETACHING" \ PRINT CHR$(12%) \ V$=SYS(CHR$(6%)+CHR$(7%)) ! REDETACH AND NOTIFY 9017 M$=CHR$(13%)+CHR$(10%)+ "NEW TAPE MOUNTED AT "+TIME$(0%)+CHR$(13%)+CHR$(10%) \ GOSUB 12000 9020 ON ERROR GOTO 8000 \ CLOSE 5% \ GOTO 440 ! NEW TAPE CONTINUE 9030 IF ERR=39% THEN RESUME 8960 ! UNIT NOT ONLINE 9035 IF ERR=4% AND ERL=8920% THEN RESUME 8920 ! ERROR ON BS RETRY 9040 ON ERROR GOTO 0 12000 PRINT #1%, M$ \ RETURN 15000 PRINT \ PRINT "FOLLOWING IS A LIST OF THE OPTIONS USED" 15010 PRINT "FROM DEVICE ";D1$ \ PRINT "TO DEVICE ";D2$ \ PRINT \ PRINT "FROM ACCOUNT";P1%;",";P2% \ PRINT "TO ACCOUNT";P3%;",";P4% 15020 PRINT "SELECTING FILES ";F1$ 15025 IF D8%>0% THEN PRINT "ACCEPT FOR TRANSFER IF CREATED ON OR AFTER ";DATE$(D8%) 15030 IF D9%>0% THEN IF LEFT(D1$,2%)="MT" THEN PRINT "LAST ACCESS DATE NOT VALID FROM TAPE" ELSE PRINT "ACCEPT FOR TRANSFER IF ACCESSED ON OR AFTER ";DATE$(D9%) 15040 IF L2%>0% THEN IF LEFT(D2$,2%)="MT" THEN PRINT "SUPERCEDE NOT VALID TO TAPE" ELSE PRINT "OLD VERSION OF FILES ON ";D2$;" WILL BE "; "REPLACED FROM ";D1$ 15050 IF L3%>0% THEN PRINT "JOB WILL DETACH BEFORE BEGINNING BACKUP" 15060 IF L4%>0% THEN PRINT "CHOICE OF TRANSFER BY FILE NAME WILL BE GIVEN" 15070 IF L6%>0% THEN IF LEFT(D1$,2%)<>"MT" THEN PRINT "SPECIAL INPUT ONLY FROM TAPE" ELSE PRINT "SPECIAL INPUT FILES FROM ";D1$ 15080 IF L7%>0% THEN IF LEFT(D2$,2%)<>"MT" THEN PRINT "SPECIAL OUTPUT ONLY TAPE" ELSE PRINT "SPECIAL OUTPUT TO ";D2$ 15090 INPUT "ARE ALL OF THESE SPECIFICATIONS CORRECT";A$ 15100 IF LEFT(CVT$$(A$,-1%),1%)="Y" THEN 250 ELSE 20 !USER GETS CHANCE TO CHECK 23000 INPUT "ZERO TAPE";A$ \ A$=LEFT(CVT$$(A$,-1%),1%) 23005 ON ERROR GOTO 23100 ! SET NOT ONLINE TRAP 23010 OPEN D2$ AS FILE 5% 23020 I%=MAGTAPE(7%,0%,5%) 23030 IF (I% AND 256%) <> 0% THEN 23040 ELSE PRINT "TAPE IS NOT A BOT" \ GOTO 23000 23040 IF A$="Y" THEN I%=MAGTAPE(2%,0%,5%) FOR J%=1% TO 3% \ I%=MAGTAPE(3%,0%,5%) 23050 ON ERROR GOTO 8000 ! RESET ERROR HANDLER ENTRY 23060 RETURN 23100 IF ERR=39% AND ERL=23010 THEN PRINT "TAPE IS NOT ONLINE" \ RESUME 23000 23110 ON ERROR GOTO 0 26000 DEF FNA%(P6%,P5%) ! ACCOUNT #'S TO CHECK FOR LIMITS 26010 IF P1%=P5% THEN IF P2%<=P6% THEN 26030 26020 IF P1%=P6% THEN 26090 ! ACCEPT ACCOUNT 26040 IF P3%>P5% THEN 26090 ELSE 26100 26090 FNA%=-1% \ GOTO 26110 26100 FNA%=0% 26110 FNEND 27000 DEF FNC%(F9$) ! CHECK IF FILE MEETS SELECT REQUIREMENTS 27010 CHANGE F9$ TO F9% ! CONVERT ACTUAL FILE NAME 27020 CHANGE F1$ TO F1% ! CONVERT REQUIRED FILE NAME 27030 FOR I%=1% TO 10% 27040 IF F1%(I%)=63% THEN 27060 ! IF A ? ACCEPT COLUMN 27050 IF F1%(I%)<>F9%(I%) THEN FNC%=0% \ GOTO 27070 ! FILE NOT ACCEPTED 27060 NEXT I% \ FNC%=-1% 27070 FNEND ! SET TO 0 IF NOT ACCEPTED ELSE -1 32000 CLOSE I% FOR I%=1% TO 12% 32767 END