10 ! PRINT THE PAYROLL CHECKS 11 ! PROGRAM NAME: PRRCW BY CWR 12 ! D3$(0%) IS THE DATE 13 INPUT "BEGINNING CHECK # ";N:INPUT "EMP# IF RESTART";E5$ 14 ON ERROR GOTO 725 15 OPEN "LP:" FOR OUTPUT AS FILE 4%,MODE(42%) 20 OPEN "DK1:PAYROL.MST" AS FILE 1% 30 OPEN "DK1:PAYROL.MDR" AS FILE 2% 40 OPEN "DK1:PAYROL.CHK" AS FILE 3% 50 DIM #1,A$(1500%)=128%,A%(0%): Z%=A%(0%) 60 DIM #2,M$(1500%)=128%,M%(0%),D3$(0%)=8% 70 DIM #3%,C$(1000%)=64%,C%(0%):I3%=C%(0%) 85 PRINT #4% CHR$(131%):Q%=4% 90 OPEN "DK1:PAYROL.DED" AS FILE 5% 100 DIM #5,D$(30%)=32%,D%(0%):D2%=D%(0%) 120 OPEN "DK1:PAYROL.RCP" AS FILE 6% 130 DIM #6,R$(1000%)=64%,R%(0%):I6%=R%(0%) 131 DEF FNC$(C9,C9%) 132 C8$=NUM$(C9) 133 IF ABS(C9)<1E+6 THEN C9$=LEFT(C8$,LEN(C8$)-1%): GO TO 137 134 C8=FIX(C9/1E+6): C7=((C9/1E+6)-C8)*1E+6:C9$=RIGHT(NUM$(C7),2%): C8$=NUM$(C8) 135 IF LEN(C9$)<7% THEN C9$="0"+C9$:GO TO 135 136 C9$=LEFT(C8$,INSTR(2%,C8$," ")-1%)+C9$ 137 IF C9>=0% THEN C9$=RIGHT(C9$,2%) 138 C9$=C9$+SPACE$(C9%-LEN(C9$)): IF LEN(C9$)<>C9% THEN PRINT "NUMBER OVERFLOW" 139 FNC$=C9$:FNEND 140 I1%=0%:E9=0:GOTO 143 IF E5$="":E9=CVT$F(C$(0%)) 141 GOTO 142 IF I3%=0%:IF MID(C$(I3%),32%,4%)>=E5$ THEN E9=E9+ VAL(MID(C$(I3%),36%,8%)):I3%=I3%-1%:GOTO 141 142 PRINT USING "RESTART CHECK INDEX=#### NET=###,####.##",I3%,E9/100% 143 FOR I%=1% TO Z% 144 IF MID(M$(I%),47%,1%)="N" OR E5$>MID(A$(I%),39%,4%) THEN 640 146 F8$="###.## ####.##\ \###.## ######.## #####.##" 150 E=VAL(MID(M$(I%),1%,8%)):J=VAL(MID(M$(I%),9%,7%)) 160 F=VAL(MID(M$(I%),16%,7%)):S=VAL(MID(M$(I%),24%,7%)) 170 F1=VAL(MID(M$(I%),30%,7%)):H=VAL(MID(M$(I%),37%,5%)) 180 P=VAL(MID(M$(I%),51%,6%)):T=0 185 J2%=0:J3%=1% 190 FOR J%=1% TO VAL(MID(M$(I%),48%,1%)) 200 D3%=VAL(MID(M$(I%),49%+(J%*8%),2%)) 210 IF D3%<41% OR D3%>59% THEN 230 215 J2%=J2%+1%:IF J2%>3% THEN PRINT "TOO MANY TSA`S":GOTO 725 220 T1(J2%)=VAL(MID(M$(I%),51%+(J%*8%),6%)) 224 D1$(J2%)=MID(M$(I%),J%*8%+49%,2%) 226 T=T+T1(J2%) 230 NEXT J% 231 IF J2%=0% THEN D1$(J3%)=" ": T1(J3%)=0%:GO TO 238 232 FOR J%=1% TO J2% 233 FOR J1%=1% TO D2% 234 IF D1$(J%)=MID(D$(J1%),1%,2%) THEN D1$(J%)=MID(D$(J1%),7%,3%): GO TO 237 235 NEXT J1% 236 D1$(J%)="OTH" 237 NEXT J% 238 IF J2%<2% THEN PRINT #4%:GOTO 240 239 PRINT #4%,TAB(Q%+44%);:PRINT #4% USING "\ \###.##",D1$(J3%),T1(J3%)/100:J3%=2% 240 PRINT #4%,TAB(Q%+2%);LEFT(A$(I%),24%);TAB(Q%+29%); 241 PRINT #4%,USING F8$,H/100,(E-J)/100,D1$(J3%),T1(J3%)/100,J/100,(E-T)/100 242 IF J2%<>3% THEN 250 244 PRINT #4%,TAB(Q%+44%);:PRINT #4%,USING "\ \###.##",D1$(J2%),T1(J2%)/100; 250 PRINT #4% FOR J%=1% TO 3% 260 PRINT #4%,TAB(Q%+2%),MID(A$(I%),26%,11%),TAB(Q%+29%); 270 F8$="####.## ####.## ###.## \\"+SPACE$(10%)+"####.##" 280 PRINT #4%,USING F8$,F/100,S/100,F1/100,MID(A$(I%),50%,2%),(E-T-F-S-F1)/100 290 PRINT #4% FOR J%=1% TO 2% 300 Q1%=2%:D1=0:D8%=VAL(MID(M$(I%),48%,1%)) 305 IF VAL(MID(M$(I%),51%,6%))=0 THEN J9%=1% ELSE J9%=0% 310 FOR J%=J9% TO D8% 320 D1$=MID(M$(I%),J%*8%+49%,2%) 325 IF D1$=" " THEN 440 327 IF D1$<"41" OR D1$>"59" THEN 330 ELSE 440 330 FOR J1%=1% TO D2% 340 IF D1$=MID(D$(J1%),1%,2%) THEN D1$=MID(D$(J1%),3%,22%):GOTO 370 350 NEXT J1% 360 D1$="OTHER" 370 PRINT #4%,TAB(Q%+Q1%);D1$;TAB(Q%+Q1%+27%);:D=VAL(MID(M$(I%),J%*8%+51%,6%)) 380 PRINT #4%,USING "#####.##",D/100%;:D1=D1+D 390 IF Q1%=2% THEN 400 ELSE 420 400 Q1%=38% 410 GOTO 440 420 Q1%=2% 430 PRINT #4 440 NEXT J% 445 N8=E-T-F-S-F1-D1 !NET EARNINGS 450 PRINT #4%,TAB(Q%+38%);"TOTAL DEDUCTIONS";TAB(Q%+65%); 460 PRINT #4%,USING "#####.##",D1/100% 470 PRINT #4%,CHR$(146%) 480 PRINT #4%,TAB(Q%+2%);MID(A$(I%),37%,6%);TAB(Q%+34%);D3$(0%);TAB(Q%+45%); 490 PRINT #4%,USING "#####"+SPACE$(16%),N; 500 PRINT #4%,USING "####.##",N8/100 510 PRINT #4% FOR J%=1% TO 9% 514 N8$=RIGHT(NUM$(N8-FIX(N8/100%)*100%),2%):IF LEN(N8$)=2% THEN N8$="0"+N8$ 515 PRINT #4%,USING " EXACTLY **######## DOLLARS AND \\ CENTS",FIX(N8/100%),N8$; 520 PRINT #4%,TAB(Q%+48%);D3$(0%);TAB(Q%+64%); 530 PRINT #4%,USING "$$####.##",N8/100 550 PRINT #4% FOR J%=1% TO 4% 560 PRINT #4%,TAB(Q%+7%);MID(A$(I%),1%,24%) 570 PRINT #4%,TAB(Q%+7%);MID(A$(I%),70%,24%) 580 PRINT #4%,TAB(Q%+1%);MID(A$(I%),54%,3%); 590 PRINT #4%,TAB(Q%+7%);MID(A$(I%),94%,16%);MID(A$(I%),110%,6%) 600 PRINT #4% FOR J%=1% TO 9% 610 IF I3%>999% THEN 700 620 C$=D3$(0%)+MID(A$(I%),1%,21%)+MID(A$(I%),37%,6%)+FNC$(-N8,8%)+FNC$(N,5%) 630 C$(I3%+1%)=C$+"0000100000201020":I3%=I3%+1% 635 N=N+1%:E9=E9+N8 640 NEXT I% 650 R$=MID(D3$(0%),1%,2%)+MID(D3$(0%),4%,2%)+"NET PAYROLL "+"0000100000201020" 660 R$=R$+SPACE$(9%)+"53"+"E"+FNC$(-E9,10%) 670 I6%=I6%+1% : IF I6%>1000% THEN 710 680 R$(I6%)=R$ 690 R%(0%)=I6%:C%(0%)=I3% 695 PRINT USING "NET PAYROLL = ##########.##",E9/100 697 CLOSE 1%,2%,3%,4%,5%,6% 698 GOTO 730 700 PRINT "OVERFLOW IN CHECK FILE":GOTO 725 710 PRINT "OVERFLOW IN RECAP FILE":GOTO 725 720 PRINT "NUMBER OVERFLOW":GOTO 725 725 PRINT "SUBSCRIPT ";I3%;" ";C$(I3%) 726 C%(0%)=I3%:C$(0%)=CVTF$(E9):CLOSE 1%,2%,3%,4%,5%,6% 727 ON ERROR GOTO 0 730 END