IDENTIFICATION DIVISION. PROGRAM-ID. HW04GH. AUTHOR GAVIN HOOPER. DATE-WRITTEN 02/16/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 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(20). 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 VALUE .32. 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(01). 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(02)V99. 05 PROGRAM-OVERTIME-PAY PIC 9(03)V99. 01 WS-DATE-IN PIC 9(08). PROCEDURE DIVISION. DISPLAY 'PAYROLL HW04GH FOR GAVIN HOOPER'. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF EMP-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION. 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 ' 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 '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. ACCEPT EMPLOYEE-RECORD-IN. ADD 1 TO PROGRAM-RECORD-COUNT. IF EMP-PAY-TYPE = 'H' THEN COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY ELSE COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE) COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40. IF HOURS-WORKED > 40 THEN COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS IF EMP-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION. 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 ' 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 '--'. ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY. ADD EMP-TAXES TO PROGRAM-TAXES. ADD EMP-NET-PAY TO PROGRAM-NET-PAY. ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED. ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS. ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY. COMPUTE PROGRAM-AVERAGE-GROSS=PROGRAM-GROSS-PAY/PROGRAM-RECORD-COUNT. COMPUTE PROGRAM-AVERAGE-NET=PROGRAM-NET-PAY/PROGRAM-RECORD-COUNT. 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 '--'. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'. STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more