IDENTIFICATION DIVISION. PROGRAM-ID. HW06FL. 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 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X. 88 HOURLY-PAY VALUE 'H'. 88 SALARY-PAY VALUE 'S'. 05 EMP-POSITION PIC X. 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. 05 FILLER PIC X(10). 01 EMP-TAX-RATE PIC 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(04)V99. 05 PROGRAM-NET-PAY PIC 9(04)V99. 05 PROGRAM-TAXES PIC 9(04)V99. 05 PROGRAM-RECORD-COUNT PIC 9(02). 05 PROGRAM-HOURS-WORKED PIC 9(04)V99. 05 PROGRAM-AVERAGE-GROSS PIC 9(04)V99. 05 PROGRAM-AVERAGE-NET PIC 9(04)V99. 05 PROGRAM-OVERTIME-HOURS PIC 9(04)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(04)V99. 01 WS-DATE-IN. 05 WS-DATE-IN-YYYY PIC X(04). 05 WS-DATE-IN-MM PIC X(02). 05 WS-DATE-IN-DD PIC X(02). 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 10 TIMES. PERFORM 2000-PROVIDE-FINAL-TOTALS. PERFORM 3000-CLOSE-PROGRAM. STOP RUN. 0100-INITIALIZE-PROGRAM. DISPLAY 'PAYROLL HW05JS FOR JACOB STEINER'. ACCEPT WS-DATE-IN FROM DATE YYYYMMDD DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN-MM '/' WS-DATE-IN-DD '/' WS-DATE-IN-YYYY DISPLAY WS-POSITIONS MOVE .32 TO EMP-TAX-RATE ACCEPT EMPLOYEE-RECORD-IN DISPLAY '--'. 1000-PROCESS-PAYROLL-RECORDS. add 1 to PROGRAM-RECORD-COUNT PERFORM 1100-DETERMINE-POSITION-AND-PAY PERFORM 1200-CALCULATE-PAYROLL PERFORM 1300-UPDATE-PROGRAM-TOTALS PERFORM 1400-DISPLAY-PAYROLL-RECORD-INFO PERFORM 1900-ACCEPT-RECORD. 1100-DETERMINE-POSITION-AND-PAY. EVALUATE EMP-POSITION WHEN 'P' move WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE move WS-PROGRAMMER-RATE TO PAY-RATE WHEN 'A' move WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE move WS-ACCOUNTANT-RATE TO PAY-RATE WHEN 'M' move WS-MANAGER-TITLE TO EMP-POSITION-TITLE move WS-MANAGER-RATE TO PAY-RATE WHEN 'I' move WS-INTERN-TITLE TO EMP-POSITION-TITLE move WS-INTERN-RATE TO PAY-RATE WHEN 'T' move WS-TESTER-TITLE TO EMP-POSITION-TITLE move WS-TESTER-RATE TO PAY-RATE WHEN OTHER MOVE 'UNDEFINED' TO EMP-POSITION-TITLE END-EVALUATE. 1200-CALCULATE-PAYROLL. IF EMP-PAY-TYPE = 'H' AND HOURS-WORKED > 40.00 compute EMP-OVERTIME-HOURS = HOURS-WORKED - 40 compute EMP-OVERTIME-PAY = EMP-OVERTIME-HOURS * 1.5 * PAY-RATE compute EMP-GROSS-PAY = 40 * PAY-RATE + EMP-OVERTIME-PAY ELSE IF EMP-PAY-TYPE = 'S' COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE ELSE COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE END-IF compute EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE. compute EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES. 1300-UPDATE-PROGRAM-TOTALS. add EMP-NET-PAY to PROGRAM-NET-PAY. add EMP-TAXES to PROGRAM-TAXES. add EMP-GROSS-PAY to PROGRAM-GROSS-PAY. add HOURS-WORKED to PROGRAM-HOURS-WORKED. add EMP-OVERTIME-HOURS to PROGRAM-OVERTIME-HOURS. add EMP-OVERTIME-PAY to PROGRAM-OVERTIME-PAY. 1400-DISPLAY-PAYROLL-RECORD-INFO. DISPLAY 'RECORD #' PROGRAM-RECORD-COUNT': 'EMPLOYEE-RECORD-IN DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY DISPLAY 'EMPLOYEE NAME: ' EMP-NAME DISPLAY ' NUMBER : ' EMP-NUMBER DISPLAY ' HOURS : ' HOURS-WORKED DISPLAY ' PAY RATE : ' PAY-RATE DISPLAY ' POSITION : ' EMP-POSITION DISPLAY ' TITLE : ' EMP-POSITION-TITLE DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY DISPLAY ' OT PAY : ' EMP-OVERTIME-PAY DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS DISPLAY ' TAXES : ' EMP-TAXES DISPLAY ' NET PAY : ' EMP-NET-PAY DISPLAY '--'. 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. compute PROGRAM-AVERAGE-GROSS = PROGRAM-GROSS-PAY / 2. compute PROGRAM-AVERAGE-NET = PROGRAM-NET-PAY / 2. DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : ' PROGRAM-GROSS-PAY. DISPLAY ' TAXES : ' PROGRAM-TAXES. DISPLAY ' NET : ' PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : ' PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: ' PROGRAM-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: ' PROGRAM-AVERAGE-NET. DISPLAY '--'. 3000-CLOSE-PROGRAM. DISPLAY 'END OF PROGRAM FOR JACOB STEINER'.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more