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

COBOL Redefines Clause

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-DATE1 VALUE '20140831'.
   10 WS-YEAR PIC X(4).
   10 WS-MONTH PIC X(2).
   10 WS-DATE PIC X(2).
   05 WS-DATE2 REDEFINES WS-DATE1 PIC 9(5).

PROCEDURE DIVISION.
   DISPLAY "WS-DATE1 : "WS-DATE1.
   DISPLAY "WS-DATE2 : "WS-DATE2.

STOP RUN.

Assumed decimal and Renames and Condition clause

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 NUM-VALUE.
     02  WS-NUM.
       05  WS-NUM1 PIC S9(3)V9(2).
       05  WS-NUM2 PIC P999999.
       05  WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.
       05  WS-NAME PIC A(6) VALUE 'ABCDEF'.
   66 WS-REN RENAMES WS-NUM.
   01 WS-ID PIC X(5) VALUE 'A121$'.
   01 IP-DIGIT PIC X(1).
      88 IP-NUMBERS VALUE '0' THRU '9'.
      88 IP-CHARACTERS VALUE 'A' THRU 'Z'.
PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   MOVE 00.01234560 TO WS-NUM2.
   DISPLAY "WS-NUM2 : "WS-NUM2.
   DISPLAY "WS-NUM3 : "WS-NUM3.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID : "WS-ID.
   DISPLAY "WS-REN : "WS-REN.
   MOVE 'P' TO IP-DIGIT.
   DISPLAY IP-DIGIT.
   IF IP-NUMBERS THEN
      DISPLAY " NUMBERS ENTERED " IP-DIGIT
   ELSE
      IF IP-CHARACTERS THEN  
         DISPLAY " CHARACTERS ENTERED " IP-DIGIT
      ELSE
         DISPLAY " WRONG INPUT " IP-DIGIT
   END-IF.       
   EVALUATE TRUE
       WHEN IP-NUMBERS 
           DISPLAY " NUMBERS ENTERED " IP-DIGIT
       WHEN IP-CHARACTERS 
           DISPLAY " CHARACTERS ENTERED " IP-DIGIT   
       WHEN OTHER 
           DISPLAY " WRONG CHARACTERS ENTERED " IP-DIGIT        
   END-EVALUATE.
STOP RUN.

EVALUATE sample

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.                             
WORKING-STORAGE SECTION.                   
01 IFELSE-CHK PIC X(6).                    
01 DAT-CHK PIC X(6).                       
01 LNGTH PIC 9(1).                         
01  COUNTER-VARIABLES.                     
    05  X-COUNTER    PIC 9(01) VALUE ZEROS.
    05  X-OP-COUNTER PIC 9(01) VALUE 1.    
01 MARKS PIC 9(3).                         
   88 PASS VALUE IS 035 THRU 100.          
   88 FAIL VALUE IS 000 THRU 034.          
 PROCEDURE DIVISION.                                 
     INITIALIZE  IFELSE-CHK                          
               , DAT-CHK                             
               , LNGTH.                              
     ACCEPT IFELSE-CHK.                              
     DISPLAY IFELSE-CHK.
     STRING IFELSE-CHK DELIMITED BY ' ' INTO DAT-CHK.
     EVALUATE DAT-CHK
        WHEN 'MALE'                      
            DISPLAY "HE IS MALE"                        
        WHEN 'FEMALE'                                         
            DISPLAY "SHE IS FEMALE" 
        WHEN OTHER
            DISPLAY "NOT KNOWN" 
      END-EVALUATE.                                        
    ACCEPT MARKS.                           
    DISPLAY MARKS.                          
    IF PASS THEN                            
       DISPLAY "STUDENT IS PASS WITH " MARKS
    ELSE                                    
       DISPLAY "STUDENT IS FAIL WITH " MARKS
    END-IF.                                 
    STOP RUN.                               

IF ELSE SAMPLE

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.                             
WORKING-STORAGE SECTION.                   
01 IFELSE-CHK PIC X(6).                    
01 DAT-CHK PIC X(6).                       
01 LNGTH PIC 9(1).                         
01  COUNTER-VARIABLES.                     
    05  X-COUNTER    PIC 9(01) VALUE ZEROS.
    05  X-OP-COUNTER PIC 9(01) VALUE 1.    
