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

TGYTRYTRY

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD. 
AUTHOR SCOTT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  EMPLOYEE-DETAILS. 
    05 EAGLE-ID PIC X(8).
    05 NAME.
        10 FIRST-NAME PIC X(20) VALUE 'ARMANDO'.
        10 LAST-NAME PIC X(20) VALUE 'CASAS'.
    05 ADRESS PIC X(40) VALUE 'DIRECCION LARGA #234 COL. AQUI SI MATAN'.
    05 HASHTAG PIC X(1) VALUE '#'.
    05 PHONE PIC 9(6) VALUE 123456.
01  NEW-PHONE PIC 9(6).
77  COUNTER PIC 9(02).
01  STAR PIC X(1) VALUE '*'.
PROCEDURE DIVISION.
        
    MOVE PHONE TO NEW-PHONE.
    DISPLAY EMPLOYEE-DETAILS.
    DISPLAY NEW-PHONE.
    
    IF HASHTAG  NOT = STAR THEN
        PERFORM 100-HASHTAGS
        UNTIL COUNTER >3
    ELSE
        PERFORM 200-STARS
        UNTIL COUNTER >4
        DISPLAY'.......'
    END-IF.
    
STOP RUN.

100-HASHTAGS SECTION.
    DISPLAY HASHTAG
    ADD 1 TO COUNTER.
    
200-STARS SECTION.
    DISPLAY STAR
    ADD 1 TO COUNTER.

COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD. 
DATA DIVISION.
WORKING-STORAGE SECTION.
01  EMPLOYEE-DETAILS. 
    05 EAGLE-ID PIC X(8).
    05 NAME.
        10 FIRST-NAME PIC X(20) VALUE 'ARMANDO'.
        10 LAST-NAME PIC X(20) VALUE 'CASAS'.
    05 ADRESS PIC X(40) VALUE 'DIRECCION LARGA #234 COL. AQUI SI MATAN'.
    05 HASHTAG PIC X(1) VALUE '#'.
    05 PHONE PIC 999999 VALUE 123456.
01  NEW-PHONE PIC 999999.
01  COUNTER PIC 9(02).
PROCEDURE DIVISION.



    
MOVE PHONE TO NEW-PHONE.
DISPLAY EMPLOYEE-DETAILS.
DISPLAY NEW-PHONE.

100-HASHTAGS SECTION.
    DISPLAY HASHTAG
    ADD 1 TO COUNTER.
    
    
PERFORM 100-HASHTAGS
    UNTIL COUNTER >10.
STOP RUN.

Compile and Execute COBOL Online

IDENTIFICATION DIVISION.
PROGRAM-ID.AJ.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PERFORM A-PARA.
STOP RUN.
A-PARA.
DISPLAY'MY ID IS'.
DISPLAY'MY AJ IS'.

FIXED HOMEWORK 6

