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 HW17RG

IDENTIFICATION DIVISION.
PROGRAM-ID. HW17RG.
AUTHOR. RACHEL GRAHAM.
DATE-WRITTEN. 03-10-2019.
DATA DIVISION.
WORKING-STORAGE SECTION.

01 EMP-REC-IN.
   05 EMP-ID            PIC X(04).
   05 EMP-WEEK-DATE     PIC X(06).
   05 EMP-NAME          PIC X(10).
   05 EMP-HOURS         PIC 9(02)V99.

01 EMP-TOTALS OCCURS 25 TIMES.
   05 TBL-EMP-ID        PIC X(04).
   05 TBL-EMP-NAME      PIC X(10).
   05 TBL-EMP-HOURS     PIC 9(03)V99.

01 WEEK-TOTALS OCCURS 5 TIMES.
   05 TBL-WEEK-DATE     PIC X(06).
   05 TBL-WEEK-HOURS    PIC 9(03)V99.
   
01 EMP-SUB              PIC 9(02).
01 WEEK-SUB             PIC 9(02).
01 TOTAL-HOURS          PIC 9(04).

01 DATE-IN              PIC 9(08).

01 EMP-COUNT            PIC 999.
01 WEEK-COUNT           PIC 999.
   
PROCEDURE DIVISION.

0000-DRIVER.
    PERFORM 0010-INITIALIZE-PROGRAM.
    PERFORM 0100-INITIALIZE-TABLES.
    PERFORM 0200-PROCESS-RECORDS.
    PERFORM 0300-DISPLAY-TABLES.
    PERFORM 9999-CONCLUDE-PROGRAM.

0010-INITIALIZE-PROGRAM.
    ACCEPT DATE-IN FROM DATE YYYYMMDD.
    DISPLAY 'HW17RG BY RACHEL GRAHAM STARTED ON: '
             DATE-IN (5:2) '/' DATE-IN (7:2) '/' DATE-IN (1:4).

0100-INITIALIZE-TABLES.
    PERFORM VARYING EMP-SUB FROM 1 BY 1
        UNTIL EMP-SUB > 24
            MOVE SPACES TO  TBL-EMP-ID (EMP-SUB)
            MOVE SPACES TO  TBL-EMP-NAME (EMP-SUB)
            MOVE ZEROES TO  TBL-EMP-HOURS (EMP-SUB)
    END-PERFORM.
    
    PERFORM VARYING WEEK-SUB FROM 1 BY 1
        UNTIL WEEK-SUB > 4
            MOVE SPACES TO TBL-WEEK-DATE (WEEK-SUB)
            MOVE ZEROES TO TBL-WEEK-HOURS (WEEK-SUB)
    END-PERFORM.

0200-PROCESS-RECORDS.
    MOVE HIGH-VALUES TO EMP-REC-IN.
    ACCEPT EMP-REC-IN.
    PERFORM 0250-UPDATE-TABLES
      UNTIL EMP-REC-IN = SPACES.
      
0250-UPDATE-TABLES.

    DISPLAY '--'.
    DISPLAY '>' EMP-REC-IN '<'.
    DISPLAY '>' EMP-NAME '<'.
    DISPLAY '>' EMP-ID '<'.
    DISPLAY '>' EMP-WEEK-DATE '<'.
    DISPLAY '>' EMP-HOURS '<'.

    PERFORM VARYING EMP-SUB FROM 1 BY 1
        UNTIL EMP-SUB > 24
            OR TBL-EMP-ID (EMP-SUB) = SPACES
            OR TBL-EMP-ID (EMP-SUB) = EMP-ID
        IF TBL-EMP-ID(EMP-SUB) = EMP-ID
            MOVE EMP-NAME TO TBL-EMP-NAME (EMP-SUB)
            ADD EMP-HOURS TO TBL-EMP-HOURS (EMP-SUB)
            ADD 1 TO EMP-COUNT
        ELSE
            MOVE EMP-ID TO TBL-EMP-ID (EMP-SUB)
            MOVE EMP-NAME TO TBL-EMP-NAME (EMP-SUB)
            ADD EMP-HOURS TO TBL-EMP-HOURS (EMP-SUB)
            ADD 1 TO EMP-COUNT
        END-IF
    END-PERFORM.      
    
    PERFORM VARYING WEEK-SUB FROM 1 BY 1
        UNTIL WEEK-SUB > 4
            OR TBL-WEEK-DATE (WEEK-SUB) = SPACES
            OR TBL-WEEK-DATE(WEEK-SUB) = EMP-WEEK-DATE
         IF TBL-WEEK-DATE(WEEK-SUB) = EMP-WEEK-DATE 
            ADD EMP-HOURS TO TBL-WEEK-HOURS(WEEK-SUB)
            ADD EMP-HOURS TO TOTAL-HOURS
            ADD 1 TO WEEK-COUNT
        ELSE
            MOVE EMP-WEEK-DATE TO TBL-WEEK-DATE (WEEK-SUB)
            ADD EMP-HOURS TO TBL-WEEK-HOURS (WEEK-SUB)
            ADD EMP-HOURS TO TOTAL-HOURS 
            ADD 1 TO WEEK-COUNT
        END-IF
    END-PERFORM.      
    
    ACCEPT EMP-REC-IN.      

0300-DISPLAY-TABLES.
    SET EMP-SUB TO 0.
    PERFORM VARYING EMP-SUB FROM 1 BY 1
        UNTIL EMP-SUB > 25
        DISPLAY TBL-EMP-ID (EMP-SUB) TBL-EMP-NAME (EMP-SUB) TBL-EMP-HOURS (EMP-SUB)
    END-PERFORM.
    
    DISPLAY 'EMPLOYEE COUNT: ' EMP-COUNT.
    
    SET WEEK-SUB TO 0.
    PERFORM VARYING WEEK-SUB FROM 1 BY 1
        UNTIL WEEK-SUB > 5
        DISPLAY TBL-WEEK-DATE (WEEK-SUB) TBL-WEEK-HOURS (WEEK-SUB)
    END-PERFORM
    
    DISPLAY 'WEEK COUNT: ' WEEK-COUNT.

9999-CONCLUDE-PROGRAM.
    DISPLAY 'TOTAL HOURS REPORTED: ' TOTAL-HOURS.
    DISPLAY 'HW17RG BY RACHEL GRAHAM ENDED ON: '
             DATE-IN (5:2) '/' DATE-IN (7:2) '/' DATE-IN (1:4).
    STOP RUN.

STOP RUN.

Advertisements
Loading...

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