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

Rachel Graham HW07RG

IDENTIFICATION DIVISION.
PROGRAM-ID. HW07RG.
AUTHOR. RACHEL GRAHAM.
DATE-WRITTEN. 02-17-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 9(02)V99.
    05  PAY-RATE                PIC 9(02)V99.
    05  EMP-PAY-TYPE            PIC X(01).
        88 HOURLY                               VALUE 'H'.
        88 SALARY                               VALUE 'S'.
    05  EMP-POSITION            PIC X(01).
        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.
   
01  DISPLAY-FORMATTING.
    05  PRINT-PAY-RATE                  PIC ZZZZ,ZZ9.99.
    05  PRINT-GROSS-PAY                 PIC ZZZZ,ZZ9.99.
    05  PRINT-NET-PAY                   PIC ZZZZ,ZZ9.99.
    05  PRINT-TAXES                     PIC ZZZZ,ZZ9.99.
    05  PRINT-OVERTIME-PAY              PIC ZZZZ,ZZ9.99.
    05  PRINT-OVERTIME-HOURS            PIC ZZZZZ,ZZ9.99.
    05  PRINT-HOURS-WORKED              PIC ZZZZZ,ZZ9.99.
    05  PRINT-PROGRAM-GROSS             PIC ZZZZ,ZZ9.99.
    05  PRINT-PROGRAM-NET-PAY           PIC ZZZZ,ZZ9.99.
    05  PRINT-PROGRAM-TAXES             PIC ZZZZ,ZZ9.99.
    05  PRINT-AVERAGE-GROSS             PIC ZZZZ,ZZ9.99.
    05  PRINT-AVERAGE-NET               PIC ZZZZ,ZZ9.99.
    05  PRINT-PROGRAM-OVERTIME-PAY      PIC ZZZZ,ZZ9.99.
    05  PRINT-PROGRAM-HOURS             PIC ZZZZZZZZ9.99.
    05  PRINT-PROGRAM-OVERTIME-HOURS    PIC ZZZZZZZZ9.99.
    05  PRINT-PROGRAM-HOURS-WORKED      PIC ZZZZZZZZ9.99.
    05  PRINT-PROGRAM-RECORD-COUNT      PIC ZZZZZZZZZZZ9.
  

01  EMP-TAX-RATE                PIC V99.

01  EMP-OVERTIME-RATE           PIC 9(04)V99.

01  EMP-REGULAR-PAY             PIC 9(04)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(06)V99.
    05  PROGRAM-NET-PAY         PIC 9(06)V99.
    05  PROGRAM-TAXES           PIC 9(06)V99.
    05  PROGRAM-RECORD-COUNT    PIC 9(02).
    05  PROGRAM-HOURS-WORKED    PIC 9(04)V99.
    05  PROGRAM-AVERAGE-GROSS   PIC 9(06)V99.
    05  PROGRAM-AVERAGE-NET     PIC 9(06)V99.
    05  PROGRAM-OVERTIME-HOURS  PIC 9(04)V99.
    05  PROGRAM-OVERTIME-PAY    PIC 9(06)V99.
    
01  CURRENT-DATE.
    05  CURRENT-YEAR            PIC 99.
    05  CURRENT-MONTH           PIC 99.
    05  CURRENT-DAY             PIC 99.

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
    UNTIL EMPLOYEE-RECORD-IN = ' '.
PERFORM 2000-PROVIDE-FINAL-TOTALS.
PERFORM 3000-CLOSE-PROGRAM.
GOBACK.

0100-INITIALIZE-PROGRAM.

ACCEPT CURRENT-DATE FROM DATE.
DISPLAY 'PAYROLL HW07RG FOR RACHEL GRAHAM'.
DISPLAY '   PROGRAM BEGINS: ' CURRENT-MONTH 
    '/' CURRENT-DAY '/' CURRENT-YEAR.
DISPLAY '--'.
MOVE .32 TO EMP-TAX-RATE.
PERFORM 1900-ACCEPT-RECORD.


