>>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. DP173EXAM1986.
AUTHOR. Michael Coughlan
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BOOKING-FILE ASSIGN TO "BOOKING.dat"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT WORK-FILE ASSIGN TO "WORK.dat".
SELECT SORTED-FILE ASSIGN TO "BOOKSORT.dat"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT SUMMARY-FILE ASSIGN TO "SUMMARY.dat"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD BOOKING-FILE.
01 CUSTOMER-RECORD-FA.
02 CUST-NAME-FA PIC X(30).
02 DEST-NAME-FA PIC X(20).
02 BOOKING-CHARGE-FA PIC 9(5)V99.
02 NUM-OF-MALES-FA PIC 99.
02 NUM-OF-FEMALES-FA PIC 99.
02 NUM-OF-CHILDREN-FA PIC 99.
02 CATEGORY-FA PIC X.
88 TOURIST VALUE "T".
SD WORK-FILE.
01 WORK-RECORD-FB.
02 FILLER PIC X(30).
02 DEST-NAME-FB PIC X(20).
02 FILLER PIC X(14).
FD SORTED-FILE.
01 CUSTOMER-RECORD-FC.
02 CUST-NAME-FC PIC X(30).
02 DEST-NAME-FC PIC X(20).
02 BOOKING-CHARGE-FC PIC 9(5)V99.
02 NUM-OF-MALES-FC PIC 99.
02 NUM-OF-FEMALES-FC PIC 99.
02 NUM-OF-CHILDREN-FC PIC 99.
02 CATEGORY-FC PIC X.
FD SUMMARY-FILE.
01 SUMMARY-RECORD-FD.
02 DEST-NAME-FD PIC X(20).
02 TOTAL-RECEIPTS-FD PIC 9(8)V99.
02 TOTAL-MALES-FD PIC 9(6).
02 TOTAL-FEMALES-FD PIC 9(6).
02 TOTAL-CHILDREN-FD PIC 9(6).
WORKING-STORAGE SECTION.
01 FLAGS-WA.
02 IS-IT-END-OF-FILE PIC 9 VALUE ZERO.
88 END-OF-FILE VALUE 1.
88 NOT-END-OF-FILE VALUE 0.
01 LOC-SURCHARGE-VALUES-WB.
02 FILLER PIC X(39)
VALUE "AFGHANISTAN50CAMBODIA 24CORSICA 18".
02 FILLER PIC X(39)
VALUE "EL SALVADOR85HAITI 21HONDURAS 23".
02 FILLER PIC X(39)
VALUE "ISRAEL 11IRAN 57IRAQ 33".
02 FILLER PIC X(39)
VALUE "LAOS 13LEBANON 90LIBYA 20".
02 FILLER PIC X(39)
VALUE "NICARAGUA 47SARDINIA 25SICILY 20".
02 FILLER PIC X(26)
VALUE "SPAIN 05SURINAM 07".
01 LOC-SURCHARGE-TABLE-WB REDEFINES LOC-SURCHARGE-VALUES-WB.
02 LOCATION-GROUP-WB
OCCURS 17 TIMES INDEXED BY LOC-PTR.
03 LOCATION-WB PIC X(11).
03 SURCHARGE-WB PIC 99.
01 MISC-VARIABLES-WC.
02 SURCHARGE-WC PIC 9(4)V99.
02 HOLD-DEST-WC PIC X(20).
PROCEDURE DIVISION.
MAIN SECTION.
10-START.
SORT WORK-FILE
ON ASCENDING DEST-NAME-FB
INPUT PROCEDURE IS SELECT-TOURISTS
GIVING SORTED-FILE.
OPEN INPUT SORTED-FILE.
OPEN OUTPUT SUMMARY-FILE.
READ SORTED-FILE
AT END SET END-OF-FILE TO TRUE.
PERFORM 20-CREATE-SUMMARY-FILE
UNTIL END-OF-FILE.
CLOSE SORTED-FILE
SUMMARY-FILE.
STOP RUN.
20-CREATE-SUMMARY-FILE.
MOVE ZEROS TO SUMMARY-RECORD-FD.
MOVE DEST-NAME-FC TO DEST-NAME-FD.
PERFORM 30-PROCESS-DESTINATION-RECS
UNTIL DEST-NAME-FC NOT EQUAL TO DEST-NAME-FD
OR END-OF-FILE.
SET LOC-PTR TO 1.
SEARCH LOCATION-GROUP-WB
AT END DISPLAY DEST-NAME-FD " NOT HOSTILE"
WHEN LOCATION-WB(LOC-PTR) = DEST-NAME-FD
COMPUTE SURCHARGE-WC ROUNDED
= (TOTAL-RECEIPTS-FD / 100) * SURCHARGE-WB(LOC-PTR)
ADD SURCHARGE-WC TO TOTAL-RECEIPTS-FD.
WRITE SUMMARY-RECORD-FD.
30-PROCESS-DESTINATION-RECS.
ADD BOOKING-CHARGE-FC TO TOTAL-RECEIPTS-FD.
ADD NUM-OF-MALES-FC TO TOTAL-MALES-FD.
ADD NUM-OF-FEMALES-FC TO TOTAL-FEMALES-FD.
ADD NUM-OF-CHILDREN-FC TO TOTAL-CHILDREN-FD
READ SORTED-FILE
AT END SET END-OF-FILE TO TRUE.
SELECT-TOURISTS SECTION.
BEGIN.
OPEN INPUT BOOKING-FILE.
READ BOOKING-FILE
AT END SET END-OF-FILE TO TRUE.
PERFORM UNTIL END-OF-FILE
IF TOURIST THEN
INSPECT DEST-NAME-FA CONVERTING
"abcdefghijklmnopqrstuvwxyz"
TO
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
RELEASE WORK-RECORD-FB FROM CUSTOMER-RECORD-FA
END-IF
READ BOOKING-FILE
AT END SET END-OF-FILE TO TRUE
END-READ
END-PERFORM.
SET NOT-END-OF-FILE TO TRUE.
CLOSE BOOKING-FILE.