home *** CD-ROM | disk | FTP | other *** search
- REMARK ************************************\
- * P/R090.BAS PAYROLL ACCUMULATE *\
- * 5/16/79 1:30 PM *\
- ************************************
-
- %INCLUDE CURSOR
-
- DIM S(96),R1(2),T2(8),R$(5),G2$(5),G3(5),B1(5),E$(3),R2(5)
-
- DEF FNR(Z)=INT(Z*100+.5)/100 REMARK ROUNDING FUNCTION
-
- GOTO 6000
- %INCLUDE SUBS1
- %INCLUDE GENINFO
- %INCLUDE MSTRIN
- %INCLUDE MSTROUT
-
-
- 825 A1=39 REMARK **** LINE PRINTER ROUTINE ****
-
- IF LINE.COUNT% <55 THEN RETURN REMARK IF SPACE REMAINS ON REPORT PAGE, RETURN
- PRINT CHR$(0CH);
- P=P+1
- 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((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";P REMARK PRINT REPORT TITLE, PAGE NUMBER AND HEADINGS
- PRINT " EMPLOYEE PAY TYPE ERROR DESCRIPTION"
- PRINT
- LINE.COUNT%=5 REMARK RESET LINE COUNTER FOR NEW REPORT PAGE
- RETURN
-
-
-
- 843 REMARK ************* READ DEDUCTION RECORD ************
- IF D4 > 9 THEN GOSUB 850
- X0.0=X0.0+1
- READ #Y3,X0.0;D1,D2,D3,D4,D1$,D5,D6
- RETURN
- 850 REMARK ************ WRITE DEDUCTION RECORD ************
- PRINT #Y3,X0.0;D1,D2,D3,D4,D1$,D5,D6
- RETURN
- 873 REMARK ********** SAVE TRANSACTION SUMMARY RECORD *********
-
- IF B1(1) >= E1 AND B1(1) <= E2 AND B1(3) < 9 THEN B1(3)=B1(3)+10
- PRINT #Y5,X0.1;B1(1),B1(2),B1(3),B1(4),B1(5)
- RETURN
-
- 875 REMARK ********** READ TRANSACTION SUMMARY RECORD *********
-
- IF B1(1)>0 THEN GOSUB 873
- X0.1=X0.1+1
- READ #Y5,X0.1;B1(1),B1(2),B1(3),B1(4),B1(5)
- RETURN
-
- 876 B1(1)=9000000000:RETURN
-
- 4003 IF S(1) > 0 AND S(1) = Z THEN RETURN REMARK IF EMPLOYEE NUMBER HAS NOT CHANGED, RETURN
- IF S(1) > 0 THEN GOSUB 4600 REMARK SAVE CALCULATED EMPLOYEE RECORD
-
- X0=Z:GOSUB 745 REMARK GET NEXT EMPLOYEE MASTER RECORD
-
-
- IF Z <> S(1) THEN\
- Z0=1:GOSUB 4050:\ REMARK IF EMPLOYEE RECORD NOT FOUND, PRINT ERROR DATA
- S(1)=0:RETURN
-
- IF S(4)=0 THEN RETURN REMARK IF THIS EMPLOYEE'S SALARY HAS ALREADY BEEN\
- ACCUMULATED (CHECK DATE=0), SKIP PROCESSING
-
- 4045 IF R2(1) <> 99 THEN\ REMARK INITIALIZE CURRENT EMPLOYEE FIELDS
- S(4)=0:\
- S(5)=0:\ BEFORE ACCUMULATING PAYROLL FOR EMPLOYEE
- FOR I%=73 TO 90:\
- S(I%)=0:\
- NEXT I%:\
- RETURN
-
-
- 4050 LPRINTER REMARK PRINT ERROR DETAIL ON LINE PRINTER
-
- X4$="TRANSACTION ERROR REPORT"
- GOSUB 825 REMARK PRINT REPORT HEADINGS-CHECK FOR END OF PAGE
-
- PRINT USING MASKA$;Z,Z1,E$(Z0) REMARK PRINT EMPLOYEE NUMBER, PAY TYPE AND ERROR
-
- LINE.COUNT%=LINE.COUNT%+1
- CONSOLE REMARK SELECT CRT AS OUTPUT DEVICE
- RETURN
-
-
- 4600 IF R2(1) <> 1 THEN S(76)=FNR(S(75)*S(8)/80*G3.0) REMARK PAY SALARIED EMPLOYEE OVERTIME BY ESTIMATING\
- HOURLY RATE (BASED ON AN 80-HOUR PAYROLL PERIOD)
-
-
- IF R2(1) = 1 THEN S(74)=FNR(S(73)*S(8)):\ REMARK CALCULATE REGULAR PAY FOR HOURLY EMPLOYEE
- S(76)=FNR(S(75)*S(8)*G3.0) REMARK CALCULATE OVERTIME "" "" "" "" ""
-
- X0=S(1)
- GOSUB 750 REMARK RESAVE EMPLOYEE RECORD ON DISK
- RETURN
-
-
- 5300 GOSUB 843 REMARK READ NEXT DEDUCTION RECORD
-
- IF D1 > E2 THEN D1=9000000000:RETURN REMARK IF PAST EMPLOYEE RANGE, REJECT RECORD
-
- IF D1 < E1\ REMARK IF RECORD IS BELOW ACCUMULATE RANGE
- OR\
- D2 <> 1\ OR RECORD IS NOT MISCELLANEOUS PAY
- OR\
- D4 > 9\ OR RECORD HAS BEEN USED
- OR\
- D4 = 3\ OR FREQUENCY CODE INDICATES 'NOT THIS TIME',
- OR\
- D4 = 4\
- THEN GOTO 5300 REMARK THEN READ NEXT DEDUCTION/MISC. PAY RECORD
-
- IF D4=5 AND G3(4) <> 1 THEN GOTO 5300 REMARK SKIP THIS RECORD IF FREQUENCY AND \
- PAYROLL NUMBER ARE INCOMPATIBLE
-
- D4=D4+10:RETURN REMARK IF MARK RECORD 'USED' AND USE IT
-
-
- 5350 GOSUB 875 REMARK READ THE NEXT PAYROLL SUMMARY RECORD
-
- IF B1(1) < E1 OR B1(3) > 9 THEN GOTO 5350 REMARK IF RECORD IS USED OR BELOW RANGE, REJECT IT\
- AND GET THE NEXT SUMMARY RECORD
-
- IF B1(1) > E2 THEN B1(1)=9000000000 REMARK IF BEYOND RANGE, SET FLAG AND RETURN
- RETURN
-
-
-
- 5400 S(82)=S(82)+D6 REMARK ADD MISCELLANEOUS INCOME AMOUNT TO OTHER PAY
- IF D3 = 0 THEN S(84)=S(84)+D6 REMARK ADD TO NON-TAXABLE PAY IF APPLICABLE
-
- GOSUB 5300 REMARK READ NEXT MISCELLANEOUS PAY RECORD
- RETURN
-
-
- 5600 IF B1(3) = 6 THEN GOSUB 5350:RETURN REMARK IGNORE COMP-TIME TRANSACTIONS
- ON B1(3)+1\
- GOSUB 5610,\ REMARK IF PAY TYPE=0, PAY EMPLOYEE FLAT SALARY
- 5620,\ REMARK " " " " " 1, ADD TO EMPLOYEE REGULAR HOURS
- 5660,\ " " " " " 2, CALCULATE VACATION PAY
- 5720,\ " " " " " 3, ACCUMULATE HOLIDAY HOURS
- 5700,\ " " " " " 4, CALCULATE PIECEWORK PAY
- 5720 REMARK " " " " " 5, ACCUMULATE OVERTIME HOURS
-
-
- GOSUB 5350 REMARK GET THE NEXT SUMMARY RECORD
- RETURN
-
-
- 5610 IF R2(1) <> 1 THEN S(74)=S(8):RETURN
- IF S(1) > 0 THEN Z=S(1):Z0=2:Z1=B1(3):GOSUB 4050 REMARK PRINT INVALID PAY TYPE ERROR MESSAGE\
- IF EMPLOYEE TYPE IS INCOMPATIBLE
- RETURN
-
-
-
- 5620 S(73)=S(73)+B1(4) REMARK ACCUMULATE REGULAR HOURS
- RETURN
-
-
- 5660 IF R2(1)=1 THEN S(81)=S(81)+B1(5):RETURN REMARK IF HOURLY EMPLOYEE, ADD UP VACATION PAY
-
- IF S(1)=0 THEN RETURN
- S(14)=S(14)-B1(4) REMARK SUBTRACT VACATION HOURS FROM REMAINING
-
- IF S(14) < 0 THEN \
- Z=S(1):Z0=3:Z1=B1(3):GOSUB 4050:\ REMARK IF INSUFFICIENT VACATION HOURS, PRINT ERROR
- S(14)=0
-
- 5680 S(80)=S(80)+B1(4) REMARK ADD TO CURRENT VACATION HOURS TAKEN
- RETURN
-
-
- 5700 S(77)=S(77)+B1(4) REMARK ACCUMULATE PIECEWORK HOURS AND PAY
- S(78)=S(78)+B1(5)
- RETURN
-
-
- 5720 S(75)=S(75)+B1(4) REMARK ACCUMULATE OVERTIME/HOLIDAY HOURS
- RETURN
-
-
-
- 6000 Y3=3:Y9=10
- Y5=4
- LINE.COUNT%=60
- MASKA$=" ###### ## /##################/"
- OPEN "P/R0F110.DAT" RECL 1150 AS 1 REMARK OPEN EMPLOYEE MASTER FILE
- 6005 PRINT CLEAR.SCREEN$;"P/R ACCUMULATE" REMARK DISPLAY PROGRAM I.D. AND ENTRY MASK ON CRT
- PRINT "ENTER START EMPLOYEE OF ZERO TO EXIT"
- PRINT
- PRINT
- PRINT "START EMPLOYEE NUMBER"
- PRINT "END EMPLOYEE NUMBER"
-
-
- X1=279:X2=3:X3=0:X4=999:GOSUB 345 REMARK ENTER START EMPLOYEE NUMBER
-
- IF X0=0\ REMARK IF START EMPLOYEE NUMBER IS ZERO, ABORT
- THEN\
- X2$="PROGRAM ABORTED":GOSUB 615:\
- GOTO 6700
-
- E1=X0
-
- X1=343:X2=3:X3=E1:X4=999:GOSUB 345 REMARK ENTER END EMPLOYEE
- E2=X0
-
- X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 REMARK VERIFY ENTRY: '1'=O.K.; '0'=RETRY
- IF X0 <> 1 THEN GOTO 6005
-
- OPEN "P/R0F030.DAT" RECL 38 AS Y3 REMARK OPEN DEDUCTION/MISCELLANEOUS PAY FILE
-
- OPEN "P/R0F050.DAT" RECL 30 AS Y5 REMARK OPEN PAYROLL SUMMARY FILE
- IF END #Y5 THEN 876
- OPEN "G/I0F010.DAT" RECL 200 AS Y9 REMARK OPEN AND READ GENERAL INFORMATION FILE
- GOSUB 700
-
- IF E2 > MSTR.RECORDS THEN E2 = MSTR.RECORDS
-
- 6105 E$(1)="NOT FOUND/RELEASED" REMARK SET ACCUMULATE ERROR DESCRIPTIONS
- E$(2)="INVALID PAY TYPE"
- E$(3)="INSUFFICIENT HOURS"
-
- GOSUB 5300 REMARK GET FIRST DEDUCTION AND PAYROLL SUMMARY RECORDS
- GOSUB 5350
-
-
- 6200 IF D1 < B1(1) THEN\ REMARK PROCESS MISCELLANEOUS INCOME RECORD
- Z=D1:\ IF IT IS LOWER THAN SUMMARY RECORD
- Z1=D2:\
- GOSUB 4003:\
- GOSUB 5400:\
- GOTO 6200
-
-
- IF B1(1) < D1 THEN\ REMARK IF SUMMARY RECORD IS LOWER, PROCESS IT
- Z=B1(1):\
- Z1=B1(3):\
- GOSUB 4003:\
- GOSUB 5600:\
- GOTO 6200
-
-
-
- IF D1=9000000000 THEN 6600 REMARK TERMINATE PROCESSING IF END OF BOTH FILES
-
-
- Z=B1(1) REMARK IF DEDUCTION RECORD EQUALS SUMMARY RECORD,\
- PROCESS BOTH
- Z1=B1(3)
- GOSUB 4003
- GOSUB 5400
- GOSUB 5600
- GOTO 6200
-
- 6600 IF S(1) <> 0 THEN GOSUB 4600 REMARK SAVE LAST ACCUMULATED EMPLOYEE RECORD
-
-
- 6700 PRINT CLEAR.SCREEN$;"P/R ACCUMULATE LOADING MENU" REMARK END PROGRAM HERE
- CHAIN "P/R000"
-