IDENTIFICATION DIVISION. PROGRAM-ID. HW07RG. AUTHOR. RACHEL GRAHAM. DATE-WRITTEN. 02-17-2019. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 9(02)V99. 05 PAY-RATE PIC 9(02)V99. 05 EMP-PAY-TYPE PIC X(01). 88 HOURLY VALUE 'H'. 88 SALARY VALUE 'S'. 05 EMP-POSITION PIC X(01). 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC 9(04)V99. 05 EMP-OVERTIME-HOURS-OUT PIC 9(02). 05 EMP-OVERTIME-OUT PIC 9(04)V99. 05 EMP-TAXES-OUT PIC 9(04)V99. 05 EMP-NET-OUT PIC 9(04)V99. 01 DISPLAY-FORMATTING. 05 PRINT-PAY-RATE PIC ZZZZ,ZZ9.99. 05 PRINT-GROSS-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-NET-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-TAXES PIC ZZZZ,ZZ9.99. 05 PRINT-OVERTIME-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-OVERTIME-HOURS PIC ZZZZZ,ZZ9.99. 05 PRINT-HOURS-WORKED PIC ZZZZZ,ZZ9.99. 05 PRINT-PROGRAM-GROSS PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-NET-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-TAXES PIC ZZZZ,ZZ9.99. 05 PRINT-AVERAGE-GROSS PIC ZZZZ,ZZ9.99. 05 PRINT-AVERAGE-NET PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-OVERTIME-PAY PIC ZZZZ,ZZ9.99. 05 PRINT-PROGRAM-HOURS PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-OVERTIME-HOURS PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-HOURS-WORKED PIC ZZZZZZZZ9.99. 05 PRINT-PROGRAM-RECORD-COUNT PIC ZZZZZZZZZZZ9. 01 EMP-TAX-RATE PIC V99. 01 EMP-OVERTIME-RATE PIC 9(04)V99. 01 EMP-REGULAR-PAY PIC 9(04)V99. 01 EMP-POSITION-TITLE PIC X(18). 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 05 EMP-OVERTIME-HOURS PIC 9(02)V99. 05 EMP-OVERTIME-PAY PIC 9(03)V99. 01 PROGRAM-TOTALS. 05 PROGRAM-GROSS-PAY PIC 9(06)V99. 05 PROGRAM-NET-PAY PIC 9(06)V99. 05 PROGRAM-TAXES PIC 9(06)V99. 05 PROGRAM-RECORD-COUNT PIC 9(02). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(06)V99. 05 PROGRAM-AVERAGE-NET PIC 9(06)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(04)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(06)V99. 01 CURRENT-DATE. 05 CURRENT-YEAR PIC 99. 05 CURRENT-MONTH PIC 99. 05 CURRENT-DAY PIC 99. 01 WS-POSITIONS. 05 WS-PROGRAMMER. 10 WS-PROGRAMMER-CODE PIC X(01) VALUE 'P'. 10 WS-PROGRAMMER-TITLE PIC X(18) VALUE 'PROGRAMMER'. 10 WS-PROGRAMMER-RATE PIC 9(02)V99 VALUE 65.00. 05 WS-ACCOUNTANT. 10 WS-ACCOUNTANT-CODE PIC X(01) VALUE 'A'. 10 WS-ACCOUNTANT-TITLE PIC X(18) VALUE 'ACCOUNTANT'. 10 WS-ACCOUNTANT-RATE PIC 9(02)V99 VALUE 58.00. 05 WS-MANAGER. 10 WS-MANAGER-CODE PIC X(01) VALUE 'M'. 10 WS-MANAGER-TITLE PIC X(18) VALUE 'MANAGER'. 10 WS-MANAGER-RATE PIC 9(02)V99 VALUE 62.00. 05 WS-INTERN. 10 WS-INTERN-CODE PIC X(01) VALUE 'I'. 10 WS-INTERN-TITLE PIC X(18) VALUE 'INTERN'. 10 WS-INTERN-RATE PIC 9(02)V99 VALUE 22.00. 05 WS-TESTER. 10 WS-TESTER-CODE PIC X(01) VALUE 'T'. 10 WS-TESTER-TITLE PIC X(18) VALUE 'TESTER'. 10 WS-TESTER-RATE PIC 9(02)V99 VALUE 22.00. PROCEDURE DIVISION. 0000-DRIVER. PERFORM 0100-INITIALIZE-PROGRAM. PERFORM 1000-PROCESS-PAYROLL-RECORDS UNTIL EMPLOYEE-RECORD-IN = ' '. PERFORM 2000-PROVIDE-FINAL-TOTALS. PERFORM 3000-CLOSE-PROGRAM. GOBACK. 0100-INITIALIZE-PROGRAM. ACCEPT CURRENT-DATE FROM DATE. DISPLAY 'PAYROLL HW07RG FOR RACHEL GRAHAM'. DISPLAY ' PROGRAM BEGINS: ' CURRENT-MONTH '/' CURRENT-DAY '/' CURRENT-YEAR. DISPLAY '--'. MOVE .32 TO EMP-TAX-RATE. PERFORM 1900-ACCEPT-RECORD. 1000-PROCESS-PAYROLL-RECORDS. ADD 1 TO PROGRAM-RECORD-COUNT. PERFORM 1100-DETERMINE-POS-AND-PAY. PERFORM 1200-CALCULATE-PAYROLL. PERFORM 1300-UPDATE-PROGRAM-TOTALS. PERFORM 1400-DISPLAY-PAYROLL. PERFORM 1900-ACCEPT-RECORD. 1100-DETERMINE-POS-AND-PAY. EVALUATE TRUE ALSO TRUE WHEN PROGRAMMER ALSO ANY MOVE WS-PROGRAMMER-RATE TO PAY-RATE WHEN ACCOUNTANT ALSO ANY MOVE WS-ACCOUNTANT-RATE TO PAY-RATE WHEN MANAGER ALSO ANY MOVE WS-MANAGER-RATE TO PAY-RATE WHEN INTERN ALSO ANY MOVE WS-INTERN-RATE TO PAY-RATE WHEN TESTER ALSO ANY MOVE WS-TESTER-RATE TO PAY-RATE WHEN OTHER MOVE 0000 TO PAY-RATE DISPLAY ' POSITION ERROR' END-EVALUATE. EVALUATE TRUE ALSO TRUE WHEN PROGRAMMER ALSO ANY MOVE WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE WHEN ACCOUNTANT ALSO ANY MOVE WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE WHEN MANAGER ALSO ANY MOVE WS-MANAGER-TITLE TO EMP-POSITION-TITLE WHEN INTERN ALSO ANY MOVE WS-INTERN-TITLE TO EMP-POSITION-TITLE WHEN TESTER ALSO ANY MOVE WS-TESTER-TITLE TO EMP-POSITION-TITLE WHEN OTHER MOVE 'UNDEFINED POSITION' TO EMP-POSITION-TITLE END-EVALUATE. 1200-CALCULATE-PAYROLL. IF SALARY THEN COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE MOVE 0.00 TO EMP-OVERTIME-PAY END-IF IF HOURLY THEN COMPUTE EMP-OVERTIME-RATE = PAY-RATE * (1.5) IF HOURS-WORKED > 40 COMPUTE EMP-REGULAR-PAY = 40 * PAY-RATE COMPUTE EMP-OVERTIME-PAY = (HOURS-WORKED - 40) * EMP-OVERTIME-RATE COMPUTE EMP-GROSS-PAY = EMP-REGULAR-PAY + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE MOVE 0.00 TO EMP-OVERTIME-PAY END-IF END-IF IF NOT (HOURLY OR SALARY) THEN COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE END-IF IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40 ELSE MOVE 0.00 TO EMP-OVERTIME-HOURS END-IF COMPUTE EMP-TAXES= EMP-TAX-RATE * EMP-GROSS-PAY. COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES. 1300-UPDATE-PROGRAM-TOTALS. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. 1400-DISPLAY-PAYROLL. MOVE HOURS-WORKED TO PRINT-HOURS-WORKED. MOVE PAY-RATE TO PRINT-PAY-RATE. MOVE EMP-GROSS-PAY TO PRINT-GROSS-PAY. MOVE EMP-OVERTIME-PAY TO PRINT-OVERTIME-PAY. MOVE EMP-OVERTIME-HOURS TO PRINT-OVERTIME-HOURS. MOVE EMP-TAXES TO PRINT-TAXES. MOVE EMP-NET-PAY TO PRINT-NET-PAY. MOVE EMP-OVERTIME-HOURS TO PRINT-OVERTIME-HOURS. DISPLAY 'RECORD #'PROGRAM-RECORD-COUNT': ' EMPLOYEE-RECORD-IN. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ',' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' PRINT-HOURS-WORKED. DISPLAY ' PAY RATE : $' PRINT-PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' EMP-POSITION-TITLE. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY : $' PRINT-GROSS-PAY. DISPLAY ' OT PAY : $' PRINT-OVERTIME-PAY. DISPLAY ' OT HOURS : ' PRINT-OVERTIME-HOURS. DISPLAY ' TAXES : $' PRINT-TAXES. DISPLAY ' NET PAY : $' PRINT-NET-PAY. DISPLAY '--'. 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. DIVIDE PROGRAM-GROSS-PAY BY PROGRAM-RECORD-COUNT GIVING PROGRAM-AVERAGE-GROSS. DIVIDE PROGRAM-NET-PAY BY PROGRAM-RECORD-COUNT GIVING PROGRAM-AVERAGE-NET. MOVE PROGRAM-HOURS-WORKED TO PRINT-PROGRAM-HOURS-WORKED. MOVE PROGRAM-GROSS-PAY TO PRINT-PROGRAM-GROSS. MOVE PROGRAM-TAXES TO PRINT-PROGRAM-TAXES. MOVE PROGRAM-NET-PAY TO PRINT-PROGRAM-NET-PAY. MOVE PROGRAM-OVERTIME-HOURS TO PRINT-PROGRAM-OVERTIME-HOURS. MOVE PROGRAM-OVERTIME-PAY TO PRINT-PROGRAM-OVERTIME-PAY. MOVE PROGRAM-AVERAGE-GROSS TO PRINT-AVERAGE-GROSS. MOVE PROGRAM-AVERAGE-NET TO PRINT-AVERAGE-NET. MOVE PROGRAM-RECORD-COUNT TO PRINT-PROGRAM-RECORD-COUNT. DISPLAY 'FILE TOTALS : '. DISPLAY ' RECORDS : ' PRINT-PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' PRINT-PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : $' PRINT-PROGRAM-GROSS. DISPLAY ' TAXES : $' PRINT-PROGRAM-TAXES. DISPLAY ' NET : $' PRINT-PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' PRINT-PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : $' PRINT-PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: $' PRINT-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: $' PRINT-AVERAGE-NET. DISPLAY '--'. 3000-CLOSE-PROGRAM. DISPLAY 'END OF PROGRAM FOR RACHEL GRAHAM'. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more