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.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more