Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID. QUESTION2.
- AUTHOR. ANTHONY HYNES. <<<--- put your name here
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT IN-FILE ASSIGN TO "TEST1_2012.DATA"
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT PRINT-FILE ASSIGN TO "TEST1.OUT"
- ORGANIZATION IS LINE SEQUENTIAL.
- DATA DIVISION.
- FILE SECTION.
- FD IN-FILE
- LABEL RECORDS ARE STANDARD
- RECORD CONTAINS 80 CHARACTERS
- RECORDING MODE IS F
- DATA RECORD IS INPUT-RECORD.
- 01 INPUT-RECORD.
- 05 MACH-NAME PIC X(5).
- 05 MACH-AMT PIC 99 OCCURS 14 TIMES.
- FD PRINT-FILE
- LABEL RECORDS ARE OMITTED
- RECORDING MODE IS F
- DATA RECORD IS PRINT-RECORD.
- 01 PRINT-RECORD PIC X(132).
- WORKING-STORAGE SECTION.
- 01 END-OF-FILE-SWITCH PIC XXX VALUE "NO".
- 88 END-OF-FILE VALUE "YES".
- 01 WS-MACH-TOTAL PIC 999 VALUE 000.
- 01 WS-MACH-AVG PIC 9V9 VALUE 0.0.
- 01 SERVICE-COUNTER PIC 99 VALUE 00.
- 01 CONST-PRODUCTION-DAYS PIC 99 VALUE 14.
- 01 RECORD-COUNT PIC 99 VALUE 00.
- 01 SERVICE-DAYS PIC XX.
- 01 HEADING1.
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 FILLER PIC X(6) VALUE "NUMBER".
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 FILLER PIC X(6) VALUE "AVG".
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 FILLER PIC X(7) VALUE "COMMENT".
- 05 FILLER PIC X(5) VALUE SPACES.
- 01 DETAIL-LINE.
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 DL-MACH-NAME PIC X(5).
- 05 FILLER PIC X(6) VALUE SPACES.
- * I have not provided the pic on the following line...
- * use sample output to figure out what you need..
- 05 DL-MACH-AVG PIC 9.9.
- 05 FILLER PIC X(7) VALUE SPACES.
- 05 DL-COMMENT PIC X(15).
- 01 NAME-DATE-TIME-LINE.
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 FILLER PIC X(28) VALUE
- "ANTHONY HYNES".
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 FILLER PIC X(6) VALUE "TEST 1".
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 NDT-DATE PIC 9(6).
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 NDT-TIME PIC 9(8).
- PROCEDURE DIVISION.
- OPEN INPUT IN-FILE
- OUTPUT PRINT-FILE.
- ACCEPT NDT-DATE FROM DATE.
- ACCEPT NDT-TIME FROM TIME.
- WRITE PRINT-RECORD FROM NAME-DATE-TIME-LINE AFTER PAGE.
- WRITE PRINT-RECORD FROM HEADING1 AFTER 2.
- READ IN-FILE AT END MOVE "YES" TO END-OF-FILE-SWITCH.
- PERFORM 10-PROCESS-MACH-RECORDS UNTIL END-OF-FILE.
- PERFORM 20-WRITE-AVERAGE.
- CLOSE IN-FILE
- PRINT-FILE.
- STOP RUN.
- 10-PROCESS-MACH-RECORDS.
- MOVE MACH-NAME TO DL-MACH-NAME.
- MOVE 0 TO WS-MACH-TOTAL.
- MOVE 0 TO WS-MACH-AVG.
- MOVE 0 TO SERVICE-DAYS.
- MOVE 0 TO SERVICE-COUNTER.
- PERFORM 200-PROCESS-LOOP VARYING RECORD-COUNT FROM 1 BY 1
- UNTIL RECORD-COUNT > CONST-PRODUCTION-DAYS.
- PERFORM 100-MACH-AVG.
- PERFORM 30-WRITE-COMMENT.
- WRITE PRINT-RECORD FROM DETAIL-LINE AFTER 2.
- READ IN-FILE AT END MOVE "YES" TO END-OF-FILE-SWITCH.
- 20-WRITE-AVERAGE.
- 30-WRITE-COMMENT.
- IF SERVICE-COUNTER EQUALS CONST-PRODUCTION-DAYS
- MOVE ZERO TO DL-MACH-AVG
- MOVE "OUT OF SERVICE" TO DL-COMMENT
- ELSE
- MOVE SERVICE-COUNTER TO SERVICE-DAYS
- STRING SERVICE-DAYS DELIMITED BY ' '
- SPACE DELIMITED BY SIZE
- "SERVICE DAYS" DELIMITED BY ' '
- INTO DL-COMMENT
- END-IF.
- 100-MACH-AVG.
- DIVIDE WS-MACH-TOTAL BY CONST-PRODUCTION-DAYS GIVING
- WS-MACH-AVG.
- MOVE WS-MACH-AVG TO DL-MACH-AVG.
- 200-PROCESS-LOOP.
- ADD MACH-AMT(RECORD-COUNT) TO WS-MACH-TOTAL.
- IF MACH-AMT(RECORD-COUNT) EQUALS 00
- ADD 1 TO SERVICE-COUNTER
- END-IF.
Add Comment
Please, Sign In to add comment