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

12345

IDENTIFICATION DIVISION.
    PROGRAM-ID. HW05BH.
    AUTHOR. Brian Hamil.
    DATE-WRITTEN. 2/04/19.

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', 'h'.
                    88 SALARY-PAY            VALUE 'S', 's'.
       
            05 EMP-POSITION             PIC X.
                    88 PROGRAMMER            VALUE 'P', 'p'.
                    88 ACCOUNTANT            VALUE 'A', 'a'.
                    88 MANAGER               VALUE 'M', 'm'.
                    88 INTERN                VALUE 'I', 'i'.
                    88 TESTER                VALUE 'T', 't'.
                    88 DEFALUT               VALUE 'X', 'x'.
       
        01 EMP-TITLE                    PIC X(18).
        01 EMP-PAY-DISPLAY              PIC X(18).
        01 EMP-MESSAGE                  PIC X(30).

        01  EMP-TAX-RATE                PIC V99 VALUE .32.

        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-RATE       PIC 9(02)V99.
            05  EMP-OVERTIME-PAY        PIC 9(04)V99.

        01  PROGRAM-TOTALS.    
            05 LOOP-COUNTER             PIC 999(03) VALUE 1.
            05 RECORD-LEN               PIC 999(03) VALUE 16.
            05 TOTAL-GROSS-PAY          PIC 9(05)V99.
            05 TOTAL-NET-PAY            PIC 9(05)V99.
            05 TOTAL-TAXES              PIC 9(05)V99.
            05 TOTAL-HOURS-S            PIC 9(03)V99.
            05 TOTAL-HOURS-H            PIC 9(03)V99.
            05 TOTAL-HOURS              PIC 9(03)V99.
            05 SYS-DATE.
                10 SYS-YEAR             PIC 9(04).
                10 SYS-MONTH            PIC 9(02).
                10 SYS-DAY              PIC 9(02).
                
            05 AVERAGE-GROSS-PAY        PIC 9(05)V99.
            05 AVERAGE-TAXES            PIC 9(05)V99.
            05 AVERAGE-NET-PAY          PIC 9(05)V99.
            05 TEMP                     PIC 9(05).
            05 OVERTIME-HOURS           PIC 9(03)V99.
            05 OVERTIME-HOURLY          PIC 9(03)V99.
            05 OVERTIME-SALARY          PIC 9(03)V99.
            05 TOTAL-OVERTIME           PIC 9(03)V99.
            05 OVERTIME-PAY             PIC 9(04)V99.
    
        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.
            05 WS-DEFAULT.
                10 WS-DEFAULT-CODE      PIC X(01)    VALUE 'X'.
                10 WS-DEFAULT-TITLE     PIC X(18)    VALUE 'UNDEFINED POSITION'.
                10 WS-DEFAULT-RATE      PIC 9(02)V99 VALUE 20.00.

PROCEDURE DIVISION.

