2 ! UPDATES ANALYSIS OF SALARY CONTRACT FILE 5 ! PROGRAM NAME:"UDTASC" - BY JAC 10 OPEN "DK1:PAYROL.ASC" AS FILE 1%:DIM #1%,C$(700%,20%)=64%,C%(0%) 15 OPEN "DK1:PAYROL.TPY" AS FILE 2%:DIM #2%,T$(700%)=64%,T%(0%) 20 OPEN "DK1:PAYROL.PRJ" AS FILE 3%:DIM #3%,J$(1500%)=64%,J%(0%) 25 OPEN "DK1:PAYROL.AC1" AS FILE 4%:DIM #4%,R$(1500%)=64% 30 DIM L%(1300%),I%(1300%):C%=C%(0%):N%=T%(0%) 35 L%(K%)=ASCII(MID(T$(K%),2%,1%)) FOR K%=1% TO N% 40 GOSUB 500:S$=SPACE$(7%) 45 R$(K%)=T$(I%(K%)) FOR K%=1% TO N% 50 L%(K%)=VAL(MID(R$(K%),29%,4%)) FOR K%=1% TO N% 55 GOSUB 500:H%=1% 60 T$(K%)=R$(I%(K%)) FOR K%=1% TO N% 65 FOR K%=1% TO N%:E$=MID(T$(K%),29%,4%):F2$=MID(T$(K%),2%,1%) 70 GOTO 75 IF MID(C$(J%,0%),46%,4%)=E$ FOR J%=H% UNTIL MID(C$(J%,0%),46%,4%)>E$ OR J%>C% 75 IF J%>C% OR MID(C$(J%,0%),46%,4%)>E$ THEN C%=C%+1%:GOTO 100 78 F9$=MID(C$(J%,0%),43%,1%):IF F9$="D" OR F9$="Z" THEN H%=J%+1%:GOTO 70 80 C$=MID(T$(K%),39%,16%):IF C$<>MID(C$(J%,0%),4%,16%) THEN J%=J%+1:GOTO 75 85 N1%=VAL(MID(C$(J%,0%),2%,2%))+1% 90 C$(J%,N1%)=SPACE$(43%)+MID(T$(K%),55%,10%)+MID(T$(K%),33%,6%)+F2$ 95 C$(J%,0%)=LEFT(C$(J%,0%),1%)+MID(NUM$(N1%),2%,2%)+MID(C$(J%,0%),4%,39%)+"Z"+ RIGHT(C$(J%,0%),44%):GOTO 125 100 IF F2$<>"S" THEN PRINT "ERROR-DELETING AN EMP. NOT IN ASC":C%=C%-1%:GOTO 125 105 C$(X%,Y%)=C$(X%-1%,Y%) FOR Y%=0% TO 20% FOR X%=C% TO J%+1% STEP -1% 110 C$(J%,0%)=" "+MID(T$(K%),39%,16%)+MID(T$(K%),3%,23%)+" " 115 C$(J%,0%)=C$(J%,0%)+MID(T$(K%),27%,12%)+MID(T$(K%),56%,9%) 120 C$(J%,X%)=SPACE$(64%) FOR X%=1% TO 20% 125 H%=J%-5%:NEXT K%:PRINT "CONTRACT CHANGES COMPLETE.":N%=J%(0%):H%=1% 130 L%(K%)=VAL(MID(J$(K%),27%,4%)) FOR K%=1% TO N% 135 GOSUB 500 140 R$(K%)=J$(I%(K%)) FOR K%=1% TO N% 145 FOR K%=1% TO N%:IF MID(R$(K%),63%,1%)<>"Y" THEN 230 150 E$=MID(R$(K%),27%,4%):Z%=1% 155 GOTO 158 IF E$=MID(C$(J%,0%),46%,4%) FOR J%=H% UNTIL MID(C$(J%,0%),46%,4%)>E$ OR J%>C% 158 H%=J% 160 IF MID(C$(J%,0%),46%,4%)>E$ OR J%>C% THEN PRINT "MISMATCH-CODE OR EMP. #";E$ ;" IN ASC":GOSUB 600:GOTO 230 162 F9$=MID(C$(J%,0%),43%,1%):IF F9$="D" OR F9$="Z"THEN H%=J%+1%:GOTO 155 165 F$=MID(R$(K%),61%,1%):IF F$<>"C" AND F$<>"5" THEN 210 170 C$=MID(R$(K%),45%,16%):IF C$<>MID(C$(J%,0%),4%,16%) THEN J%=J%+1%:Z%=1% :GOTO 160 175 N1%=VAL(MID(C$(J%,0%),2%,2%)):IF F$="C" THEN Z%=1%:GOTO 195 180 N1%=N1%+Z%:Z%=0%:IF MID(C$(J%,N1%),30%,7%)<>S$ THEN N1%=N1%+1% 185 Z$=MID(R$(K%),39%,6%)+MID(R$(K%),32%,7%) 190 C$(J%,N1%)=LEFT(C$(J%,N1%),23%)+Z$+RIGHT(C$(J%,N1%),37%):GOTO 218 195 N1%=N1%+Z%:Z%=0%:IF MID(C$(J%,N1%),37%,7%)<>S$ THEN N1%=N1%+1% 200 Z$=MID(R$(K%),39%,6%)+MID(C$(J%,N1%),30%,7%)+MID(R$(K%),32%,7%) 205 C$(J%,N1%)=LEFT(C$(J%,N1%),23%)+Z$+RIGHT(C$(J%,N1%),44%):GOTO 218 210 N1%=VAL(MID(C$(J%,0%),2%,2%)) 212 N1%=N1%+Z%:Z%=0%:IF MID(C$(J%,N1%),17%,7%)<>S$ THEN N1%=N1%+1% 215 C$(J%,N1%)=MID(R$(K%),45%,16%)+MID(R$(K%),32%,13%)+RIGHT(C$(J%,N1%),30%) 218 C$(J%,0%)=LEFT(C$(J%,0%),1%)+MID(NUM$(N1%),2%,2%)+RIGHT(C$(J%,0%),4%) 220 IF K%=N% THEN 230 225 E$=MID(R$(K%+1%),27%,4%):IF E$=MID(C$(J%,0%),46%,4%) THEN K%=K%+1%:J%=H% :GOTO 165 230 NEXT K%:PRINT "ASC IS UPDATED." 235 C%(0%)=C%:CLOSE 1%,2%,3%,4%:KILL "DK1:PAYROL.AC1":STOP 500 I%(K%)=K% FOR K%=1% TO N% 505 FOR K%=1% TO N%-1%:IF L%(K%)<=L%(K%+1%) THEN 530 510 T%=L%(K%+1%):L%(K%+1%)=L%(K%):T1%=I%(K%+1%):I%(K%+1%)=I%(K%) 515 FOR J%=K% TO 2% STEP -1% 520 IF L%(J%-1%)<=T% THEN L%(J%)=T%:I%(J%)=T1%:GOTO 530 525 L%(J%)=L%(J%-1%):I%(J%)=I%(J%-1%):NEXT J%:L%(1%)=T%:I%(1%)=T1% 530 NEXT K% 535 RETURN 600 IF MID(R$(K%),61%,1%)<>"C" THEN 630 ELSE C%=C%+1% 605 C$(X%,Y%)=C$(X%-1%,Y%) FOR Y%=0% TO 20% FOR X%=C% TO J%+1% STEP -1% 610 C$(J%,0%)=MID(R$(K%),62%,1%)+" 1"+MID(R$(K%),45%,16%)+LEFT(R$(K%),23%)+" " +MID(R$(K%),25%,6%)+MID(R$(K%),39%,6%)+SPACE$(9%) 620 C$(J%,Y%)=SPACE$(64%) FOR Y%=1% TO 20% 625 C$(J%,1%)=SPACE$(23%)+MID(R$(K%),39%,6%)+SPACE$(7%)+MID(R$(K%),32%,7%) +SPACE$(21%) 630 RETURN 640 END