01 MARKS PIC 9(3).                         
   88 PASS VALUE IS 035 THRU 100.          
   88 FAIL VALUE IS 000 THRU 034.          
 PROCEDURE DIVISION.                                 
     INITIALIZE  IFELSE-CHK                          
               , DAT-CHK                             
               , LNGTH.                              
     ACCEPT IFELSE-CHK.                              
     DISPLAY IFELSE-CHK.                             
     STRING IFELSE-CHK DELIMITED BY ' ' INTO DAT-CHK.
     MOVE LENGTH OF DAT-CHK TO LNGTH.                
     DISPLAY 'LENGTH  : ' LNGTH.                     
     DISPLAY 'DATA-CHK: ' DAT-CHK ' END'.             
      IF DAT-CHK = "MALE" THEN                       
         DISPLAY "HE IS MALE"                        
      ELSE                                           
         DISPLAY "SHE IS FEMALE"                     
      END-IF.                                        
    ACCEPT MARKS.                           
    DISPLAY MARKS.                          
    IF PASS THEN                            
       DISPLAY "STUDENT IS PASS WITH " MARKS
    ELSE                                    
       DISPLAY "STUDENT IS FAIL WITH " MARKS
    END-IF.                                 
    STOP RUN.                               

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.

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.

Gavin Hooper HW04GH

IDENTIFICATION DIVISION.
PROGRAM-ID. HW04GH.
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(20).
       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   VALUE .32.

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(01).
    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(02)V99.
    05  PROGRAM-OVERTIME-PAY   PIC 9(03)V99.
    
01  WS-DATE-IN                 PIC 9(08).

PROCEDURE DIVISION.
    DISPLAY 'PAYROLL HW04GH FOR GAVIN HOOPER'.

    DISPLAY '--'.
    

    ACCEPT EMPLOYEE-RECORD-IN.
    ADD 1 TO PROGRAM-RECORD-COUNT.
     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
    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-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION
ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION
        ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION
        ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION
        ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION
        ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION.
    
   
   
   
    
   
    
    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 '    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 '--'.    

    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.
    
  
    ACCEPT EMPLOYEE-RECORD-IN.
    ADD 1 TO PROGRAM-RECORD-COUNT.
     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
    IF EMP-PAY-TYPE = 'S' THEN SUBTRACT EMP-OVERTIME-PAY FROM EMP-OVERTIME-PAY.
    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-POSITION = 'P' THEN MOVE 'PROGRAMMER'TO EMP-POSITION
    ELSE IF EMP-POSITION = 'A' THEN MOVE 'ACCOUNTANT'TO EMP-POSITION
    ELSE IF EMP-POSITION = 'M' THEN MOVE 'MANAGER'TO EMP-POSITION
    ELSE IF EMP-POSITION = 'I' THEN MOVE 'INTERN'TO EMP-POSITION
    ELSE IF EMP-POSITION = 'T' THEN MOVE 'TESTER'TO EMP-POSITION
    ELSE MOVE 'UNDEFINED POSITION' TO EMP-POSITION.
   
    
    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 '    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 '--'.    
     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.
    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 '--'.


    
    DISPLAY '--'.

    DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'.
    STOP RUN.

Gavin Hooper HW05gh

IDENTIFICATION DIVISION.
PROGRAM-ID. HW05GH.
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   VALUE .32.

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(01).
    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(02)V99.
    05  PROGRAM-OVERTIME-PAY   PIC 9(03)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.   

PROCEDURE DIVISION.
    DISPLAY 'PAYROLL HW05GH FOR GAVIN HOOPER'.

    DISPLAY WS-POSITIONS.
    
    DISPLAY '--'.
    MOVE .32 TO EMP-TAX-RATE.
    
    ACCEPT EMPLOYEE-RECORD-IN.
    
    ADD 1 TO PROGRAM-RECORD-COUNT.
    
   
   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.
   
    
     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
    


     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 '--'. 
   
   
    
    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.
    
    ACCEPT EMPLOYEE-RECORD-IN.
    
       ADD 1 TO PROGRAM-RECORD-COUNT.
    
   
   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.
   
    
     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
      
   
    


     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 '--'. 
  
  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.


    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 '--'.
    
    DISPLAY 'EXTRA CREDIT:'

    DISPLAY '  -Right Justify Align Decimal Places in Display + 5%'.
    DISPLAY '  -Update the PAY-RATE on the Input File and DISPLAY it as'
            '   as an output record. '
    DISPLAY '--'.

    DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'.
    STOP RUN.

