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

HW07YM

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.

Advertisements
Loading...

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