       IDENTIFICATION DIVISION.
       PROGRAM-ID. TRAINREADALL.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT FLOG ASSIGN TO "fiets.dat"
               ORGANIZATION IS SEQUENTIAL.
           SELECT LLOG ASSIGN TO "loop.dat"
               ORGANIZATION IS SEQUENTIAL.
           SELECT ZLOG ASSIGN TO "zwem.dat"
               ORGANIZATION IS SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.

       FD  FLOG RECORD CONTAINS 23 CHARACTERS.
       01  F-REC.
           05 F-DATE     PIC 9(8).
           05 F-DIST     PIC 9(2).
           05 F-TIME     PIC 9(5).
           05 F-HR       PIC 9(3).
           05 F-WEIGHT   PIC 9(3).
           05 F-FILLER   PIC X.

       FD  LLOG RECORD CONTAINS 23 CHARACTERS.
       01  L-REC.
           05 L-DATE     PIC 9(8).
           05 L-DIST     PIC 9(2).
           05 L-TIME     PIC 9(5).
           05 L-HR       PIC 9(3).
           05 L-WEIGHT   PIC 9(3).
           05 L-FILLER   PIC X.

       FD  ZLOG RECORD CONTAINS 23 CHARACTERS.
       01  Z-REC.
           05 Z-DATE     PIC 9(8).
           05 Z-DIST     PIC 9(2).
           05 Z-TIME     PIC 9(5).
           05 Z-HR       PIC 9(3).
           05 Z-WEIGHT   PIC 9(3).
           05 Z-FILLER   PIC X.

       WORKING-STORAGE SECTION.

       01 EOF-SW PIC X VALUE "N".

       01 WS-DIST-CODE PIC 9(2).
       01 WS-TIME      PIC 9(5).
       01 WS-HR        PIC 9(3).
       01 WS-WEIGHT    PIC 9(3).

       01 WS-DIST-METER PIC 9(5).
       01 WS-DIST-KM    PIC 9(3).
       01 WS-TIME-HOURS PIC 9(3)V9(4).
       01 WS-SPEED      PIC 9(3)V9(2).

       01 WS-MIN PIC 9(4).
       01 WS-SEC PIC 9(2).

       01 WS-SPEED-DISP PIC ZZ9.99.

       *> Nieuwe conditiewaarde
       01 WS-INDEX      PIC 9V999.
       01 WS-INDEX-DISP PIC 9.999.

       PROCEDURE DIVISION.
       MAIN-SECTION.

           DISPLAY "----------------------------------------"
           DISPLAY "   GEZAMENLIJK TRAINING OVERZICHT"
           DISPLAY "----------------------------------------"

           PERFORM READ-FIETS
           PERFORM READ-LOOP
           PERFORM READ-ZWEM

           STOP RUN.

       READ-FIETS.
           OPEN INPUT FLOG
           MOVE "N" TO EOF-SW

           PERFORM UNTIL EOF-SW = "Y"
              READ FLOG
                 AT END MOVE "Y" TO EOF-SW
                 NOT AT END
                    MOVE F-DIST   TO WS-DIST-CODE
                    MOVE F-TIME   TO WS-TIME
                    MOVE F-HR     TO WS-HR
                    MOVE F-WEIGHT TO WS-WEIGHT

                    PERFORM MAP-DISTANCE
                    PERFORM CALC-SPEED
                    PERFORM SPLIT-TIME

                    MOVE WS-SPEED TO WS-SPEED-DISP

                    *> conditiewaarde
                    IF WS-HR > 0
                       COMPUTE WS-INDEX = WS-SPEED / WS-HR
                    ELSE
                       MOVE 0 TO WS-INDEX
                    END-IF

                    MOVE WS-INDEX TO WS-INDEX-DISP

                    DISPLAY "FIETS  " F-DATE "  " NO ADVANCING
                    DISPLAY WS-DIST-KM NO ADVANCING
                    DISPLAY " km  " NO ADVANCING
                    DISPLAY WS-MIN NO ADVANCING
                    DISPLAY "m " NO ADVANCING
                    DISPLAY WS-SEC NO ADVANCING
                    DISPLAY "s  " NO ADVANCING
                    DISPLAY WS-SPEED-DISP NO ADVANCING
                    DISPLAY " km/u  HR:" NO ADVANCING
                    DISPLAY WS-HR NO ADVANCING
                    DISPLAY "  WGT:" NO ADVANCING
                    DISPLAY WS-WEIGHT NO ADVANCING
                    DISPLAY "kg  IDX:" NO ADVANCING
                    DISPLAY WS-INDEX-DISP
              END-READ
           END-PERFORM

           CLOSE FLOG
           EXIT.

       READ-LOOP.
           OPEN INPUT LLOG
           MOVE "N" TO EOF-SW

           PERFORM UNTIL EOF-SW = "Y"
              READ LLOG
                 AT END MOVE "Y" TO EOF-SW
                 NOT AT END
                    MOVE L-DIST   TO WS-DIST-CODE
                    MOVE L-TIME   TO WS-TIME
                    MOVE L-HR     TO WS-HR
                    MOVE L-WEIGHT TO WS-WEIGHT

                    PERFORM MAP-DISTANCE
                    PERFORM CALC-SPEED
                    PERFORM SPLIT-TIME

                    MOVE WS-SPEED TO WS-SPEED-DISP

                    IF WS-HR > 0
                       COMPUTE WS-INDEX = WS-SPEED / WS-HR
                    ELSE
                       MOVE 0 TO WS-INDEX
                    END-IF

                    MOVE WS-INDEX TO WS-INDEX-DISP

                    DISPLAY "LOOP   " L-DATE "  " NO ADVANCING
                    DISPLAY WS-DIST-KM NO ADVANCING
                    DISPLAY " km  " NO ADVANCING
                    DISPLAY WS-MIN NO ADVANCING
                    DISPLAY "m " NO ADVANCING
                    DISPLAY WS-SEC NO ADVANCING
                    DISPLAY "s  " NO ADVANCING
                    DISPLAY WS-SPEED-DISP NO ADVANCING
                    DISPLAY " km/u  HR:" NO ADVANCING
                    DISPLAY WS-HR NO ADVANCING
                    DISPLAY "  WGT:" NO ADVANCING
                    DISPLAY WS-WEIGHT NO ADVANCING
                    DISPLAY "kg  IDX:" NO ADVANCING
                    DISPLAY WS-INDEX-DISP
              END-READ
           END-PERFORM

           CLOSE LLOG
           EXIT.

       READ-ZWEM.
           OPEN INPUT ZLOG
           MOVE "N" TO EOF-SW

           PERFORM UNTIL EOF-SW = "Y"
              READ ZLOG
                 AT END MOVE "Y" TO EOF-SW
                 NOT AT END
                    MOVE Z-DIST   TO WS-DIST-CODE
                    MOVE Z-TIME   TO WS-TIME
                    MOVE Z-HR     TO WS-HR
                    MOVE Z-WEIGHT TO WS-WEIGHT

                    PERFORM MAP-DISTANCE
                    PERFORM CALC-SPEED
                    PERFORM SPLIT-TIME

                    MOVE WS-SPEED TO WS-SPEED-DISP

                    IF WS-HR > 0
                       COMPUTE WS-INDEX = WS-SPEED / WS-HR
                    ELSE
                       MOVE 0 TO WS-INDEX
                    END-IF

                    MOVE WS-INDEX TO WS-INDEX-DISP

                    DISPLAY "ZWEM   " Z-DATE "  " NO ADVANCING
                    DISPLAY WS-DIST-METER NO ADVANCING
                    DISPLAY " m   " NO ADVANCING
                    DISPLAY WS-MIN NO ADVANCING
                    DISPLAY "m " NO ADVANCING
                    DISPLAY WS-SEC NO ADVANCING
                    DISPLAY "s  " NO ADVANCING
                    DISPLAY WS-SPEED-DISP NO ADVANCING
                    DISPLAY " km/u  HR:" NO ADVANCING
                    DISPLAY WS-HR NO ADVANCING
                    DISPLAY "  WGT:" NO ADVANCING
                    DISPLAY WS-WEIGHT NO ADVANCING
                    DISPLAY "kg  IDX:" NO ADVANCING
                    DISPLAY WS-INDEX-DISP
              END-READ
           END-PERFORM

           CLOSE ZLOG
           EXIT.

       MAP-DISTANCE.
           IF WS-DIST-CODE = 01 MOVE 1000  TO WS-DIST-METER.
           IF WS-DIST-CODE = 05 MOVE 5000  TO WS-DIST-METER.
           IF WS-DIST-CODE = 10 MOVE 10000 TO WS-DIST-METER.
           IF WS-DIST-CODE = 25 MOVE 25000 TO WS-DIST-METER.
           IF WS-DIST-CODE = 20 MOVE 200   TO WS-DIST-METER.
           IF WS-DIST-CODE = 50 MOVE 500   TO WS-DIST-METER.

           COMPUTE WS-DIST-KM = WS-DIST-METER / 1000.
           EXIT.

       CALC-SPEED.
           COMPUTE WS-TIME-HOURS = WS-TIME / 3600.
           IF WS-TIME-HOURS > 0
              COMPUTE WS-SPEED =
                 (WS-DIST-METER / 1000) / WS-TIME-HOURS
           ELSE
              MOVE 0 TO WS-SPEED
           END-IF.
           EXIT.

       SPLIT-TIME.
           COMPUTE WS-MIN = WS-TIME / 60.
           COMPUTE WS-SEC = WS-TIME - (WS-MIN * 60).
           EXIT.

       END-PROGRAM. TRAINREADALL.