both execution

IDENTIFICATION DIVISION.
PROGRAM-ID.  Iteration-If.
AUTHOR.  Michael Coughlan.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  V-DII7DV-TEMP-VARS.
           03  TMP0 PIC S9(5)V9(13) USAGE COMP-3
                  VALUE 0.
           03  X-PIC-TMP0 REDEFINES TMP0 PIC X(10).
           03  OLDTMP0 PIC S9(5) USAGE COMP-3
                  VALUE 0.
           03  X-PIC-OLDTMP0 REDEFINES OLDTMP0 PIC X(3).
           
           
01  V-DII7DV-DII8DV.


           03  F-ELEVATOR-POSITION PIC S9(4) USAGE COMP-4.
 01  V-DII7DV-DII9DV.

           03  F-ZAAAKAB PIC S9(9) USAGE COMP-4.

PROCEDURE DIVISION.
 DISPLAY "Enter F-ELEVATOR" WITH NO ADVANCING.
    ACCEPT F-ELEVATOR-POSITION.
DISPLAY "F-ELEVATOR-POSITION IS = ",F-ELEVATOR-POSITION.

                    COMPUTE OLDTMP0 OF V-DII7DV-TEMP-VARS =  ( F-ELEVATOR-POSITION
           OF V-DII7DV-DII8DV - 51 )  / 50.
           DISPLAY "OLDTMP 0 IS = ", OLDTMP0 OF V-DII7DV-TEMP-VARS.

           COMPUTE TMP0 OF V-DII7DV-TEMP-VARS =  ( F-ELEVATOR-POSITION
           OF V-DII7DV-DII8DV - 51 )  / 50.
           DISPLAY "TMP 0 BEFORE IS = ", TMP0 OF V-DII7DV-TEMP-VARS.
           
  
              
           COMPUTE TMP0 OF V-DII7DV-TEMP-VARS = FUNCTION INTEGER ( TMP0
           OF V-DII7DV-TEMP-VARS).
           DISPLAY "TMP 0 AFTER INTEGER IS = ", TMP0 OF V-DII7DV-TEMP-VARS.
           COMPUTE F-ZAAAKAB OF V-DII7DV-DII9DV = F-ELEVATOR-POSITION OF
            V-DII7DV-DII8DV - TMP0 OF V-DII7DV-TEMP-VARS * 2 - 2.
            
             DISPLAY "Result NEW is = ", F-ZAAAKAB OF V-DII7DV-DII9DV.
             
             COMPUTE F-ZAAAKAB OF V-DII7DV-DII9DV = F-ELEVATOR-POSITION OF
            V-DII7DV-DII8DV - OLDTMP0 OF V-DII7DV-TEMP-VARS * 2 - 2.
            
             DISPLAY "Result OLD is = ", F-ZAAAKAB OF V-DII7DV-DII9DV.

fakultaet-cobol

IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    01 MY-DATA.
        05 ZAHL         PIC 99999   VALUE 1.
        05 PARAMETER    PIC 99.
    01 LESBAR.
        05 AUSGABE-ZAHL PIC ZZZZ9.
PROCEDURE DIVISION.
    ACCEPT PARAMETER.
    DISPLAY PARAMETER.
    
    
    PERFORM VARYING PARAMETER 
            FROM PARAMETER BY -1 
            UNTIL PARAMETER < 2
        
        MULTIPLY PARAMETER BY ZAHL GIVING ZAHL
        
    END-PERFORM.
   
    MOVE ZAHL TO AUSGABE-ZAHL
    DISPLAY AUSGABE-ZAHL.

STOP RUN.

Advertisements
Loading...

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