IDENTIFICATION DIVISION. PROGRAM-ID. HW06GH. 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. 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(05)V99. 05 PROGRAM-NET-PAY PIC 9(05)V99. 05 PROGRAM-TAXES PIC 9(05)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. 01 WS-FORMATTED-FIELDS. 05 WS-FMT-DOLLARS PIC $ZZ,ZZ9.99. 05 WS-FMT-HOURS PIC ZZZZZZ9.99. PROCEDURE DIVISION. 0000-DRIVER. PERFORM 0100-INITIALIZE-PROGRAM. PERFORM 1000-PROCESS-PAYROLL-RECORDS. PERFORM 2000-PROVIDE-FINAL-TOTALS. GOBACK. 0100-INITIALIZE-PROGRAM. PERFORM 1440-ACCEPT-RECORD. DISPLAY 'PAYROLL HW05GH FOR GAVIN HOOPER'. DISPLAY WS-POSITIONS. DISPLAY '--'. MOVE .32 TO EMP-TAX-RATE. 1000-PROCESS-PAYROLL-RECORDS. PERFORM 1400-DISPLAY-PAYROLL-RECORD-INFO UNTIL EMP-PAY-DATE-IN NOT NUMERIC. 1410-DETERMINE-POSITION-AND-PAY. EVALUATE EMP-POSITION WHEN 'P' MOVE 'PROGRAMMER' TO WS-POSITIONS WHEN 'A' MOVE 'ACCOUNTANT' TO WS-POSITIONS WHEN 'M' MOVE 'MANAGER' TO WS-POSITIONS WHEN 'I' MOVE 'INTERN' TO WS-POSITIONS WHEN 'T' MOVE 'TESTER' TO WS-POSITIONS WHEN OTHER MOVE 'UNDEFINED POSITION' TO WS-POSITIONS. EVALUATE EMP-POSITION WHEN 'P' MOVE 65.00 TO PAY-RATE WHEN 'A' MOVE 58.00 TO PAY-RATE WHEN 'M' MOVE 62.00 TO PAY-RATE WHEN 'I' MOVE 22.00 TO PAY-RATE WHEN 'T' MOVE 22.00 TO PAY-RATE WHEN OTHER MOVE 0000 TO PAY-RATE. 1420-CALCULATE-PAYROLL. 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-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. 1430-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 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. 1400-DISPLAY-PAYROLL-RECORD-INFO. ADD 1 TO PROGRAM-RECORD-COUNT. PERFORM 1410-DETERMINE-POSITION-AND-PAY. PERFORM 1420-CALCULATE-PAYROLL. DISPLAY 'RECORD NUMBER #'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 : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' TITLE : ' WS-POSITIONS. 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 '--'. PERFORM 1430-UPDATE-PROGRAM-TOTALS. PERFORM 1440-ACCEPT-RECORD. 1440-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. DISPLAY '--'. 3000-CLOSE-PROGRAM. STOP-RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more