Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

HW05YM

IDENTIFICATION DIVISION.
PROGRAM-ID. HW05YM.
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(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).

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.
    DISPLAY 'PAYROLL HW05FL FOR YIMENG MA'.
    ACCEPT WS-DATE-IN FROM DATE YYYYMMDD.
    DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN.
   

    DISPLAY WS-POSITIONS.
    
    DISPLAY '--'.
    MOVE .32 TO EMP-TAX-RATE.
    
    ACCEPT EMPLOYEE-RECORD-IN.
    COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1

    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.

    
    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.
    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


    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 '--'. 

    ACCEPT EMPLOYEE-RECORD-IN.
    COMPUTE PROGRAM-RECORD-COUNT = PROGRAM-RECORD-COUNT + 1

    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.

    
    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.
    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


    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 '--'. 
    
    
    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 '--'.
    

    DISPLAY 'EXTRA CREDIT:'


    DISPLAY 'RECORD #1: '  EMP-PAY-DATE-IN EMP-NUMBER EMP-NAME HOURS-WORKED PAY-RATE EMP-PAY-TYPE EMP-POSITION
    DISPLAY 'RECORD #2: '  EMP-PAY-DATE-IN EMP-NUMBER EMP-NAME HOURS-WORKED PAY-RATE EMP-PAY-TYPE EMP-POSITION
    DISPLAY '--'.

    DISPLAY 'END OF PROGRAM FOR YIMENG MA'.
    STOP RUN.

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.