1000-PROCESS-PAYROLL-RECORDS.
    ADD 1 TO PROGRAM-RECORD-COUNT.
    PERFORM 1100-DETERMINE-POS-AND-PAY.
    PERFORM 1200-CALCULATE-PAYROLL. 
    PERFORM 1300-UPDATE-PROGRAM-TOTALS. 
    PERFORM 1400-DISPLAY-PAYROLL.
    PERFORM 1900-ACCEPT-RECORD.


1100-DETERMINE-POS-AND-PAY.
    EVALUATE    TRUE        ALSO    TRUE    
        WHEN    PROGRAMMER  ALSO    ANY     MOVE   
            WS-PROGRAMMER-RATE  TO  PAY-RATE        
        
        WHEN    ACCOUNTANT  ALSO    ANY     MOVE 
        WS-ACCOUNTANT-RATE  TO  PAY-RATE       
        
        WHEN    MANAGER     ALSO    ANY     MOVE    
            WS-MANAGER-RATE  TO  PAY-RATE       
        
        WHEN    INTERN      ALSO    ANY     MOVE    
            WS-INTERN-RATE  TO  PAY-RATE       
        
        WHEN    TESTER      ALSO    ANY     MOVE    
            WS-TESTER-RATE  TO  PAY-RATE
        WHEN    OTHER                       MOVE    0000            TO  PAY-RATE       DISPLAY ' POSITION ERROR'
    END-EVALUATE.
    
    EVALUATE    TRUE        ALSO    TRUE
        WHEN    PROGRAMMER  ALSO    ANY     MOVE    
            WS-PROGRAMMER-TITLE  TO  EMP-POSITION-TITLE
        
        WHEN    ACCOUNTANT  ALSO    ANY     MOVE    
            WS-ACCOUNTANT-TITLE  TO  EMP-POSITION-TITLE
        
        WHEN    MANAGER     ALSO    ANY     MOVE    
            WS-MANAGER-TITLE  TO  EMP-POSITION-TITLE
        
        WHEN    INTERN      ALSO    ANY     MOVE    
            WS-INTERN-TITLE  TO  EMP-POSITION-TITLE
        
        WHEN    TESTER      ALSO    ANY     MOVE    
            WS-TESTER-TITLE  TO  EMP-POSITION-TITLE
        
        WHEN    OTHER                       MOVE    
            'UNDEFINED POSITION'  TO  EMP-POSITION-TITLE
    END-EVALUATE.
    
    
1200-CALCULATE-PAYROLL. 
    IF SALARY THEN
        COMPUTE EMP-GROSS-PAY = 40 * PAY-RATE
        MOVE 0.00 TO EMP-OVERTIME-PAY
    END-IF
  
    IF HOURLY THEN
        COMPUTE EMP-OVERTIME-RATE = PAY-RATE * (1.5)
            IF HOURS-WORKED > 40
                COMPUTE EMP-REGULAR-PAY = 40 * PAY-RATE
                COMPUTE EMP-OVERTIME-PAY = (HOURS-WORKED - 40) 
                    * EMP-OVERTIME-RATE
                COMPUTE EMP-GROSS-PAY = 
                    EMP-REGULAR-PAY + EMP-OVERTIME-PAY
            ELSE
                COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE
                   MOVE 0.00 TO EMP-OVERTIME-PAY
            END-IF
    END-IF
    
    IF NOT (HOURLY OR SALARY) THEN
        COMPUTE EMP-GROSS-PAY= HOURS-WORKED * PAY-RATE
    END-IF

    IF HOURS-WORKED > 40
        COMPUTE EMP-OVERTIME-HOURS= HOURS-WORKED - 40
    ELSE
        MOVE 0.00 TO EMP-OVERTIME-HOURS
    END-IF
        

    COMPUTE EMP-TAXES= EMP-TAX-RATE * EMP-GROSS-PAY.
    COMPUTE EMP-NET-PAY= EMP-GROSS-PAY - EMP-TAXES.
    
    
1300-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 EMP-OVERTIME-HOURS TO PROGRAM-OVERTIME-HOURS.
    ADD EMP-OVERTIME-PAY TO PROGRAM-OVERTIME-PAY.
    ADD HOURS-WORKED TO PROGRAM-HOURS-WORKED.


