IDENTIFICATION DIVISION. PROGRAM-ID. HW06YM. AUTHOR. YIMENG MA 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 PIC 9(08). 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 EMP-PAY-DATE-IN NOT NUMERIC. PERFORM 2000-PROVIDE-FINAL-TOTALS PERFORM 3000-CLOSE-PROGRAM. 0100-INITIALIZE-PROGRAM. ACCEPT WS-DATE-IN FROM DATE YYYYMMDD. DISPLAY 'PAYROLL HW06YM FOR YIMENG MA'. DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN. MOVE .32 TO EMP-TAX-RATE. PERFORM 1900-ACCEPT-RECORD. 1000-PROCESS-PAYROLL-RECORDS. COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1 DISPLAY ' RECORDS : ' 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 WS-PROGRAMMER-CODE MOVE WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE MOVE WS-PROGRAMMER-RATE TO PAY-RATE WHEN WS-ACCOUNTANT-CODE MOVE WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE MOVE WS-ACCOUNTANT-RATE TO PAY-RATE WHEN WS-MANAGER-CODE MOVE WS-MANAGER-TITLE TO EMP-POSITION-TITLE MOVE WS-MANAGER-RATE TO PAY-RATE WHEN WS-INTERN-CODE MOVE WS-INTERN-TITLE TO EMP-POSITION-TITLE MOVE WS-INTERN-RATE TO PAY-RATE WHEN WS-TESTER-CODE MOVE WS-TESTER-TITLE TO EMP-POSITION-TITLE MOVE WS-TESTER-RATE TO PAY-RATE WHEN OTHER MOVE 'UNDEFINED-POSITION' TO EMP-POSITION-TITLE MOVE '00.00' TO PAY-RATE. 1200-CALCULATE-PAYROLL. IF EMP-PAY-TYPE = 'S' COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE MOVE '0' TO EMP-OVERTIME-PAY IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS = HOURS-WORKED - 40. IF EMP-PAY-TYPE = 'H' IF HOURS-WORKED > 40 COMPUTE EMP-OVERTIME-HOURS = HOURS-WORKED - 40 COMPUTE EMP-OVERTIME-PAY = 1.5 * PAY-RATE * EMP-OVERTIME-HOURS COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE + EMP-OVERTIME-PAY IF HOURS-WORKED < 40 COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE. COMPUTE EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE. COMPUTE EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES. 1300-UPDATE-PROGRAM-TOTALS. COMPUTE PROGRAM-HOURS-WORKED = PROGRAM-HOURS-WORKED + HOURS-WORKED COMPUTE PROGRAM-GROSS-PAY = PROGRAM-GROSS-PAY + EMP-GROSS-PAY COMPUTE PROGRAM-TAXES = PROGRAM-TAXES + EMP-TAXES COMPUTE PROGRAM-NET-PAY = PROGRAM-NET-PAY + EMP-NET-PAY COMPUTE PROGRAM-OVERTIME-HOURS = PROGRAM-OVERTIME-HOURS + EMP-OVERTIME-HOURS COMPUTE PROGRAM-OVERTIME-PAY = PROGRAM-OVERTIME-PAY + EMP-OVERTIME-PAY COMPUTE PROGRAM-AVERAGE-GROSS = PROGRAM-GROSS-PAY / PROGRAM-RECORD-COUNT COMPUTE PROGRAM-AVERAGE-NET = PROGRAM-NET-PAY / PROGRAM-RECORD-COUNT. 1400-DISPLAY-PAYROLL-RECORD-INFO. 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 : ' 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. 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. 3000-CLOSE-PROGRAM. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR YIMENG MA'. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more