000100 Identification Division. 000200 Program-Id. FREQPGM2. 000300 Environment Division. 000400 Input-Output Section. 000500 File-Control. 000600 Select FREQFILE Assign to FREQFDD 000700 Organization is Indexed 000800 Access is Sequential 000900 Record Key is Flight-Date in File-Record 001000 File Status is Freqfile-Status 001100 . 001200 Select FREQLIST Assign to FREQLDD 001300 Organization is Sequential 001400 Access is Sequential 001500 File Status is Freqlist-Status 001600 . 001700 Data Division. 001800 File Section. 001900 FD FREQFILE. 002000 01 File-Record. 002100 88 End-Of-Freq-File Value High-Value. 002200 05 Pic X(01). 002300 05 Flight-Date Pic X(05). 002400 05 City-Pair Pic X(07). 002500 05 Airline-Id Pic X(02). 002600 05 Flight-Number Pic 9(04). 002700 05 Class-Of-Travel Pic X(01). 002800 88 Tourist Value 'Y'. 002900 88 Business Value 'C'. 003000 88 Firstclass Value 'F'. 003100 05 Mileage Pic 9(05). 003200 05 Pic X(55). 003300 003400 FD FREQLIST Recording mode F. 003500 01 Listrow Pic X(120). 003600 003700*--------------------------------------- 003800 Working-Storage Section. 003900*--------------------------------------- 004000 004100 77 Mileage-Total Pic 9(08) Value 0. 004200 77 Incbonus-Value Pic 9(08) Value 0. 004300 77 Incbonus-Total Pic 9(08) Value 0. 004400 004500 01 Freqfile-Status Pic X(02). 004600 88 Freqfile-Openerror Values '01' thru '99'. 004700 01 Freqlist-Status Pic X(02). 004800 88 Freqlist-Openerror Values '01' thru '99'. 004900 005000 01 List-Blankrow. 005100 05 Pic X(120) Value Spaces. 005200 005300 01 List-Header1. 005400 05 Pic X(35) Value 'Frequent Flyer Report'. 005500 005510 01 List-Header2. 005520 05 Flight-Date Pic X(07) Value 'Date'. 005530 05 Flight-Id Pic X(05) Value 'Id'. 005540 05 Flight-Number Pic X(05) Value 'Fl#'. 005550 05 Class-Of-Travel Pic X(03) Value 'Cl'. 005560 05 City-Pair Pic X(09) Value 'C-Pair'. 005570 05 Mileage Pic X(09) Value 'Mileage'. 005580 05 Incbonus Pic X(10) Value 'Inc Bonus'. 006400 006500 01 List-Trailer. 006600 05 Pic X(25) 006700 Value 'Total Mileage '. 006800 05 Mileage Pic Z(11). 006900 05 Incbonus Pic Z(11). 007000 007010 01 List-Detail. 007020 05 Flight-Date Pic X(05). 007030 05 Pic X(02). 007040 05 Airline-Id Pic X(02). 007050 05 Pic X(02). 007060 05 Flight-Number Pic Z(04). 007070 05 Pic X(02). 007080 05 Class-Of-Travel Pic X(01). 007090 05 Pic X(02). 007091 05 City-Pair Pic X(07). 007092 05 Pic X(02). 007093 05 Mileage Pic Z(07). 008300 05 Pic X(04). 008400 05 Incbonus Pic Z(07). 008600 008700 008800*--------------------------------------- 008900 Procedure Division. 009000*--------------------------------------- 009100 Display '==> FREQREAD is starting...' 009200 Perform Open-Files 009300 Perform Write-Freq-Headers 009400 Perform Read-Freqfile Until End-Of-Freq-File 009500 Perform Write-Freq-Trailer 009600 Perform Close-Files 009700 Display '==> FREQREAD ended normally' 009800 GoBack 009900 . 010000*------------------------------------- 010100 Read-Freqfile. 010200*------------------------------------- 010300 Read Freqfile 010400 At End 010500 Set End-Of-Freq-File to True 010600 Not At End 010700 Perform Write-Freq-Detail 010800 End-Read 010900 . 011000*------------------------------------- 011100 Calculate-Bonus. 011200*------------------------------------- 011300 Evaluate True 011400 When Mileage in File-Record Less Than 500 011500 Move 500 to Incbonus-Value 011600 Incbonus in List-Detail 011700 When Tourist 011800 Move Mileage in File-Record to 011900 Incbonus-Value 012000 Incbonus in List-Detail 012100 When Business 012200 Compute Incbonus-Value = 012300 Mileage in File-Record * 1.25 012400 Move Incbonus-Value to 012500 Incbonus in List-Detail 012600 When Firstclass 012700 Compute Incbonus-Value = 012800 Mileage in File-Record * 1.50 012900 Move Incbonus-Value to 013000 Incbonus in List-Detail 013100 End-Evaluate 013200 013300 Add Incbonus-Value to Incbonus-Total 013400 . 013500*------------------------------------- 013600 Write-Freq-Headers. 013700*------------------------------------- 013800 Write Listrow from List-Header1 013900 Write Listrow from List-Blankrow 014000 Write Listrow from List-Header2 014100 Write Listrow from List-Blankrow 014200 . 014300*------------------------------------- 014400 Write-Freq-Trailer. 014500*------------------------------------- 014600 Write Listrow 014700 from List-Blankrow 014800 Move Mileage-Total to 014900 Mileage in List-Trailer 015000 Move Incbonus-Total to 015010 Incbonus in List-Trailer 015020 Write Listrow 015030 from List-Trailer 015040 . 015100*------------------------------------- 015200 Write-Freq-Detail. 015300*------------------------------------- 015500 Perform Calculate-Bonus 015600 Move Corr File-Record to List-Detail 015700 Add Mileage in File-Record to 015800 Mileage-Total 015900 016000 Write Listrow from List-Detail 016100 . 016200*------------------------------------- 016300 Open-Files. 016400*------------------------------------- 016500 Open Input FREQFILE 016600 If Freqfile-Openerror 016700 Display '==> Openerror: FREQFILE' 016800 Display '==> Status : ' Freqfile-Status 016900 Move 21 to Return-Code 017000 Goback 017100 End-If 017200 Display '==> FREQFILE is Open' 017300 017400 Open Output FREQLIST 017500 If Freqlist-Openerror 017600 Display '==> Openerror: FREQLIST' 017700 Display '==> Status : ' Freqlist-Status 017800 Move 22 to Return-Code 017900 Goback 018000 End-If 018100 Display '==> FREQLIST is Open' 018200 . 018300*------------------------------------- 018400 Close-Files. 018500*------------------------------------- 018600 Close FREQFILE 018700 FREQLIST 018800 . 018900 End Program FREQPGM2. 019000