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

JacobSteiners program

IDENTIFICATION DIVISION.
PROGRAM-ID. HW06FL.
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(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.                
    05 WS-DATE-IN-YYYY          PIC X(04).
    05 WS-DATE-IN-MM            PIC X(02).
    05 WS-DATE-IN-DD            PIC X(02).

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 10 TIMES.
    PERFORM 2000-PROVIDE-FINAL-TOTALS.
    PERFORM 3000-CLOSE-PROGRAM.   
    STOP RUN.

0100-INITIALIZE-PROGRAM.
    DISPLAY 'PAYROLL HW05JS FOR JACOB STEINER'.
    ACCEPT WS-DATE-IN FROM DATE YYYYMMDD
    DISPLAY 'PROGRAM BEGINS: ' WS-DATE-IN-MM '/' WS-DATE-IN-DD '/' WS-DATE-IN-YYYY 
    DISPLAY WS-POSITIONS
    MOVE .32 TO EMP-TAX-RATE
    ACCEPT EMPLOYEE-RECORD-IN
    DISPLAY '--'.
    

1000-PROCESS-PAYROLL-RECORDS.
    add 1 to 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 'P'
            move WS-PROGRAMMER-TITLE TO EMP-POSITION-TITLE
            move WS-PROGRAMMER-RATE  TO PAY-RATE 
        WHEN 'A'
            move WS-ACCOUNTANT-TITLE TO EMP-POSITION-TITLE
            move WS-ACCOUNTANT-RATE  TO PAY-RATE 
        WHEN 'M'
            move WS-MANAGER-TITLE TO EMP-POSITION-TITLE
            move WS-MANAGER-RATE  TO PAY-RATE 
        WHEN 'I'
            move WS-INTERN-TITLE TO EMP-POSITION-TITLE
            move WS-INTERN-RATE  TO PAY-RATE 
        WHEN 'T'
            move WS-TESTER-TITLE TO EMP-POSITION-TITLE
            move WS-TESTER-RATE  TO PAY-RATE 
        WHEN OTHER
            MOVE 'UNDEFINED' TO     EMP-POSITION-TITLE
    END-EVALUATE.
    
    
1200-CALCULATE-PAYROLL. 
    IF EMP-PAY-TYPE = 'H' AND HOURS-WORKED > 40.00 
        compute EMP-OVERTIME-HOURS = HOURS-WORKED - 40
        compute EMP-OVERTIME-PAY = EMP-OVERTIME-HOURS * 1.5 * PAY-RATE
        compute EMP-GROSS-PAY = 40 * PAY-RATE + EMP-OVERTIME-PAY
    ELSE IF EMP-PAY-TYPE = 'S'
        COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE
    ELSE
        COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE
    END-IF
    compute EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE.
    compute EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES.
        
    
1300-UPDATE-PROGRAM-TOTALS.    
    add EMP-NET-PAY to PROGRAM-NET-PAY. 
    add EMP-TAXES to PROGRAM-TAXES. 
    add EMP-GROSS-PAY to PROGRAM-GROSS-PAY.
    add HOURS-WORKED to PROGRAM-HOURS-WORKED.
    add EMP-OVERTIME-HOURS to PROGRAM-OVERTIME-HOURS.
    add EMP-OVERTIME-PAY to PROGRAM-OVERTIME-PAY.


1400-DISPLAY-PAYROLL-RECORD-INFO.
    DISPLAY 'RECORD #' PROGRAM-RECORD-COUNT': 'EMPLOYEE-RECORD-IN
    DISPLAY 'PAY DATE     : '   EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY
    DISPLAY 'EMPLOYEE NAME: ' EMP-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 '--'. 
  
    
1900-ACCEPT-RECORD. 
    ACCEPT EMPLOYEE-RECORD-IN.


2000-PROVIDE-FINAL-TOTALS.
    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 '--'.


3000-CLOSE-PROGRAM.   
    DISPLAY 'END OF PROGRAM FOR JACOB STEINER'.

Advertisements
Loading...

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