1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. PAYROLL-CALC.
3
4 DATA DIVISION.
5 WORKING-STORAGE SECTION.
6 01 WS-EMPLOYEE.
7 05 EMP-ID PIC 9(6).
8 05 EMP-NAME PIC X(30).
9 05 EMP-HOURS PIC 9(3)V9.
10 05 EMP-RATE PIC 9(4)V99.
11 05 EMP-DEPARTMENT PIC X(10).
12
13 01 WS-PAYROLL.
14 05 REGULAR-PAY PIC 9(7)V99.
15 05 OVERTIME-PAY PIC 9(7)V99.
16 05 GROSS-PAY PIC 9(7)V99.
17 05 TAX-AMOUNT PIC 9(7)V99.
18 05 NET-PAY PIC 9(7)V99.
19
20 01 WS-TOTALS.
21 05 TOTAL-GROSS PIC 9(9)V99 VALUE 0.
22 05 TOTAL-TAX PIC 9(9)V99 VALUE 0.
23 05 TOTAL-NET PIC 9(9)V99 VALUE 0.
24 05 EMPLOYEE-COUNT PIC 9(5) VALUE 0.
25
26 01 WS-TAX-BRACKETS.
27 05 BRACKET-1-LIMIT PIC 9(7)V99 VALUE 50000.00.
28 05 BRACKET-1-RATE PIC V99 VALUE .15.
29 05 BRACKET-2-LIMIT PIC 9(7)V99 VALUE 100000.00.
30 05 BRACKET-2-RATE PIC V99 VALUE .25.
31 05 BRACKET-3-RATE PIC V99 VALUE .35.
32
33 PROCEDURE DIVISION.
34 MAIN-PARA.
35 PERFORM CALCULATE-PAY
36 PERFORM CALCULATE-TAX
37 PERFORM UPDATE-TOTALS
38 STOP RUN.
39
40 CALCULATE-PAY.
41 IF EMP-HOURS > 40
42 COMPUTE REGULAR-PAY =
43 40 * EMP-RATE
44 COMPUTE OVERTIME-PAY =
45 (EMP-HOURS - 40) * EMP-RATE * 1.5
46 ELSE
47 COMPUTE REGULAR-PAY =
48 EMP-HOURS * EMP-RATE
49 MOVE 0 TO OVERTIME-PAY
50 END-IF
51 ADD REGULAR-PAY TO OVERTIME-PAY
52 GIVING GROSS-PAY.
53
54 CALCULATE-TAX.
55 EVALUATE TRUE
56 WHEN GROSS-PAY <= BRACKET-1-LIMIT
57 COMPUTE TAX-AMOUNT =
58 GROSS-PAY * BRACKET-1-RATE
59 WHEN GROSS-PAY <= BRACKET-2-LIMIT
60 COMPUTE TAX-AMOUNT =
61 GROSS-PAY * BRACKET-2-RATE
62 WHEN OTHER
63 COMPUTE TAX-AMOUNT =
64 GROSS-PAY * BRACKET-3-RATE
65 END-EVALUATE
66 SUBTRACT TAX-AMOUNT FROM GROSS-PAY
67 GIVING NET-PAY.
68
69 UPDATE-TOTALS.
70 ADD GROSS-PAY TO TOTAL-GROSS
71 ADD TAX-AMOUNT TO TOTAL-TAX
72 ADD NET-PAY TO TOTAL-NET
73 ADD 1 TO EMPLOYEE-COUNT.