1400-DISPLAY-PAYROLL.
    MOVE    HOURS-WORKED    TO  PRINT-HOURS-WORKED.
    MOVE    PAY-RATE    TO PRINT-PAY-RATE.
    MOVE    EMP-GROSS-PAY   TO PRINT-GROSS-PAY.
    MOVE    EMP-OVERTIME-PAY    TO  PRINT-OVERTIME-PAY.
    MOVE    EMP-OVERTIME-HOURS  TO  PRINT-OVERTIME-HOURS.
    MOVE    EMP-TAXES   TO  PRINT-TAXES.
    MOVE    EMP-NET-PAY TO  PRINT-NET-PAY.
    MOVE    EMP-OVERTIME-HOURS  TO  PRINT-OVERTIME-HOURS.
    
    DISPLAY 'RECORD #'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     : ' PRINT-HOURS-WORKED.
    DISPLAY '   PAY RATE  : $' PRINT-PAY-RATE.
    DISPLAY '   POSITION  : ' EMP-POSITION.
    DISPLAY '   TITLE     : ' EMP-POSITION-TITLE.
    DISPLAY '   PAY TYPE  : ' EMP-PAY-TYPE.
    DISPLAY '   GROSS PAY : $' PRINT-GROSS-PAY.
    DISPLAY '   OT PAY    : $' PRINT-OVERTIME-PAY.
    DISPLAY '   OT HOURS  : ' PRINT-OVERTIME-HOURS.
    DISPLAY '   TAXES     : $' PRINT-TAXES.
    DISPLAY '   NET PAY   : $' PRINT-NET-PAY.
    DISPLAY '--'.
    
1900-ACCEPT-RECORD. 
    ACCEPT EMPLOYEE-RECORD-IN.



2000-PROVIDE-FINAL-TOTALS.
    DIVIDE PROGRAM-GROSS-PAY BY PROGRAM-RECORD-COUNT 
        GIVING PROGRAM-AVERAGE-GROSS.
    DIVIDE PROGRAM-NET-PAY BY PROGRAM-RECORD-COUNT 
        GIVING PROGRAM-AVERAGE-NET.
    
    MOVE    PROGRAM-HOURS-WORKED    TO  
        PRINT-PROGRAM-HOURS-WORKED.
    MOVE    PROGRAM-GROSS-PAY       TO  
        PRINT-PROGRAM-GROSS.
    MOVE    PROGRAM-TAXES           TO  
        PRINT-PROGRAM-TAXES.
    MOVE    PROGRAM-NET-PAY         TO  
        PRINT-PROGRAM-NET-PAY.
    MOVE    PROGRAM-OVERTIME-HOURS  TO  
        PRINT-PROGRAM-OVERTIME-HOURS.
    MOVE    PROGRAM-OVERTIME-PAY    TO 
        PRINT-PROGRAM-OVERTIME-PAY.
    MOVE    PROGRAM-AVERAGE-GROSS   TO  
        PRINT-AVERAGE-GROSS.
    MOVE    PROGRAM-AVERAGE-NET     TO  
        PRINT-AVERAGE-NET.
    MOVE    PROGRAM-RECORD-COUNT    TO  
        PRINT-PROGRAM-RECORD-COUNT.
        
    DISPLAY 'FILE TOTALS  : '.
    DISPLAY '   RECORDS   : ' PRINT-PROGRAM-RECORD-COUNT.
    DISPLAY '   HOURS     : ' PRINT-PROGRAM-HOURS-WORKED.
    DISPLAY '   GROSS     : $' PRINT-PROGRAM-GROSS.
    DISPLAY '   TAXES     : $' PRINT-PROGRAM-TAXES.
    DISPLAY '   NET       : $' PRINT-PROGRAM-NET-PAY.
    DISPLAY '   OT HOURS  : '  PRINT-PROGRAM-OVERTIME-HOURS.
    DISPLAY '   OT PAY    : $' PRINT-PROGRAM-OVERTIME-PAY.
    DISPLAY 'AVERAGE GROSS: $' PRINT-AVERAGE-GROSS.
    DISPLAY '  AVERAGE NET: $' PRINT-AVERAGE-NET.
    DISPLAY '--'.


3000-CLOSE-PROGRAM.   
    DISPLAY 'END OF PROGRAM FOR RACHEL GRAHAM'.
    STOP RUN.

Advertisements
Loading...

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