IDENTIFICATION DIVISION.
AUTHOR. JACOB STEINER.
DATE-WRITTEN. 12/25/2019.
PROGRAM-ID. HW06JS.
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 9(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 9(04).
    05 WS-DATE-IN-MM            PIC 9(02).
    05 WS-DATE-IN-DD            PIC 9(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 
        until EMP-PAY-MM not numeric
        or PROGRAM-RECORD-COUNT > 999
    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'.

HW06YM - CORRECTED

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 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                 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
      UNTIL EMP-PAY-DATE-IN NOT NUMERIC.
    PERFORM 2000-PROVIDE-FINAL-TOTALS
    PERFORM 3000-CLOSE-PROGRAM.

0100-INITIALIZE-PROGRAM.
    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 1900-ACCEPT-RECORD.

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.

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

    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.

3000-CLOSE-PROGRAM.   
  
    DISPLAY '--'.

    DISPLAY 'END OF PROGRAM FOR YIMENG MA'.
    STOP RUN.

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.

FILE DESCRIPTION SAMPLE

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL PGMFILE ASSIGN TO STDIN
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS1.
DATA DIVISION.
FILE SECTION.
FD PGMFILE.
    RECORD CONTAIN INTEGER CHARACTERS(FIXED LENGTH)
    RECORD IS VARYING IN SIZE INT1 TO INT2 DEPENDING ON WS-1(DYNAMIC LENGTH)
    RECORD IS VARYING IN SIZE INT1 TO INT2(VARIABLE LENGTH).
    BLOCK CONTAIN INTEGER CHARACTERS(FIXED LENGTH)/ DYNAMIC /VARIABLE.
    DATA RECORD IS PGMF-REC.
    RECORDING MODE IS F/V/U. FIXED/VARIABLE/UNDEFINED
01 PGMF-REC.
   05 EMP-NAME PIC X(10).
   05 EMP-NO   PIC X(10).
WORKING-STORAGE SECTION.
01 FS1 PIC 9(02).
01 WS-EOF-STATUS PIC X(01) VALUE SPACES.
   88 EOF-Y  VALUE 'Y'.
LINKAGE SECTION.
01 PARM-IP PIX X(10). 

PROCEDURE DIVISION.
OPEN INPUT PGMFILE.
PERFORM READ-FILE UNTIL FS1 GREATER THAN ZERO.
CLOSE PGMFILE.
STOP RUN.
READ-FILE.
READ PGMFILE.
IF FS1 EQUAL ZERO 
   DISPLAY PGMF-REC.

Compile and Execute COBOL Online

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, world'.
STOP RUN.

Compile and Execute COBOL Online

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DATA DIVISION.
WORKING-STORAGE SECTION.

01 X-SEP-CHAR   PIC X(1).
01 SY-L07DATA   PIC X(2002).

01 NWEB-L07-DATA.
    05 NWEB-L07DCN          PIC X(16) VALUE SPACES.
    05 NWEB-ORIGDCN          PIC X(16) VALUE SPACES.
    05 NWEB-LOWDCN       PIC X(4) VALUE SPACES.
    05 NWEB-HIGHDCN      PIC X(4) VALUE SPACES.
    05 NWEB-CNTRY      PIC X(3) VALUE SPACES.
    05 NWEB-050      PIC X(4) VALUE SPACES.
    05 NWEB-060      PIC X(9) VALUE SPACES.
    05 NWEB-070      PIC X(3) VALUE SPACES.
    05 NWEB-081      PIC X(255) VALUE SPACES.
    05 NWEB-082     PIC X(255) VALUE SPACES.
    05 NWEB-083          PIC X(255) VALUE SPACES.
    05 NWEB-084          PIC X(5) VALUE SPACES.
    05 NWEB-085          PIC X(75) VALUE SPACES.
    05 NWEB-086          PIC X(255) VALUE SPACES.
    05 NWEB-091          PIC X(5) VALUE SPACES.
    05 NWEB-092          PIC X(255) VALUE SPACES.
    05 NWEB-093          PIC X(75) VALUE SPACES.
    05 NWEB-094          PIC X(1) VALUE SPACES.
    05 NWEB-095          PIC X(1) VALUE SPACES.
    05 NWEB-096          PIC X(1) VALUE SPACES.
    05 NWEB-100          PIC X(255) VALUE SPACES.
    05 NWEB-110          PIC X(75) VALUE SPACES.
    05 NWEB-120          PIC X(75) VALUE SPACES.
    

PROCEDURE DIVISION.
DISPLAY 'Hello, world'.

MOVE 'DFZC18088GS00087;DFZC18088GS0AAAO;0087;0087;ZZ;0001;'-
';;GYROSCOPE;;;06811;CANADIAN ARMED MEGA SUPER GUYS;;;;;N;M;Y;;;DOE, JOHN'
TO SY-L07DATA

MOVE ';' TO X-SEP-CHAR

UNSTRING SY-L07DATA DELIMITED BY X-SEP-CHAR
INTO NWEB-L07DCN, NWEB-ORIGDCN, NWEB-LOWDCN, NWEB-HIGHDCN, NWEB-CNTRY, 
NWEB-050, NWEB-060, NWEB-070, NWEB-081, NWEB-082, NWEB-083, NWEB-084, NWEB-085,
NWEB-086, NWEB-091, NWEB-092, NWEB-093, NWEB-094, NWEB-095, NWEB-096, NWEB-100,
NWEB-110, NWEB-120
END-UNSTRING.

DISPLAY 'UNSTRINGED DATA= ' 
DISPLAY 'L07DCN= ' NWEB-L07DCN 
DISPLAY 'ORIGDCN= ' NWEB-ORIGDCN 
DISPLAY 'LOWDCN=' NWEB-LOWDCN
DISPLAY 'HIGHDCN=' NWEB-HIGHDCN 
DISPLAY 'CNTRY=' NWEB-CNTRY 
DISPLAY '050=' NWEB-050 
DISPLAY '060=' NWEB-060
DISPLAY '070=' NWEB-070 
DISPLAY '081=' NWEB-081 
DISPLAY '082=' NWEB-082 
DISPLAY '083=' NWEB-083 
DISPLAY '084=' NWEB-084
DISPLAY '085=' NWEB-085
DISPLAY '086=' NWEB-086
DISPLAY '091=' NWEB-091
DISPLAY '092=' NWEB-092
DISPLAY '093=' NWEB-093
DISPLAY '094=' NWEB-094
DISPLAY '095=' NWEB-095
DISPLAY '096=' NWEB-096
DISPLAY '100=' NWEB-100
DISPLAY '110=' NWEB-110
DISPLAY '120=' NWEB-120



STOP RUN.

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.