2 ! SORT AND MERGE MONTHLY VENDOR LIST! 5 ! PROGRAM NAME: "STMGVL" - BY JAC. 10 V$=SYS(CHR$(7%)):V%=0%:W%=1%:X%=2%:OPEN V$+"TVL" AS FILE W%,RECORDSIZE 8192%: ON ERROR GOTO 2000:GET #W% 15 FIELD #W%,X% AS D$:N%=CVT$%(D$):B%=W%:Z%=V% 20 FOR K%=W% TO N%:I%=K%:GOSUB 1000:IF T$<=T1$ THEN 50 ELSE M$=T1$+"": LSET T1$=T$:Z%=-W% 30 FOR J%=K% TO X% STEP -W%:I%=J%-W%:GOSUB 1000:IF T$<=M$ THEN LSET T1$=M$: Z%=-W%:GOTO 50 40 LSET T1$=T$:Z%=-W%:NEXT J%:LSET T$=M$:Z%=-W% 50 NEXT K%:OPEN V$+"VLT" FOR INPUT AS FILE X%:GET #X%: FIELD #X%,16% AS M$:M%=CVT$%(LEFT(M$,X%)):B2%=W%:R%=M%+N%:J%=M%:I%=V%: LSET M$=CVT%$(V%)+"000000":GOSUB 1000:LSET T$=CVT%$(V%)+"000000":Z%=-W%: I%=N% 60 FOR K%=R% TO W% STEP -W%:GOSUB 200:D$=C$+"":GOSUB 300:GOSUB 1000: IF D$>T$ OR I%=V% THEN LSET L$=D$:J%=J%-W%:GOTO 80 70 LSET L$=T$:I%=I%-W% 80 NEXT K%:FIELD #X%,X% AS L$:LSET L$=CVT%$(R%):PUT #X%,RECORD B2%:GET #W%, RECORD W%:FIELD #W%,X% AS L$:LSET L$=CVT%$(N%):PUT #W%,RECORD W%: CLOSE W%,X%:STOP 200 B3%=J%/32%+W%:IF B3%<>B2% THEN PUT #X%,RECORD B2%:GET #X%,RECORD B3%:B2%=B3% 210 O2%=(J%-(B2%-W%)*32%)*16%:FIELD #X%,O2% AS E$,16% AS C$:RETURN 300 B3%=K%/32%+W%:IF B3%<>B2% THEN GET #X%,RECORD B3%:B2%=B3% 310 O2%=(K%-(B2%-W%)*32%)*16%:FIELD #X%,O2% AS E$,16% AS L$:RETURN 1000 B1%=I%/512%+W%:IF B1%<>B% THEN PUT #W%,RECORD (B%-W%)*16%+W% IF Z%: GET #W%,RECORD (B1%-W%)*16%+W%:B%=B1%:Z%=V% 1010 O%=(I%-(B%-W%)*512%)*16%:GOTO 1020 IF O%<>8176%:FIELD #W%,O% AS E$, 16% AS T$:M1$=T$+"":T$=M1$:PUT #W%,RECORD (B%-W%)*16%+W% IF Z%:Z%=V%: B%=B%+W%:GET #W%,RECORD (B%-W%)*16%+W% 1015 FIELD #W%,16% AS T1$:RETURN 1020 FIELD #W%,O% AS E$,16% AS T$,16% AS T1$:RETURN 2000 IF ERR=11% THEN IF ERL=10% THEN RESUME 15 ELSE IF ERL=1010 THEN RESUME 1015 ELSE IF ERL=300 THEN B2%=B3%:RESUME 310 2005 IF ERR=11% AND ERL=1000 THEN B%=B1%:Z%=V%:RESUME 1010 2010 IF ERR<>5% THEN ON ERROR GOTO 0 ELSE PUT #W%,RECORD (B%-W%)*16%+W% IF Z%: CLOSE W%:NAME V$+"TVL" AS V$+"VLT" 2100 END