REMARK ************************************\ * P/R180.BAS PAYROLL JOURNAL *\ * 3/14/79 11:30 AM *\ ************************************ %INCLUDE CURSOR RESTORE DATA "YTD ","QTD ","CURRENT" DIM S(96),R1(2),R2(5),G2$(5),G3(5),R$(5) GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE MSTRIN 825 A1=110 REMARK **** LINE PRINTER ROUTINE **** IF LINE.COUNT% < 55 THEN RETURN REMARK IF SPACE REMAINS ON REPORT PAGE, RETURN P=P+1 PRINT CHR$(12); PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; REMARK PRINT COMPANY NAME AND REPORT DATE X0=G3(1):GOSUB 680.5 PRINT PRINT TAB(37);"PAYROLL JOURNAL "; X0=G3(2):GOSUB 680.5 REMARK PRINT PERIOD START DATE PRINT " - "; X0=G3(3):GOSUB 680.5 REMARK PRINT PERIOD END DATE PRINT TAB(A1);"PAGE";P PRINT PRINT LINE.COUNT%=6 REMARK RESET LINE COUNTER FOR NEW REPORT PAGE RETURN 4500 PRINT Z0$(I%);TAB(9); REMARK PRINT "YTD", "QTD" OR "CURRENT" SUB-HEADING A3%=24*I% REMARK SET TOTALS POINTER RETURN 5300 PRINT TAB(13);"REG HRS REG PAY O.T. HRS O.T. PAY"; REMARK PRINT HEADINGS FOR INCOME PRINT " P.W. HRS P.W. PAY H&W PAY VAC HRS VAC PAY"; PRINT " OTHER PAY NON-TAX" LINE.COUNT%=LINE.COUNT%+1 RETURN 5310 PRINT TAB(13);"FED W/H ST. W/H F.I.C.A. S.D.I. OTHER "; PRINT "DED TOTAL DED NET PAY TOTAL PAY" LINE.COUNT%=LINE.COUNT%+1 RETURN 6000 A$="VAC HOURS ######.## MON HRS ######.## MON PAY #######.##" REMARK SET UP PRINT MASKS B$=" #######.##" C$="######" D$=" ####.####" E$="EMPLOYEE TYPE ## FED-EX ## CHECK NO. ######" E$=E$+" H&W RATE ####.####" F$="EMP. CLASS ## ST-EX ## CHECK DATE " G$=" MON HOURS ####.####" H$="INS. CLASS ## ADD-EX ## VAC HOURS ######.##" H$=H$+" MON PAY ####.####" OPEN "P/R0F110.DAT" RECL 1150 AS 1 REMARK OPEN PAYROLL MASTER FILE Y9=2 OPEN "G/I0F010.DAT" RECL 200 AS Y9 GOSUB 700 REMARK READ GENERAL INFORMATION FILE 6010 CONSOLE PRINT CLEAR.SCREEN$;"P/R JOURNAL"; REMARK DISPLAY PROGRAM I.D. AND ENTRY MASK X1=256:GOSUB 210 PRINT "START EMPLOYEE NUMBER" PRINT "END EMPLOYEE NUMBER" PRINT "1. HEADING" PRINT "2. CURRENT" PRINT "3. QUARTERLY" PRINT "4. YEARLY" PRINT "5. COMPANY TOTALS" 6015 PRINT PRINT "FOR OPTIONS 1-5 --> 1=INCLUDE; 0=EXCLUDE" DIM E(2,3),O%(6),A(19,3),A2(3),Z0$(3) REMARK INITIALIZE REPORT ARRAYS TO ZERO 6020 X1=279:X2=3:X3=0:X4=999:GOSUB 345 REMARK ENTER START EMPLOYEE NUMBER FOR REPORT IF X0=0 THEN\ REMARK OF START EMPLOYEE NUMBER WAS ZERO, PRINT CLEAR.SCREEN$;"P/R JOURNAL LOADING MENU":\ REMARK DISPLAY PROGRAM EXIT MESSAGE CHAIN "P/R000" REMARK AND LOAD THE MENU E(1,1)=X0 X1=343:X2=3:X3=X0:X4=999:GOSUB 345 REMARK ENTER ENDING EMPLOYEE NUMBER E(2,1)=X0 FOR I%=1 TO 5 X1=343 + I% * 64 X2=1:X3=0:X4=1:GOSUB 345 REMARK SET REPORT PARAMETERS O%(I%)=X0 NEXT I% X2$="ENTRY CORRECT?":X2=1:X3=0:X4=1:GOSUB 665 REMARK VERIFY ENTRY: '1'=O.K.; '0'=RETRY IF E(2,1) > MSTR.RECORDS THEN E(2,1)=MSTR.RECORDS IF E(1,1) > MSTR.RECORDS OR X0 <> 1 THEN GOTO 6020 REMARK RE-ENTER IF REQUESTED OR IF \ REMARK A BAD EMPLOYEE RANGE WAS ENTERED RESTORE FOR I%=1 TO 3 READ Z0$(I%) REMARK READ DATA FROM STATEMENT 10 NEXT I% 6133 LPRINTER REMARK SELECT PRINTER AS OUTPUT DEVICE LINE.COUNT%=70:GOSUB 825 REMARK PRINT REPORT HEADINGS B=O%(1)*3+2*(O%(2)+O%(3)+O%(4))+4*SGN(O%(2)+O%(3)+O%(4))+2 REMARK SET PRINT OPTION VARIABLE FOR R%=E(1,1) TO E(2,1) REMARK PRINT FOR EMPLOYEE RANGE ENTERED X0=R%:GOSUB 745 REMARK READ THE EMPLOYEE RECORD IF S(1)=0 THEN GOTO 6564 REMARK SKIP EMPLOYEE RECORD IF IT HAS BEEN DELETED 6305 IF B=2 THEN 6560 IF S(83)=0 AND R2(1)=99 THEN GOTO 6563 REMARK DO NOT PRINT INACTIVE EMPLOYEES 6310 GOSUB 825 REMARK CHECK FOR END OF REPORT PAGE PRINT " EMP NO. "; PRINT USING C$;S(1); REMARK PRINT EMPLOEE NUMBER PRINT " NAME: ";R$(1);TAB(49);"SS # "; X0=R1(1):GOSUB 760.5 REMARK "" EMPLYEE NAME AND SOCIAL SECURITY NUMBER IF O%(1)=0 THEN 6435 6375 PRINT " STATUS ";R3$;" DATE/EMP "; REMARK "" EMPLOYEE STATUS AND DATE EMPLOYED X0=S(2):GOSUB 680.5 PRINT " PAY RATE "; PRINT USING D$;S(8) REMARK "" PAY RATE LINE.COUNT%=LINE.COUNT% + 1:GOSUB 825 PRINT TAB(16);" ADDR: ";R$(2);TAB(49); REMARK "" ADDRESS PRINT USING E$;R2(1),R2(2),S(5),S(9) REMARK "" EMPLOYEE TYPE, FEDERAL EXEMPTIONS,\ LAST CHECK NUMBER AND H&W RATE LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 REMARK CHECK FOR END OF REPORT PAGE PRINT TAB(23);R$(3);TAB(49); REMARK "" EMPLOYEE ADDRESS LINE 2 PRINT USING F$;R2(5),R2(3); REMARK "" EMPLOYEE CLASS AND STATE EXEMPTIONS X0=S(4):GOSUB 680.5 REMARK "" LAST CHECK DATE 6420 PRINT USING G$;S(6) REMARK "" MONTHLY HOURS LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 PRINT TAB(23);R$(4);TAB(49); REMARK "" ADDRESS LINE 3 PRINT USING H$;S(3),R2(4),S(14),S(7) REMARK "" INS. CLASS, ADDITIONAL EXEMPTIONS,\ "" VACATION HOURS LEFT AND MONTHLY PAY 6435 PRINT REMARK PRINT CURRENT, Q-T-D OR Y-T-D EMPLOYEE DATA LINE.COUNT%=LINE.COUNT%+2 GOSUB 825 REMARK CHECK FOR END OF REPORT PAGE IF O%(2)+O%(3)+O%(4)=0 THEN 6560 REMARK SKIP PRINTING IF NOT SPECIFIED GOSUB 5300 REMARK PRINT HEADINGS FOR EMPLOYEE DATA I1%=1 FOR I%=3 TO 1 STEP -1 I1%=I1%+1 IF O%(I1%)=0 THEN 6440 REMARK IF NOT SPECIFIED, SKIP PRINTING GOSUB 4500 REMARK PRINT APPROPRIATE SUB-HEADING PRINT USING B$;S(A3%+1);S(A3%+2);S(A3%+3);\ REMARK PRINT ITEMIZED PAY INFORMATION S(A3%+4);S(A3%+5);S(A3%+6);S(A3%+7);\ S(A3%+8);S(A3%+9);S(A3%+10);S(A3%+12) LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 6440 NEXT I% PRINT LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 GOSUB 5310 REMARK PRINT DEDUCTION HEADING I1%=1 FOR I%=3 TO 1 STEP -1 I1%=I1%+1 IF O%(I1%)=0 THEN 6445 REMARK IF NOT SPECIFIED, SKIP PRINTING GOSUB 4500 REMARK PRINT APPROPRIATE SUB-HEADING PRINT USING B$;S(A3%+13);S(A3%+14);S(A3%+15);\ REMARK PRINT DEDUCTION DETAIL S(A3%+16);S(A3%+17);S(A3%+18);S(A3%+11)-S(A3%+18);S(A3%+11) LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 6445 NEXT I% PRINT 6560 LINE.COUNT%=LINE.COUNT%+1:GOSUB 825 REMARK ADD EMPLOYEE INFORMATION TO COMPANY TOTALS 6563 IF O%(5)+O%(6)=0 THEN 6564 FOR I%=1 TO 3 FOR J%=1 TO 18 A1%=I%*24+J% A(J%,I%)=A(J%,I%)+S(A1%) REMARK ADD EMPLOYEE DETAIL TO REPORT TOTAL NEXT J% NEXT I% FOR I%=2 TO 3 A2(I%)=A2(I%)+S(I%+4) NEXT I% A2(1)=A2(1)+S(14) GOTO 6564 6564 NEXT R% 6565 IF O%(5)=0 THEN 6010 6578 IF A(11,1)+A(18,1)+A(11,2)+A(18,2)+A(11,3)+A(18,3)=0 THEN 6010 REMARK PRINT COMPANY TOTALS G2$(2)=G2$(1) G2$(1)="COMPANY TOTALS" LINE.COUNT%=60 GOSUB 825 PRINT TAB(49); PRINT USING A$;A2(1),A2(2),A2(3) REMARK TOTAL VACATION HOURS, M-T-D HOURS AND PAY PRINT 6600 GOSUB 5300 REMARK PRINT TOTAL PAY INFORMATION FOR I%=3 TO 1 STEP -1 GOSUB 4500 PRINT USING B$;A(1,I%);A(2,I%);A(3,I%);A(4,I%);\ A(5,I%);A(6,I%);A(7,I%);A(8,I%);A(9,I%);A(10,I%);A(12,I%) REMARK PRINT CURRENT, Q-T-D AND Y-T-D TOTALS NEXT I% PRINT 6635 GOSUB 5310 REMARK PRINT TOTAL DEDUCTION INFORMATION FOR I%=3 TO 1 STEP -1 GOSUB 4500 PRINT USING B$;A(13,I%);A(14,I%);A(15,I%);\ REMARK PRINT CURRENT, Q-T-D AND Y-T-D TOTALS A(16,I%);A(17,I%);A(18,I%);A(11,I%)-A(18,I%);A(11,I%) NEXT I% PRINT G2$(1)=G2$(2) GOTO 6010 REMARK BRANCH PREPARE FOR ANOTHER RUN