100 ! FIX - ALLOWS REPAIR OF EDIT FILE BEFORE UPDATING 120 ! FILE1=FILE TO BE REPAIRED; FILE2=FIX FILE 140 ! FILE1 + FILE2 --> FILE 3 160 ! ITEMS IN FIX FILE REPLACE ITEMS IN FILE1 180 PRINT"FIX: EDIT FILE ID MERGE" 200 INPUT"ARE FILES IN CORRECTION FORMAT (Y/N)";Y$ : Y%=ASCII(Y$)-89% 220 M%=0% ! COUNTER 240 N5%=1%: GOSUB 2260 260 F%=1% : L%=6% 280 PRINT "FILES: USE FORM DEV:FILE" 300 INPUT" FIRST INPUT FILE";F1$ : F1%=INSTR(1%,F1$,".") : IF F1% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 300 320 INPUT" SECOND INPUT FILE";F2$ : F2%=INSTR(1%,F2$,".") : IF F2% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 320 340 INPUT" OUTPUT FILE";F3$ : F3%=INSTR(1%,F3$,".") : IF F3% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 340 360 F0$="."+F$ : IF Y%=0% THEN F1$=F1$+F0$ : F2$=F2$+F0$ : F3$=F3$+F0$ 380 OPEN F1$ FOR INPUT AS FILE 1% 400 FIELD #1%,N1%*R% AS Z$, N1% AS A$(R%) FOR R%=0% TO N6% 420 OPEN F2$ FOR INPUT AS FILE 2% 440 FIELD #2%,N1%*S% AS Z$, N1% AS B$(S%) FOR S%=0% TO N6% 460 OPEN F3$ FOR OUTPUT AS FILE 3% 480 FIELD #3%,N1%*H% AS Z$,N1% AS C$(H%) FOR H%=0% TO N6% 500 H%=0% 520 GOSUB 1960 540 IF LEFT(A$(R%),1%)="\" THEN 960 560 I9%=2% 580 GOSUB 2020 600 IF LEFT(B$(S%),1%)="\" THEN 960 620 IF MID(B$(S%),F%,L%)<=MID(A$(R%),F%,L%) THEN 800 640 LSET C$(H%)=A$(R%) 660 GOSUB 2080 680 I9%=1% ! FILE 1 WILL BE READ NEXT 700 M%=M%+1% 720 IF M%>1899% THEN GOSUB 1680 740 GOSUB 1960 760 IF LEFT(A$(R%),1%)="\" THEN 960 780 GOTO 620 800 LSET C$(H%)=B$(S%) 820 GOSUB 2080 840 I9%=2% ! FILE 2 WILL BE READ NEXT 860 M%=M%+1% 880 IF M%>1899% THEN GOSUB 1680 900 IF MID(B$(S%),F%,L%)=MID(A$(R%),F%,L%) THEN I9%=1%:GOTO520 920 GO TO 580 940 ! EXHAUST FIRST FILE 960 IF I9%=1% THEN 1300 980 ON ERROR GOTO 1860 1000 CLOSE 2% 1020 INPUT"NEW SECOND INPUT FILE";F2$ : F2%=INSTR(1%,F2$,".") : IF F2% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 1020 1040 IF LEN(F2$)<2% THEN 1140 1060 IF Y%=0% THEN F2$=F2$+F0$ 1080 OPEN F2$ FOR INPUT AS FILE 2% 1100 FIELD #2%,N1%*S% AS Z$, N1% AS B$(S%) FOR S%=0% TO N6% 1120 I9%=2% : GO TO 580 1140 LSET C$(H%)=A$(R%) 1160 GOSUB 2080 1180 M%=M%+1% 1200 IF M%>1899% THEN GOSUB 1680 1220 GOSUB 1960 1240 IF LEFT(A$(R%),1%)="\" THEN 1580 1260 GO TO 1140 1280 ! EXHAUST SECOND FILE 1300 ON ERROR GOTO 1860 1320 CLOSE 1% 1340 INPUT"NEW FIRST INPUT FILE";F1$ : F1%=INSTR(1%,F1$,".") : IF F1% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 1340 1360 IF LEN(F1$)<2% THEN 1440 ELSE IF Y%=0% THEN F1$=F1$+F0$ 1380 OPEN F1$ FOR INPUT AS FILE 1% 1400 FIELD #1%,N1%*R% AS Z$, N1% AS A$(R%) FOR R%=0% TO N6% 1420 I9%=1% : GO TO 740 1440 LSET C$(H%)=B$(S%) 1460 GOSUB 2080 1480 M%=M%+1% 1500 IF M%>1899% THEN GOSUB 1680 1520 GOSUB 2020 1540 IF LEFT(B$(S%),1%)="\" THEN 1580 1560 GO TO 1440 1580 GOSUB 2140 1600 CLOSE 1,2,3 1620 PRINT"MERGE COMPLETE" 1640 PRINTM%;"RECORDS WRITTEN" 1660 GOTO 2680 1680 ! NEW OUTPUT FILE 1700 GOSUB 2140 1720 CLOSE 3 1740 PRINT M%;"RECORDS WRITTEN" 1760 INPUT"NEW OUTPUT FILE";F3$ : F3%=INSTR(1%,F3$,".") : IF F3% THEN IF Y%=0% THEN PRINT"RETYPE PLEASE" : GO TO 1760 1780 IF Y%=0% THEN F3$=F3$+F0$ 1800 OPEN F3$ FOR OUTPUT AS FILE 3% 1820 FIELD #3%,N1%*H% AS Z$, N1% AS C$(H%) FOR H%=0% TO N6% 1840 H%,M%=0% : RETURN 1860 ! CAN'T FIND FILE SUBROUTINE 1880 IF ERR<>5% THEN ON ERROR GO TO 0 1900 PRINT"CAN'T FIND FILE--PLEASE RETYPE!" 1920 IF I9%=1% THEN RESUME 1340 1940 RESUME 1020 1960 ! GET#1 SUBR 1980 IF R%F$ THEN 2360 2420 V2%(2%,0%),N%=VAL(MID(A$(A%),4%,2%)) : N9%=VAL(MID(A$(A%),6%,1%))*2% 2440 N1%=510%/N% : N2%=N1%-8% : N3%=N%*N1% : N6%=N%-1% 2460 FOR V%=1% TO 50% 2480 V2$(V%)=MID(A$(A%),42%+(V%-1%)*4%,2%) : IF V2$(V%)=" " THEN 2560 2500 V5%=CVT$%(MID(A$(A%),44%+(V%-1%)*4%,2%)) 2520 V2%(1%,V%)=ASCII(CHR$(V5%)) : V2%(2%,V%)=ASCII(CHR$(SWAP%(V5%))) 2540 NEXT V% 2560 V2%(1%,0%)=V%-1% : IF N5% THEN 2580 ELSE PRINT"CODES: "; : PRINT V2$(I%)+" "; FOR I%=1% TO V%-1% : PRINT 2580 CLOSE 1% : ON ERROR GO TO 0 : RETURN 2600 IF ERR<>5% AND ERR<>21% THEN 2660 ELSE RESUME 2620 2620 READ V1$ : GO TO 2320 2640 DATA DK2:,DK1:,DK0:,DK3: 2660 PRINT"THE FILE '$ATRIB' HAS BEEN DELETED;" : PRINT"IT MUST BE REPLACED TO PROCEED." 2680 END