Guest User

Untitled

a guest
Jun 24th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 5.04 KB | None | 0 0
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.     QUESTION2.
  3.        AUTHOR.         ANTHONY HYNES.        <<<--- put your name here
  4.    
  5.        ENVIRONMENT DIVISION.
  6.        INPUT-OUTPUT SECTION.
  7.        FILE-CONTROL.
  8.  
  9.            SELECT IN-FILE ASSIGN TO "TEST1_2012.DATA"
  10.                      ORGANIZATION IS LINE SEQUENTIAL.
  11.            SELECT PRINT-FILE ASSIGN TO "TEST1.OUT"
  12.                      ORGANIZATION IS LINE SEQUENTIAL.
  13.  
  14.        DATA DIVISION.
  15.        FILE SECTION.
  16.  
  17.        FD  IN-FILE
  18.            LABEL RECORDS ARE STANDARD
  19.            RECORD CONTAINS 80 CHARACTERS
  20.            RECORDING  MODE IS F
  21.            DATA RECORD IS INPUT-RECORD.
  22.                    
  23.        01  INPUT-RECORD.
  24.            05 MACH-NAME                     PIC X(5).
  25.            05 MACH-AMT                      PIC 99 OCCURS 14 TIMES.
  26.          
  27.        FD  PRINT-FILE
  28.            LABEL RECORDS ARE OMITTED
  29.            RECORDING  MODE IS F
  30.            DATA RECORD IS PRINT-RECORD.
  31.                    
  32.        01  PRINT-RECORD                     PIC X(132).
  33.          
  34.        WORKING-STORAGE SECTION.
  35.        01  END-OF-FILE-SWITCH               PIC XXX   VALUE "NO".
  36.            88 END-OF-FILE                             VALUE "YES".
  37.  
  38.        01  WS-MACH-TOTAL                    PIC 999   VALUE 000.
  39.        01  WS-MACH-AVG                      PIC 9V9   VALUE 0.0.
  40.        01  SERVICE-COUNTER                  PIC 99    VALUE 00.
  41.        01  CONST-PRODUCTION-DAYS            PIC 99    VALUE 14.
  42.        01  RECORD-COUNT                     PIC 99    VALUE 00.
  43.        01  SERVICE-DAYS                     PIC XX.
  44.                
  45.        01  HEADING1.
  46.            05  FILLER               PIC X(5) VALUE SPACES.
  47.            05  FILLER               PIC X(6) VALUE "NUMBER".
  48.            05  FILLER               PIC X(5) VALUE SPACES.
  49.            05  FILLER               PIC X(6) VALUE "AVG".
  50.            05  FILLER               PIC X(5) VALUE SPACES.
  51.            05  FILLER               PIC X(7) VALUE "COMMENT".
  52.            05  FILLER               PIC X(5) VALUE SPACES.
  53.  
  54.  
  55.        01  DETAIL-LINE.
  56.            05 FILLER                        PIC X(5)  VALUE SPACES.
  57.            05 DL-MACH-NAME                  PIC X(5).
  58.            05 FILLER                        PIC X(6)  VALUE SPACES.
  59.       * I have not provided the pic on the following line...
  60.       * use sample output to figure out what you need..
  61.            05 DL-MACH-AVG                   PIC 9.9.
  62.  
  63.            05 FILLER                        PIC X(7) VALUE SPACES.
  64.            05 DL-COMMENT                    PIC X(15).
  65.  
  66.        01  NAME-DATE-TIME-LINE.
  67.            05 FILLER                        PIC X(2)  VALUE SPACES.
  68.            05 FILLER                        PIC X(28) VALUE
  69.                      "ANTHONY HYNES".
  70.            05 FILLER                        PIC X(2)  VALUE SPACES.
  71.            05 FILLER                        PIC X(6)  VALUE "TEST 1".
  72.            05 FILLER                        PIC X(2)  VALUE SPACES.
  73.            05 NDT-DATE                      PIC 9(6).
  74.            05 FILLER                        PIC X(5)  VALUE SPACES.
  75.            05 NDT-TIME                      PIC 9(8).
  76.  
  77.        PROCEDURE DIVISION.
  78.            OPEN INPUT IN-FILE
  79.                 OUTPUT PRINT-FILE.
  80.  
  81.            ACCEPT NDT-DATE FROM DATE.
  82.            ACCEPT NDT-TIME FROM TIME.
  83.            WRITE PRINT-RECORD FROM NAME-DATE-TIME-LINE AFTER PAGE.
  84.            WRITE PRINT-RECORD FROM HEADING1 AFTER 2.
  85.  
  86.            READ IN-FILE AT END MOVE "YES" TO END-OF-FILE-SWITCH.
  87.  
  88.            PERFORM 10-PROCESS-MACH-RECORDS UNTIL END-OF-FILE.
  89.  
  90.            PERFORM 20-WRITE-AVERAGE.
  91.  
  92.            CLOSE IN-FILE
  93.                  PRINT-FILE.
  94.            STOP RUN.
  95.  
  96.        10-PROCESS-MACH-RECORDS.
  97.            MOVE MACH-NAME TO DL-MACH-NAME.
  98.            MOVE 0 TO WS-MACH-TOTAL.
  99.            MOVE 0 TO WS-MACH-AVG.
  100.            MOVE 0 TO SERVICE-DAYS.
  101.            MOVE 0 TO SERVICE-COUNTER.
  102.  
  103.            PERFORM 200-PROCESS-LOOP VARYING RECORD-COUNT FROM 1 BY 1
  104.                UNTIL RECORD-COUNT > CONST-PRODUCTION-DAYS.
  105.  
  106.            PERFORM 100-MACH-AVG.
  107.            PERFORM 30-WRITE-COMMENT.
  108.  
  109.            WRITE PRINT-RECORD FROM DETAIL-LINE AFTER 2.
  110.  
  111.            READ IN-FILE AT END MOVE "YES" TO END-OF-FILE-SWITCH.
  112.  
  113.  
  114.        20-WRITE-AVERAGE.
  115.  
  116.        30-WRITE-COMMENT.
  117.            IF SERVICE-COUNTER EQUALS CONST-PRODUCTION-DAYS
  118.               MOVE ZERO TO DL-MACH-AVG
  119.               MOVE "OUT OF SERVICE" TO DL-COMMENT
  120.            ELSE
  121.               MOVE SERVICE-COUNTER TO SERVICE-DAYS
  122.               STRING SERVICE-DAYS DELIMITED BY ' '
  123.                      SPACE DELIMITED BY SIZE
  124.                      "SERVICE DAYS" DELIMITED BY ' '
  125.               INTO DL-COMMENT
  126.            END-IF.
  127.  
  128.        100-MACH-AVG.
  129.            DIVIDE WS-MACH-TOTAL BY CONST-PRODUCTION-DAYS GIVING
  130.                WS-MACH-AVG.
  131.  
  132.            MOVE WS-MACH-AVG TO DL-MACH-AVG.
  133.  
  134.        200-PROCESS-LOOP.
  135.            ADD MACH-AMT(RECORD-COUNT) TO WS-MACH-TOTAL.
  136.  
  137.            IF MACH-AMT(RECORD-COUNT) EQUALS 00
  138.                ADD 1 TO SERVICE-COUNTER
  139.            END-IF.
Add Comment
Please, Sign In to add comment