0000-DRIVER.
0100-INITIALIZE-PROGRAM.
1000-PROCESS-PAYROLL-RECORDS.
1100-DETERMINE-POSITION-AND-PAY.
1200-CALCULATE-PAYROLL.
1300-UPDATE-PROGRAM-TOTALS.
1400-DISPLAY-PAYROLL-RECORD-INFO.
1900-ACCEPT-RECORD.
2000-PROVIDE-FINAL-TOTALS.
3000-CLOSE-PROGRAM.

    DISPLAY 'PAYROLL HW04BH FOR Brian Hamil.'.
    
    DISPLAY WS-PROGRAMMER-CODE ' ' WS-PROGRAMMER-TITLE ' ' WS-PROGRAMMER-RATE
    DISPLAY WS-ACCOUNTANT-CODE ' ' WS-ACCOUNTANT-TITLE ' ' WS-ACCOUNTANT-RATE
    DISPLAY WS-MANAGER-CODE ' ' WS-MANAGER-TITLE ' ' WS-MANAGER-RATE
    DISPLAY WS-INTERN-CODE ' ' WS-INTERN-TITLE ' ' WS-INTERN-RATE
    DISPLAY WS-TESTER-CODE ' ' WS-TESTER-TITLE ' ' WS-TESTER-RATE
    DISPLAY WS-DEFAULT-CODE ' ' WS-DEFAULT-TITLE ' ' WS-DEFAULT-RATE
    
    DISPLAY '   --  BEGINNING OF RECORDS    --'.
    
    DISPLAY '--'.

    PERFORM UNTIL LOOP-COUNTER = 16

    ACCEPT EMPLOYEE-RECORD-IN
    
    EVALUATE TRUE
        WHEN HOURLY-PAY
            MOVE 'HOURLY' TO EMP-PAY-DISPLAY
        WHEN SALARY-PAY
            MOVE 'SALARY' TO EMP-PAY-DISPLAY
            MOVE '  -- NOT ELIGIBLE --' TO EMP-MESSAGE
            MOVE 0 TO EMP-OVERTIME-PAY
            MOVE 0 TO EMP-OVERTIME-RATE
        WHEN OTHER
            MOVE 'INVALID' TO EMP-PAY-DISPLAY
    END-EVALUATE
    
    EVALUATE TRUE
        WHEN PROGRAMMER
            MOVE WS-PROGRAMMER-RATE TO PAY-RATE
            MOVE WS-PROGRAMMER-CODE TO EMP-POSITION
            MOVE WS-PROGRAMMER-TITLE TO EMP-TITLE
        WHEN ACCOUNTANT
            MOVE WS-ACCOUNTANT-RATE TO PAY-RATE
            MOVE WS-ACCOUNTANT-CODE TO EMP-POSITION
            MOVE WS-ACCOUNTANT-TITLE TO EMP-TITLE
        WHEN MANAGER
            MOVE WS-MANAGER-RATE TO PAY-RATE
            MOVE WS-MANAGER-CODE TO EMP-POSITION
            MOVE WS-MANAGER-TITLE TO EMP-TITLE
        WHEN INTERN 
            MOVE WS-INTERN-RATE TO PAY-RATE
            MOVE WS-INTERN-CODE TO EMP-POSITION
            MOVE WS-INTERN-TITLE TO EMP-TITLE
        WHEN TESTER 
            MOVE WS-TESTER-RATE TO PAY-RATE
            MOVE WS-TESTER-CODE TO EMP-POSITION
            MOVE WS-TESTER-TITLE TO EMP-TITLE
        WHEN OTHER 
            MOVE WS-DEFAULT-RATE TO PAY-RATE
            MOVE WS-DEFAULT-CODE TO EMP-POSITION
            MOVE WS-DEFAULT-TITLE TO EMP-TITLE
    END-EVALUATE
    
    IF HOURS-WORKED > 40
    
        SUBTRACT 40 FROM HOURS-WORKED GIVING OVERTIME-HOURS
        
        IF EMP-PAY-TYPE = 'H' OR 'h'
            MULTIPLY PAY-RATE BY 1.5 GIVING EMP-OVERTIME-RATE
            MULTIPLY OVERTIME-HOURS BY EMP-OVERTIME-RATE GIVING EMP-OVERTIME-PAY
            MULTIPLY PAY-RATE BY 40 GIVING EMP-GROSS-PAY
            
            ADD EMP-OVERTIME-PAY TO EMP-GROSS-PAY GIVING EMP-GROSS-PAY
            
        ELSE IF EMP-PAY-TYPE = 'S' OR 's'
            MULTIPLY PAY-RATE BY 40 GIVING EMP-GROSS-PAY
            
        ELSE
            MULTIPLY PAY-RATE BY HOURS-WORKED GIVING EMP-GROSS-PAY
            
    ELSE
        MULTIPLY HOURS-WORKED BY PAY-RATE GIVING EMP-GROSS-PAY
        
    END-IF

    MULTIPLY EMP-GROSS-PAY BY EMP-TAX-RATE GIVING EMP-TAXES
    
    SUBTRACT EMP-TAXES FROM EMP-GROSS-PAY GIVING EMP-NET-PAY
    
    DISPLAY 'RECORD ENTRY : ' 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 '    OT HOURS :       ' OVERTIME-HOURS 
    DISPLAY '    PAY RATE :       $' PAY-RATE
    DISPLAY '    OT RATE  :       $' EMP-OVERTIME-RATE EMP-MESSAGE
    DISPLAY '    POSITION : ' EMP-POSITION
    DISPLAY '    TITLE    : ' EMP-TITLE
    DISPLAY '    PAY TYPE : ' EMP-PAY-DISPLAY
    DISPLAY '    GROSS PAY:     $' EMP-GROSS-PAY
    DISPLAY '    OT PAY   :     $' EMP-OVERTIME-PAY EMP-MESSAGE
    DISPLAY '    TAXES    :     $' EMP-TAXES
    DISPLAY '    NET PAY  :     $' EMP-NET-PAY
    DISPLAY '--'
    
    ADD EMP-GROSS-PAY TO TOTAL-GROSS-PAY
    ADD EMP-TAXES TO TOTAL-TAXES
    ADD EMP-NET-PAY TO TOTAL-NET-PAY
    
    IF EMP-PAY-TYPE = 'H' OR 'h'
        ADD HOURS-WORKED TO TOTAL-HOURS-H
        ADD OVERTIME-HOURS TO OVERTIME-HOURLY
    ELSE
        ADD HOURS-WORKED TO TOTAL-HOURS-S
        ADD OVERTIME-HOURS TO OVERTIME-SALARY
    
    ADD 1 TO LOOP-COUNTER
    
    END-PERFORM.
    
    DISPLAY '   --  END OF RECORDS  --'.
    
    ADD TOTAL-HOURS-H TO TOTAL-HOURS-S GIVING TOTAL-HOURS.
    ADD OVERTIME-SALARY TO OVERTIME-HOURLY GIVING TOTAL-OVERTIME.
    
    DIVIDE TOTAL-GROSS-PAY BY LOOP-COUNTER GIVING AVERAGE-GROSS-PAY.
    DIVIDE TOTAL-TAXES BY LOOP-COUNTER GIVING AVERAGE-TAXES.
    DIVIDE TOTAL-NET-PAY BY LOOP-COUNTER GIVING AVERAGE-NET-PAY
    
    MOVE FUNCTION CURRENT-DATE TO SYS-DATE.
    DISPLAY 'PROGRAM RUN DATE    :   '  SYS-MONTH '/'
                                        SYS-DAY '/' 
                                        SYS-YEAR.
    
    DISPLAY '--'.
    
    DISPLAY '   TOTAL GROSS PAY     :   $' TOTAL-GROSS-PAY.
    DISPLAY '   TOTAL TAXES         :   $' TOTAL-TAXES.
    DISPLAY '   TOTAL NET PAY       :   $' TOTAL-NET-PAY.
    
    DISPLAY '--'.
    
    DISPLAY '   AVERAGE GROSS PAY   :   $' AVERAGE-GROSS-PAY.
    DISPLAY '   AVERAGE TAXES       :   $' AVERAGE-TAXES.
    DISPLAY '   AVERAGE NET PAY     :   $' AVERAGE-NET-PAY.
    
    DISPLAY '--'.
    
    DISPLAY '   NUMBER OF RECORDS   :       ' LOOP-COUNTER.
    DISPLAY '   TOTAL HOURLY HOURS  :      ' TOTAL-HOURS-H.
    DISPLAY '   TOTAL SALARY HOURS  :      ' TOTAL-HOURS-S.
    DISPLAY '   OVERALL HOURS       :      ' TOTAL-HOURS.
    DISPLAY '   TOTAL HOURLY OT     :      ' OVERTIME-HOURLY.
    DISPLAY '   TOTAL SALARY OT     :      ' OVERTIME-SALARY.
    DISPLAY '   OVERALL OT          :      ' TOTAL-OVERTIME.
    
    DISPLAY '--'.

    DISPLAY 'END OF PROGRAM FOR Brian Hamil'.
    STOP RUN.

Advertisements
Loading...

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