10 ! REGULAR PAYROLL DEDUCTION COMPUTATIONS 11 ! PROGRAM NAME: PRRSUM BY CWR 12 K1%=1%:K0%=0%:F2=100% 20 OPEN "DK1:PAYROL.MST" AS FILE K1% 30 OPEN "DK1:PAYROL.MDR" AS FILE 2% 40 OPEN "DK1:PAYROL.SCR" AS FILE 3% 50 OPEN "DK1:PAYROL.PJR" AS FILE 4% 70 OPEN "DK1:PAYROL.TPA" AS FILE 6% 100 OPEN "LP:" FOR OUTPUT AS FILE 9%,MODE(66%) 105 PRINT #9% ,CHR$(129%) 110 DIM #1%,A$(1500%)=128%,A%(0%):Z%=A%(0%) 120 DIM #2%,M$(1500%)=128%,M%(0%),D$(0%)=8% 130 DIM #3%,S$(1500%)=128%,S%(0%) 140 DIM #4%,J$(1500%)=64%,J%(0%) 163 DIM L6$(4%),T6(7%,4%),T6%(7%,2%) 165 J%(K0%)=K0% 170 DEF FNC$(C9,C9%) 172 C9$=NUM$(INT(C9+.5)):C8%=LEN(C9$)-2% 173 C9$=MID(C9$,2%,C8%):IF C9<0% THEN C9$="-"+C9$ 176 IF LEN (C9$)>C9% THEN 5060 177 C9$=SPACE$(C9%-LEN(C9$))+C9$ 178 FNC$=C9$ 179 FNEND 180 PRINT "PR DATE: ";D$(0%) 186 D6$=D$(0%):D$=LEFT(D6$,2%)+MID(D6$,4%,2%)+RIGHT(D6$,7%):D2%=VAL(RIGHT (D$,5%)):D3%=VAL(LEFT(D$,2%)) 187 P%=K1%:GOSUB 3000 190 I6%=K0%:I7%=K1%:I8%=K1%:I4%=J%(0%)+K1%:I3%=K1% 195 INPUT #6,V6%:B%=K0% 200 FOR I%=K1% TO Z% 204 H1=K0%:O1=K0%:P2%=K0%:P3=K0%:L6%=K1%:A8=K0% 205 E1$=MID(A$(I%),37%,2%):N$=MID(A$(I%),K1%,24%) 210 E$=MID(A$(I%),39%,4%):P=K0%:A8=K0% 215 IF I6%>V6% THEN 610 220 ON B%+1% GOTO 224,610,235,235,235 224 ON ERROR GOTO 4000 225 INPUT LINE #6,T$:B%=VAL(LEFT(T$,1%)):T$=RIGHT(T$,3%) 226 I6%=I6%+1% 230 ON B% GOSUB 4040,4020,4030,4030 235 IF E2$>E$ THEN 610 240 IF E2$<>E$ THEN 5010 245 ON B% GOTO 610,298,400,490 298 ! PROCESS TIME CARD 310 R=VAL(MID(T$,35%,4%)) 320 H=VAL(MID(T$,39%,5%)):H1=H1+H 330 O=VAL(MID(T$,44%,5%)):O1=O1+O 340 P1=R*H/1000%+R*O/2000%:D7$=MID(T$,29%,2%)+"-"+MID(T$,31%,2%) 343 GOSUB 3200 344 F$="#####.## #.### ###.## ####.##"+SPACE$(31%)+"#####.##" 345 PRINT #9%,USING F$,P1/F2,R/1000,H/F2,O/F2,P1/F2; 346 GOSUB 3240 350 P=P+INT(P1+.5):P3=P3+INT(P1+.5) 360 J$(I4%)=N$+E1$+E$+FNC$(P1,8%)+MID(T$,29%,6%)+MID(T$,49%,16%)+"T" 365 J$(I4%)=J$(I4%)+MID(S$(I%),2%,2%) 370 I4%=I4%+K1%:IF I4%>1500% THEN 5040 375 A$(I%)=LEFT(A$(I%),52%)+"-"+RIGHT(A$(I%),54%):B%=0%:GOTO 215 400 P1=VAL(MID(T$,26%,7%)) 410 P=P+P1 : P3=P3+P1:D7$=MID(T$,20%,2%)+"-"+MID(T$,22%,2%) 413 GOSUB 3200 414 F$="#####.##"+SPACE$(56%)+"#####.##" 415 PRINT #9%,USING F$,P1/F2,P1/F2; 416 GOSUB 3240 420 IF MID(T$,49%,K1%)="5" THEN L7$="C" ELSE L7$="S" 425 IF L7$="C" THEN Y1$="Y" ELSE Y1$=MID(S$(I%),3%,1%) 430 J$(I4%)=N$+E1$+E$+FNC$(P1,8%)+MID(T$,20%,6%)+MID(T$,33%,16%)+L7$ 435 J$(I4%)=J$(I4%)+MID(S$(I%),2%,1%)+Y1$ 436 S$(I%)=LEFT(S$(I%),2%)+Y1$+RIGHT(S$(I%),4%) 437 IF L7$<> "C" THEN 450 440 GOTO 5070 IF L6%=5%:L6$(L6%)=MID(T$,33%,16%):L6%=L6%+K1% 450 I4%=I4%+K1% : IF I4%>1500% THEN 5040 460 B%=0%:IF L7$="S" THEN 375 ELSE 215 490 P1=VAL(MID(T$,26%,7%)) 500 A8=A8+P1 : P=P+P1:D7$=MID(T$,20%,2%)+"-"+MID(T$,22%,2%) 504 GOSUB 3200 505 F$=SPACE$(37%)+"#####.##"+SPACE$(19%)+"#####.##" 506 PRINT #9%,USING F$,P1/F2,P1/F2; 507 GOSUB 3240 509 IF MID(T$,49%,K1%)="5" THEN Y1$="Y" ELSE Y1$=MID(S$(I%),3%,1%) 510 J$(I4%)=MID(N$,K1%,20%)+"-ADJ"+E1$+E$+FNC$(P1,8%)+MID(T$,20%,6%) 520 J$(I4%)=J$(I4%)+MID(T$,33%,16%)+MID(T$,49%,K1%) 522 J$(I4%)=J$(I4%)+MID(S$(I%),2%,1%)+Y1$:I4%=I4%+K1%:IF I4%>1500% THEN 5040 590 B%=0%:GOTO 215 610 IF MID(A$(I%),116%,K1%)="D" OR L6%>K1% THEN 701 615 J2%=VAL(MID(S$(I%),4%,K1%)) 620 FOR K%=K0% TO J2%-K1%:M2%=VAL(MID(S$(I%),9%+K%*31%,2%)):M3%=VAL(MID(S$(I%) ,5%+K%*31%,2%)):M4%=VAL(MID(S$(I%),11%+K%*31%,2%)) 630 GOTO 700 IF M2%>D2% OR M3%>D3% AND M2%=D2% 660 M3%=VAL(MID(S$(I%),5%+K%*31%,2%)):M4%=VAL(MID(S$(I%),11%+K%*31%,2%)) 661 P1=VAL(MID(S$(I%),13%+K%*31%,7%)):S=0% 662 M3%=M3%+M4%-K1% 663 IF M3%>12% THEN M3%=M3%-12% 664 IF M3%=D3% THEN S=P1-FIX(P1/M4%)*M4% 665 P1=S+FIX(P1/M4%) 670 P=P+P1:P3=P3+P1:D7$=LEFT(D6$,5%) 674 GOSUB 3200 ! PRINT LINE FOR CONTRACT ITEM 675 F$="#####.##"+SPACE$(56%)+"#####.##" 676 PRINT #9%,USING F$,P1/F2,P1/F2; 677 GOSUB 3240 680 J$(I4%)=N$+E1$+E$+FNC$(P1,8%)+D$+MID(S$(I%),20%+K%*31%,16%)+"C" 685 J$(I4%)=J$(I4%)+MID(S$(I%),2%,2%) 690 I4%=I4%+K1%: IF I4%>1500% THEN 5040 700 NEXT K% 701 IF P<=0% THEN 713 702 J3%=VAL(MID(M$(I%),48%,K1%)):T=0% 703 FOR K%=K1% TO J3% 704 C$=MID(M$(I%),57%+8%*(K%-K1%),2%) 705 D1=VAL(MID(M$(I%),59%+8%*(K%-K1%),6%)) 707 IF C$<="40" OR C$>="60" THEN 711 708 T=T+D1:GOSUB 3200 709 PRINT #9%,TAB(Q%+88%);:PRINT #9%,USING "#####.## #####.##",-D1/F2,-D1/F2; 710 GOSUB 3240 711 NEXT K% 712 GOSUB 3280 713 M$(I%)=FNC$(P,8%)+FNC$(A8,7%)+SPACE$(21%)+FNC$(H1,5%)+FNC$(O1,5%)+RIGHT(M$(I%),47%) 1440 NEXT I% 1500 ! PRINT FINAL TOTALS 1510 PRINT #9%,TAB(Q%+35%); 1520 F$="######.## ######.## *#####.## * ######.## ######.##" 1530 F$=F$+" ######.## *" 1540 PRINT #9%,USING F$,P9/F2,H7/F2,O7/F2,A7/F2,-T7/F2,P7/F2 1550 PRINT #9%,CHR$(128%+1%) 1560 J%(K0%)=I4%-K1% 1580 CLOSE 1%,2%,3%,4%,6%,9% 1590 PRINT "SUMMARY COMPLETE":PRINT "CHAIN TO PRRDED":CHAIN "DT0:PRRDED.BAS" 3000 ! HEADING ROUTINE 3010 PRINT #9%,TAB(Q%);"SCHOOL DISTRICT 91";TAB(Q%+34%);"PAYROLL SUMMARY"; 3020 PRINT #9%,TAB(Q%+62%);D6$,TAB(Q%+113%);"PAGE";P%:P%=P%+K1%:PRINT #9% 3030 PRINT #9%,TAB(Q%+K1%);"EMPLOYEE NAME";TAB(Q%+28%); 3040 PRINT #9%,"EMPLOYEE";TAB(Q%+38%);"SALARY";TAB(Q%+47%);"RATE";TAB(Q%+53%); 3050 PRINT #9%,"TOTAL";TAB(Q%+65%);"O/T";TAB(Q%+73%);"ADJUSTMENT";TAB(Q%+91%); 3060 PRINT #9%,"TSA";TAB(Q%+103%);"TOTAL";TAB(Q%+112%);"DATE"; 3070 PRINT #9%,TAB(Q%+118%);"NO";TAB(Q%+124%);"FICA" 3075 PRINT #9%,TAB(Q%+29%);"NUMBER";TAB(Q%+53%); 3080 PRINT #9%,"HOURS";TAB(Q%+64%);"HOURS";TAB(Q%+102%);"AMOUNT"; 3090 PRINT #9%,TAB(Q%+111%);"MO-DY";TAB(Q%+118%);"DEP" 3100 PRINT #9%:P1%=5% 3110 RETURN 3130 P1%=P1%+K1% 3140 PRINT #9%: IF P1%<56% THEN 3160 3150 PRINT #9%,CHR$(128%+1%):GOSUB 3000:RETURN 3160 RETURN 3200 IF P2%<>0% THEN 3230 3210 PRINT #9%,TAB(Q%);N$;TAB(Q%+28%);E1$+E$;TAB(Q%+36%); 3220 P2%=K1%:RETURN 3230 PRINT #9%,TAB(Q%+36%); 3235 RETURN 3240 PRINT #9%,TAB(Q%+111%);D7$;:IF P2%<>K1% THEN 3255 3250 PRINT #9%,TAB(Q%+117%);MID(A$(I%),52%,K1%);MID(A$(I%),50%,2%); 3251 PRINT #9%,MID(A$(I%),25%,12%); 3255 GOSUB 3130 3260 P2%=2% 3270 RETURN 3280 F$="#####.##" ! PRINT TOTALS FOR EMPLOYEE 3290 PRINT #9%,TAB(Q%+36%);: F0=0:IF P3<>F0 THEN PRINT #9%, USING F$,P3/F2; 3292 PRINT #9%,TAB(Q%+51%);: IF H1<>F0 THEN PRINT #9%,USING F$,H1/F2; 3294 PRINT #9%,TAB(Q%+60%);"*"; 3296 PRINT #9%,TAB(Q%+61%);: IF O1<>F0 THEN PRINT #9%,USING F$,O1/F2; 3298 PRINT #9%,TAB(Q%+70%);"*"; 3300 PRINT #9%,TAB(Q%+73%);: IF A8<>F0 THEN PRINT #9%,USING F$,A8/F2; 3302 PRINT #9%,TAB(Q%+88%);: IF T<>F0 THEN PRINT #9%,USING F$,-T/F2; 3304 PRINT #9%,TAB(Q%+100%);: PRINT #9%,USING F$,(P-T)/F2;:PRINT #9%," *"; 3330 GOSUB 3130:GOSUB 3130 3340 P9=P9+P3:H7=H7+H1:O7=O7+O1:A7=A7+A8:T7=T7+T:P7=P7+P-T 3350 RETURN 4000 IF ERR=11% THEN B%=1%:RESUME 610 4010 ON ERROR GOTO 0 4020 E2$=MID(T$,25%,4%):RETURN 4030 E2$=MID(T$,16%,4%):RETURN 4040 STOP 5010 PRINT "UNKNOWN EMP# ";E2$:B%=0%:GOTO 215 5040 PRINT "OVERFLOW - PJR FILE":STOP 5060 PRINT "# OVERFLOW":STOP 5070 PRINT "PRELIST OVERFLOW":STOP 6000 END