       IDENTIFICATION DIVISION.
       PROGRAM-ID. MH-17-COUNT.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT PASSENGER-LIST ASSIGN TO "MH-17p.dat"
               ORGANIZATION IS SEQUENTIAL.
           SELECT CREW-LIST ASSIGN TO "MH-17c.dat"
               ORGANIZATION IS SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.

       FD PASSENGER-LIST.
       01 PASSENGERS.
           05 P-NAME     PIC X(40).
           05 P-CTRY     PIC X(14).
           05 P-GEN      PIC A.

       FD CREW-LIST.
       01 CREW.
           05 C-NAME        PIC X(40).
           05 C-CTRY        PIC X(14).
           05 C-GEN         PIC A.
           05 C-OCCUPATION  PIC X(30).

       WORKING-STORAGE SECTION.

       01 EOF-FLAG        PIC X VALUE "N".
          88 EOF          VALUE "Y".

       01 PASSENGER-COUNT PIC 9(3) VALUE 0.
       01 CREW-COUNT      PIC 9(3) VALUE 0.
       01 TOTAL           PIC 9(3) VALUE 0.
       01 MALE            PIC 9(3) VALUE 0.
       01 FEMALE          PIC 9(3) VALUE 0.

       01 CUR-KEY         PIC X(14).
       01 CUR-GEN         PIC A.

       01 FOUND-SW        PIC X VALUE "N".
          88 FOUND        VALUE "Y".

       01 COUNTRY-TABLE.
           05 COUNTRY-ENTRY OCCURS 200 TIMES
                INDEXED BY C-IDX C-JDX.
               10 CT-KEY        PIC X(14).
               10 CT-TOTAL      PIC 9(4).
               10 CT-MALE       PIC 9(4).
               10 CT-FEMALE     PIC 9(4).

       01 TEMP-KEY        PIC X(14).
       01 TEMP-TOTAL      PIC 9(4).
       01 TEMP-MALE       PIC 9(4).
       01 TEMP-FEMALE     PIC 9(4).

       01 I               PIC 9(3).
       01 J               PIC 9(3).

       PROCEDURE DIVISION.
       MAIN-MODULE.

      * --- INITIALIZE COUNTRY TABLE ---
           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 200
               SET C-IDX TO I
               MOVE SPACES TO CT-KEY(C-IDX)
               MOVE 0 TO CT-TOTAL(C-IDX)
               MOVE 0 TO CT-MALE(C-IDX)
               MOVE 0 TO CT-FEMALE(C-IDX)
           END-PERFORM.

      * --- PASSENGERS ---
           OPEN INPUT PASSENGER-LIST.
           MOVE "N" TO EOF-FLAG.

           PERFORM UNTIL EOF
               READ PASSENGER-LIST
                   AT END SET EOF TO TRUE
                   NOT AT END
                       ADD 1 TO PASSENGER-COUNT

                       IF P-GEN = "M"
                           ADD 1 TO MALE
                       ELSE
                           ADD 1 TO FEMALE
                       END-IF

                       MOVE P-CTRY TO CUR-KEY
                       MOVE P-GEN  TO CUR-GEN
                       PERFORM ADD-COUNTRY
               END-READ
           END-PERFORM.

           CLOSE PASSENGER-LIST.

      * --- CREW ---
           MOVE "N" TO EOF-FLAG.
           OPEN INPUT CREW-LIST.

           PERFORM UNTIL EOF
               READ CREW-LIST
                   AT END SET EOF TO TRUE
                   NOT AT END
                       ADD 1 TO CREW-COUNT

                       IF C-GEN = "M"
                           ADD 1 TO MALE
                       ELSE
                           ADD 1 TO FEMALE
                       END-IF

                       MOVE C-CTRY TO CUR-KEY
                       MOVE C-GEN  TO CUR-GEN
                       PERFORM ADD-COUNTRY
               END-READ
           END-PERFORM.

           CLOSE CREW-LIST.

      * --- TOTALS ---
           ADD PASSENGER-COUNT CREW-COUNT GIVING TOTAL.

      * --- SORT COUNTRY TABLE BY TOTAL DESCENDING ---
           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 199

               MOVE I TO J
               ADD 1 TO J

               PERFORM VARYING J FROM J BY 1 UNTIL J > 200
                   SET C-IDX TO I
                   SET C-JDX TO J

                   IF CT-TOTAL(C-IDX) < CT-TOTAL(C-JDX)
                       MOVE CT-KEY(C-IDX)    TO TEMP-KEY
                       MOVE CT-TOTAL(C-IDX)  TO TEMP-TOTAL
                       MOVE CT-MALE(C-IDX)   TO TEMP-MALE
                       MOVE CT-FEMALE(C-IDX) TO TEMP-FEMALE

                       MOVE CT-KEY(C-JDX)    TO CT-KEY(C-IDX)
                       MOVE CT-TOTAL(C-JDX)  TO CT-TOTAL(C-IDX)
                       MOVE CT-MALE(C-JDX)   TO CT-MALE(C-IDX)
                       MOVE CT-FEMALE(C-JDX) TO CT-FEMALE(C-IDX)

                       MOVE TEMP-KEY         TO CT-KEY(C-JDX)
                       MOVE TEMP-TOTAL       TO CT-TOTAL(C-JDX)
                       MOVE TEMP-MALE        TO CT-MALE(C-JDX)
                       MOVE TEMP-FEMALE      TO CT-FEMALE(C-JDX)
                   END-IF
               END-PERFORM

           END-PERFORM.

      * --- OUTPUT ---
           DISPLAY "-- Total Victims: --".
           DISPLAY TOTAL.
           DISPLAY "-- Males: --".
           DISPLAY MALE.
           DISPLAY "-- Females: --".
           DISPLAY FEMALE.

           DISPLAY "-- Victims Per Country (Descending, with Gender) --".

           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 200
               SET C-IDX TO I
               IF CT-TOTAL(C-IDX) > 0
                   DISPLAY CT-KEY(C-IDX) " : "
                           CT-TOTAL(C-IDX)
                           " (M: " CT-MALE(C-IDX)
                           ", V: " CT-FEMALE(C-IDX) ")"
               END-IF
           END-PERFORM.

           STOP RUN.

      * ==========================================================
      * ADD-COUNTRY SECTION
      * ==========================================================
       ADD-COUNTRY SECTION.
       ADD-COUNTRY-PARA.
           MOVE "N" TO FOUND-SW.

      * Zoek bestaand land
           PERFORM VARYING I FROM 1 BY 1 UNTIL I > 200 OR FOUND
               SET C-IDX TO I
               IF CT-KEY(C-IDX) = CUR-KEY
                   SET FOUND TO TRUE
               END-IF
           END-PERFORM.

      * Als gevonden → total + gender
           IF FOUND
               ADD 1 TO CT-TOTAL(C-IDX)

               IF CUR-GEN = "M"
                   ADD 1 TO CT-MALE(C-IDX)
               ELSE
                   ADD 1 TO CT-FEMALE(C-IDX)
               END-IF

           ELSE
      * Nieuw land invoegen
               PERFORM VARYING I FROM 1 BY 1 UNTIL I > 200
                   SET C-IDX TO I
                   IF CT-KEY(C-IDX) = SPACES
                       MOVE CUR-KEY TO CT-KEY(C-IDX)
                       ADD 1 TO CT-TOTAL(C-IDX)

                       IF CUR-GEN = "M"
                           ADD 1 TO CT-MALE(C-IDX)
                       ELSE
                           ADD 1 TO CT-FEMALE(C-IDX)
                       END-IF

                       EXIT PERFORM
                   END-IF
               END-PERFORM
           END-IF.

           EXIT SECTION.

