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 $ZZZ,ZZ9.99. 05 EMP-OVERTIME-HOURS-OUT PIC ZZZZZZZ9.99. 05 EMP-OVERTIME-OUT PIC $ZZZ,ZZ9.99. 05 EMP-TAXES-OUT PIC $ZZZ,ZZ9.99. 05 EMP-NET-OUT PIC $ZZZ,ZZ9.99. 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 RPT-PROGRAM-TOTALS. 05 RPT-PROGRAM-GROSS-PAY PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-NET-PAY PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-TAXES PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-HOURS-WORKED PIC ZZZZZZZ9.99. 05 RPT-PROGRAM-AVERAGE-GROSS PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-AVERAGE-NET PIC $ZZZ,ZZ9.99. 05 RPT-PROGRAM-OVERTIME-HOURS PIC ZZZZZZZ9.99. 05 RPT-PROGRAM-OVERTIME-PAY PIC $ZZZ,ZZ9.99. 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 PERFORM 2000-PROVIDE-FINAL-TOTALS PERFORM 3000-CLOSE-PROGRAM. 0100-INITIALIZE-PROGRAM. PERFORM 1900-ACCEPT-RECORD 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 1000-PROCESS-PAYROLL-RECORDS. 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. MOVE EMP-GROSS-PAY TO EMP-GROSS-OUT. MOVE EMP-OVERTIME-HOURS TO EMP-OVERTIME-HOURS-OUT. MOVE EMP-OVERTIME-PAY TO EMP-OVERTIME-OUT. MOVE EMP-TAXES TO EMP-TAXES-OUT. MOVE EMP-NET-PAY TO EMP-NET-OUT. 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-OUT. DISPLAY ' OT PAY : ' EMP-OVERTIME-OUT. DISPLAY ' OT HOURS : ' EMP-OVERTIME-HOURS-OUT. DISPLAY ' TAXES : ' EMP-TAXES-OUT. DISPLAY ' NET PAY : ' EMP-NET-OUT. DISPLAY '--'. 1900-ACCEPT-RECORD. ACCEPT EMPLOYEE-RECORD-IN. 2000-PROVIDE-FINAL-TOTALS. MOVE PROGRAM-HOURS-WORKED TO RPT-PROGRAM-HOURS-WORKED. MOVE PROGRAM-GROSS-PAY TO RPT-PROGRAM-GROSS-PAY. MOVE PROGRAM-TAXES TO RPT-PROGRAM-TAXES. MOVE PROGRAM-NET-PAY TO RPT-PROGRAM-NET-PAY. MOVE PROGRAM-OVERTIME-HOURS TO RPT-PROGRAM-OVERTIME-HOURS. MOVE PROGRAM-OVERTIME-PAY TO RPT-PROGRAM-OVERTIME-PAY. MOVE PROGRAM-AVERAGE-GROSS TO RPT-PROGRAM-AVERAGE-GROSS. MOVE PROGRAM-AVERAGE-NET TO RPT-PROGRAM-AVERAGE-NET DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : ' PROGRAM-RECORD-COUNT. DISPLAY ' HOURS : ' RPT-PROGRAM-HOURS-WORKED. DISPLAY ' GROSS : ' RPT-PROGRAM-GROSS-PAY. DISPLAY ' TAXES : ' RPT-PROGRAM-TAXES. DISPLAY ' NET : ' RPT-PROGRAM-NET-PAY. DISPLAY ' OT HOURS : ' RPT-PROGRAM-OVERTIME-HOURS. DISPLAY ' OT PAY : ' RPT-PROGRAM-OVERTIME-PAY. DISPLAY 'AVERAGE GROSS: ' RPT-PROGRAM-AVERAGE-GROSS. DISPLAY ' AVERAGE NET: ' RPT-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