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

Gavin Hooper HW06GH

IDENTIFICATION DIVISION.
PROGRAM-ID. HW06GH.
AUTHOR GAVIN HOOPER.
DATE-WRITTEN 02/16/2019.
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(05)V99.
    05  PROGRAM-NET-PAY        PIC 9(05)V99.
    05  PROGRAM-TAXES          PIC 9(05)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                 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.   

01  WS-FORMATTED-FIELDS.
    05 WS-FMT-DOLLARS          PIC $ZZ,ZZ9.99.
    05 WS-FMT-HOURS            PIC ZZZZZZ9.99.
    
PROCEDURE DIVISION.
0000-DRIVER.

    PERFORM 0100-INITIALIZE-PROGRAM.
    PERFORM 1000-PROCESS-PAYROLL-RECORDS.
    PERFORM 2000-PROVIDE-FINAL-TOTALS.
    GOBACK.

0100-INITIALIZE-PROGRAM.

    PERFORM 1440-ACCEPT-RECORD.
    DISPLAY 'PAYROLL HW05GH FOR GAVIN HOOPER'.

    DISPLAY WS-POSITIONS.
    
    DISPLAY '--'.
    MOVE .32 TO EMP-TAX-RATE.

1000-PROCESS-PAYROLL-RECORDS.

    PERFORM 1400-DISPLAY-PAYROLL-RECORD-INFO 
      UNTIL EMP-PAY-DATE-IN NOT NUMERIC.

1410-DETERMINE-POSITION-AND-PAY.

   EVALUATE EMP-POSITION
   WHEN 'P' MOVE 'PROGRAMMER' TO WS-POSITIONS
   WHEN 'A' MOVE 'ACCOUNTANT' TO WS-POSITIONS
   WHEN 'M' MOVE 'MANAGER' TO WS-POSITIONS
   WHEN 'I' MOVE 'INTERN' TO WS-POSITIONS
   WHEN 'T' MOVE 'TESTER' TO WS-POSITIONS
   WHEN OTHER MOVE 'UNDEFINED POSITION' TO WS-POSITIONS.
   
   EVALUATE EMP-POSITION
   WHEN 'P' MOVE 65.00 TO PAY-RATE
   WHEN 'A' MOVE 58.00 TO PAY-RATE
   WHEN 'M' MOVE 62.00 TO PAY-RATE
   WHEN 'I' MOVE 22.00 TO PAY-RATE
   WHEN 'T' MOVE 22.00 TO PAY-RATE
   WHEN OTHER MOVE 0000 TO PAY-RATE.

1420-CALCULATE-PAYROLL.

    IF HOURS-WORKED > 40 THEN 
      COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40.
    IF HOURS-WORKED > 40 THEN 
      COMPUTE EMP-OVERTIME-PAY=PAY-RATE * 1.5 * EMP-OVERTIME-HOURS
    IF EMP-PAY-TYPE = 'S' THEN 
      SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY.
    
    IF EMP-PAY-TYPE = 'H' THEN
      COMPUTE EMP-GROSS-PAY= (HOURS-WORKED * PAY-RATE) + EMP-OVERTIME-PAY
    ELSE 
      COMPUTE EMP-GROSS-PAY=(40 * PAY-RATE).
      
    COMPUTE EMP-TAXES= EMP-GROSS-PAY * EMP-TAX-RATE.
    COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES.
    
1430-UPDATE-PROGRAM-TOTALS.    

    ADD EMP-GROSS-PAY TO PROGRAM-GROSS-PAY.
    ADD EMP-TAXES TO PROGRAM-TAXES.
    ADD EMP-NET-PAY TO PROGRAM-NET-PAY.
    ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED.
    ADD EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS.
    ADD EMP-OVERTIME-PAY TO PROGRAM-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.

    ADD 1 TO PROGRAM-RECORD-COUNT.
    PERFORM 1410-DETERMINE-POSITION-AND-PAY.
    PERFORM 1420-CALCULATE-PAYROLL.
    DISPLAY 'RECORD NUMBER #'PROGRAM-RECORD-COUNT' :'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 '    PAY RATE : ' PAY-RATE.
    DISPLAY '    POSITION : ' EMP-POSITION.    
    DISPLAY '    TITLE    : ' WS-POSITIONS.
    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 '--'. 
    
    PERFORM 1430-UPDATE-PROGRAM-TOTALS. 
    PERFORM 1440-ACCEPT-RECORD.

1440-ACCEPT-RECORD. 
    ACCEPT EMPLOYEE-RECORD-IN.
   
2000-PROVIDE-FINAL-TOTALS.

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

Advertisements
Loading...

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