home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG045.ARK
/
P_R180.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
8KB
|
196 lines
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