000200 Identification Division. 000300 Program-Id. FARTYG5. 000400 Environment Division. 000500 Configuration Section. 000600 Special-Names. 000700 Decimal-Point is Comma 000800 . 000900 Input-Output Section. 001000 File-Control. 001100 Select Fartygs-Fil Assign to FARTINFO 001200 Organization is Sequential 001300 Access Is Sequential 001400 . 001500 Select Typer-Fil Assign to FARTTYP 001600 Organization is Sequential 001700 Access Is Sequential 001800 . 001900 Select Regioner-Fil Assign to FARTREG 002000 Organization is Relative 002100 Access Is Random 002200 Relative Key is Reg-Rel-Rec-Num 002300 . 002400 Select Sok-Fil Assign to FARTSOK 002500 Organization is Sequential 002600 Access Is Sequential 002700 . 002800 Select Rapport-Fil Assign to FARTRAPP 002900 Organization is Sequential 003000 Access Is Sequential 003100 . 003200 Data Division. 003300 File Section. 003400 FD Fartygs-Fil Recording F. 003500 01 F-Post. 003600 05 F-Namn Pic X(20). 003700 05 F-Typ Pic 9(02). 003800 05 F-Bruttovikt Pic 9(06). 003900 05 F-Besattning Pic 9(05). 004000 05 F-Region Pic 9(01). 004100 05 Pic X(46). 004200 004300 FD Typer-Fil Recording F. 004400 01 TYP-Post. 004500 05 Typ-Kod Pic 9(02). 004600 05 Typ-Namn Pic X(25). 004700 05 Pic X(53). 004800 004900 FD Regioner-Fil. 005000 01 REG-Post. 005100 05 Reg-Namn Pic X(80). 005200 005300 FD Sok-Fil Recording Mode F. 005400 01 SOK-Post. 005500 05 Sok-Namn Pic X(20). 005600 05 Pic X(60). 005700 005800 FD Rapport-Fil Recording F. 005900 01 RAP-Post Pic X(120). 006000 006100 006200 Working-Storage Section. 006300 01 Minne-Pekare Pointer Value Null. 006400 01 Minne-Storlek Pic S9(08) Binary. 006500 01 Minne-Heap Pic S9(08) Binary Value 0. 006600 006700 01 Fartygsnamn-Sok-Langd Pic 99 Value 0. 006800 01 Fartygsnamn-Fil-Langd Pic 99 Value 0. 006900 01 FTX1-Display Pic 99. 007000 007100 01 Fartant Pic 9(03) Value 0. 007200 01 Reg-Rel-Rec-Num Pic 9(01). 007300 007400 01 Villkor Pic 9(01) Value 0. 007500 88 Manga-Fler-Fartyg Value 1. 007600 88 Inga-Fler-Fartyg Value 2. 007700 88 Inga-Fler-Typer Value 3. 007800 88 Inga-Fler-Sokningar Value 4. 007900 88 Sokning-Saknas Value 5. 008000 88 Sokning-Finns Value 6. 008100 008200 01 Villkor2 Pic 9(01) Value 0. 008300 88 Sok-Igen Value 0. 008400 88 Sok-Inte-Igen Value 1. 008500 008600 01 Villkor3 Pic 9(01) Value 0. 008700 88 Inte-Samma-Sokning Value 0. 008800 88 Samma-Sokning Value 1. 008900 009000 009100 01 Typ-Antal Pic 9(02) Value 0. 009200 01 Typ-Tabell. 009300 05 Tab-Typ-Rad Occurs 50 Depending on 009400 Typ-Antal 009500 Indexed By TTX1. 009600 10 Tab-Typ Pic X(03). 009700 10 Tab-Namn Pic X(25). 009800 009900 01 Blank-Rad Pic X(10) Value Space. 010000 010100 01 Rapport-Slutrad. 010200 05 Pic X(20). 010300 05 Pic X(60) Value '*** S L U T pa rapport ***'. 010400 010500 01 Rapport-Rubrik. 010600 05 Pic X(20). 010700 05 Pic X(25) Value 'Sokning av fartyg'. 010800 010900 01 Sid-Rubrik. 011000 05 Pic X(20) Value 'Fartygs-Namn'. 011100 05 Pic X(02) Value Space. 011110 05 Pic X(10) Value 'Status'. 011200 05 Pic X(20) Value 'Fartygs-Typ'. 011300 05 Pic X(20) Value 'Region'. 011400 05 Pic X(12) Value 'Bruttovikt'. 011500 05 Pic X(12) Value 'Besattning'. 011600 011700 01 Detalj-Rad. 011800 05 DR-Namn Pic X(20). 011810 05 Pic X(02). 011900 05 DR-Status Pic X(10). 012000 05 DR-Typ Pic X(20). 012100 05 DR-Region Pic X(20). 012200 05 DR-Bruttovikt Pic Z(03).9(03). 012300 05 Pic X(07). 012400 05 DR-Besattning Pic Z(05). 012500 012600 Linkage Section. 012700 01 Fartyg-Tabell. 012800 05 Fartyg-Tabell-Rad Occurs 1 to 100 012900 Depending On Fartant 013000 Indexed by FTX1. 013100 10 FT-Namn Pic X(20). 013200 10 FT-Typ Pic 9(02). 013300 10 FT-Bruttovikt Pic 9(06). 013400 10 FT-Besattning Pic 9(05). 013500 10 FT-Region Pic 9(01). 013600 013700 Procedure Division. 013800 Perform Oppna-Alla-Filer 013900 Perform Fyll-Typ-Tabell 014000 Perform Rakna-Alla-Fartyg 014100 Perform Skaffa-Minnesutrymme 014200 Perform Fyll-Fartyg-Tabell 014300 014400 Perform Skriv-Rubriker 014500 014600 Perform Until Inga-Fler-Sokningar 014700 Read Sok-Fil 014800 At End 014900 Display 'Slut på sökfilen...' 015000 Set Inga-Fler-Sokningar to True 015100 Not At End 015200 Perform Search-Fartyg-Tabell 015300 End-Read 015400 End-Perform 015500 015600 Perform Skriv-Slutrad 015700 015800 GoBack 015900 . 016000*------------------------------------------------- 016100 Search-Fartyg-Tabell. 016200*------------------------------------------------- 016300 Set Sok-Igen to True 016400 Set Sokning-Finns to True 016500 Move Zero to Fartygsnamn-Sok-Langd 016600 Display '1-- Söker efter: ' Sok-Namn 016700 016800 Inspect Sok-Namn 016900 Tallying Fartygsnamn-Sok-Langd 017000 for Characters Before Space 017100 Display '2-- Soklangd ' Fartygsnamn-Sok-Langd 017200 Set FTX1 to 1 017300 Perform Sokning-Sker Until Sok-Inte-Igen 017400 . 017500 Sokning-Sker. 017600 Set FTX1-Display to FTX1 017700 017800 Display 'NY sökning' 017900 Display 'Sökning FTX1: ' FTX1-Display 018000 Display 'Söker efter : ' Sok-Namn 018100 Display Space 018200 018300 Search Fartyg-Tabell-Rad 018400 At End 018500 Set Sokning-Saknas to True 018600 If Samma-Sokning 018700 Set Sok-Inte-Igen to True 018800 Set Inte-Samma-Sokning to True 018900 Else 019000 019100 Display '***I/U*** ' Sok-Namn 019200 019300 Move 'I/U' to DR-Status 019400 Display 'Sökning *** ' Sok-Namn ' saknas' 019500 019600 Set Sok-Inte-Igen to True 019700 Display '*** saknas men gör Skriv-detaljrad' 019800 Perform Skriv-Detalj-Rad 019900 End-If 020000 When FT-Namn(FTX1)(1:Fartygsnamn-Sok-Langd) = 020100 Sok-Namn(1:Fartygsnamn-Sok-Langd) 020200 020300 Display '3*** Traff på sokning ***' 020400 Display '4-- Sok-Namn : ' Sok-Namn 020500 Display '5-- Fil-Namn : ' FT-Namn(FTX1) 020600 Display '6-- Kontrollerar...' 020700 020800 Move Zero to Fartygsnamn-Fil-Langd 020900 Inspect FT-Namn(FTX1) 021000 Tallying Fartygsnamn-Fil-Langd 021100 for Characters Before Space 021200 021300 Perform Skriv-Detalj-Rad 021400 021500 Display '7-- Filnamn langd: ' Fartygsnamn-Fil-Langd 021600 021700 If Fartygsnamn-Fil-Langd > Fartygsnamn-Sok-Langd 021800 Set Sok-Igen to True 021900 Set Samma-Sokning to True 022000 Set FTX1 Up by 1 022100 Display '8-- *** Sok Igen...' 022200 Else 022300 Set Sok-Inte-Igen to True 022400 Set FTX1 to 1 022500 Display '9--*** Sok Inte Igen' 022600 End-If 022700 Set Sokning-Finns to True 022800 Display '10- Skriv detaljrad' 022900 Display Space 023000 End-Search 023100 . 023200*------------------------------------------------- 023300 Skriv-Detalj-Rad. 023400*------------------------------------------------- 023500 If Sokning-Finns 023600 Move FT-Namn(FTX1) to DR-Namn 023700 Move Space to DR-Status 023800 If Fartygsnamn-Fil-Langd > Fartygsnamn-Sok-Langd 023900 024000 String 024100 Sok-Namn(1:Fartygsnamn-Sok-Langd) 024200 '*' Delimited by Size 024300 Into DR-Status 024400 End-String 024500 024600 Else 024700 Move 'Ok' to DR-Status 024800 End-If 024900 025000 Perform Las-Fartyg-Typ 025100 Perform Las-Region 025200 Move FT-Bruttovikt(FTX1) to DR-Bruttovikt 025300 Move FT-Besattning(FTX1) to DR-Besattning 025400 Else 025500 Move Sok-Namn to DR-Namn 025600 End-If 025700 Write Rap-Post from Detalj-Rad 025800 Write Rap-Post from Blank-Rad 025900 Move Space to Detalj-Rad 026000 . 026100*------------------------------------------------- 026200 Las-Region. 026300*------------------------------------------------- 026400 Move FT-Region(FTX1) to Reg-Rel-Rec-Num 026500 Reg-Rel-Rec-Num 026600 Read Regioner-Fil 026700 Invalid Key 026800 Display 'Region saknas för: ' Reg-Rel-Rec-Num 026900 Move 99 To Return-Code 027000 GoBack 027100 Not Invalid Key 027200 Move Reg-Namn to DR-Region 027300 End-Read 027400 . 027500*------------------------------------------------- 027600 Las-Fartyg-Typ. 027700*------------------------------------------------- 027800 Set TTX1 to 1 027900 Search Tab-Typ-Rad 028000 At End 028100 Display 'Typ saknas för: ' FT-Typ(FTX1) 028200 Move 98 to Return-Code 028300 GoBack 028400 When Tab-Typ(TTX1) = FT-Typ(FTX1) 028500 Move Tab-Namn(TTX1) to DR-Typ 028600 End-Search 028700 . 028800*------------------------------------------------- 028900 Rakna-Alla-Fartyg. 029000*------------------------------------------------- 029100 Perform Until Inga-Fler-Fartyg 029200 Read Fartygs-Fil 029300 At End 029400 Display 'Antal fartyg: ' Fartant 029500 Set Inga-Fler-Fartyg to True 029600 Close Fartygs-Fil 029700 Open Input Fartygs-Fil 029800 Not At End 029900 Add 1 to Fartant 030000 End-Read 030100 End-Perform 030200 Set Manga-Fler-Fartyg to True 030300 . 030400*------------------------------------------------- 030500 Skaffa-Minnesutrymme. 030600*------------------------------------------------- 030700 Multiply Fartant by 35 Giving Minne-Storlek 030800 Call 'CEEGTST' Using 030900 Minne-Heap 031000 Minne-Storlek 031100 Minne-Pekare 031200 omitted 031300 . 031400 If Minne-Pekare = Null 031500 Display 'Allokering av minne gick ej' 031600 Else 031700 Display 'Minne-Storlek ' Minne-Storlek ' allokerat' 031800 End-If 031900 032000 Set Address of Fartyg-Tabell to Minne-Pekare 032100 . 032200*------------------------------------------------- 032300 Fyll-Fartyg-Tabell. 032400*------------------------------------------------- 032500 Move Zero to Fartant 032600 Perform Until Inga-Fler-Fartyg 032700 Read Fartygs-Fil 032800 At End 032900 Display 'Fyllt ' Fartant ' i Fartyg-Tabell' 033000 Set Inga-Fler-Fartyg to True 033100 Not At End 033200 Add 1 to Fartant 033300 Move F-Post to Fartyg-Tabell-Rad(Fartant) 033400 End-Read 033500 End-Perform 033600 . 033700*------------------------------------------------- 033800 Fyll-Typ-Tabell. 033900*------------------------------------------------- 034000 Perform Until Inga-Fler-Typer 034100 Read Typer-Fil 034200 At End 034300 Set Inga-Fler-Typer to True 034400 Display 'Har fyllt TYP-Tabellen med ' 034500 Typ-Antal ' rader' 034600 Not At End 034700 Add 1 to Typ-Antal 034800 Move Typ-Post to Tab-Typ-Rad(Typ-Antal) 034900 Display '==> ' Tab-Namn(Typ-Antal) 035000 End-Read 035100 End-Perform 035200 . 035300*------------------------------------------------- 035400 Skriv-Rubriker. 035500*------------------------------------------------- 035600 Write Rap-Post from Rapport-Rubrik 035700 Write Rap-Post from Blank-Rad 035800 Write Rap-Post from Sid-Rubrik 035900 Write Rap-Post from Blank-Rad 036000 . 036100*------------------------------------------------- 036200 Skriv-Slutrad. 036300*------------------------------------------------- 036400 Write Rap-Post from Rapport-Slutrad 036500 . 036600*------------------------------------------------- 036700 Oppna-Alla-Filer. 036800*------------------------------------------------- 036900 Open Input Fartygs-Fil 037000 Open Input Regioner-Fil 037100 Open Input Typer-Fil 037200 Open Input Sok-Fil 037300 Open Output Rapport-Fil 037400 Display 'Alla filer är öppnade...' 037500 . 037600*------------------------------------------------- 037700 Stang-Alla-Filer. 037800*------------------------------------------------- 037900 Close Fartygs-Fil 038000 Close Regioner-Fil 038100 Close Sok-Fil 038200 Close Typer-Fil 038300 Close Rapport-Fil 038400 Display 'Alla filer är stängda' 038500 . 038600*------------------------------------------------- 038700 End Program FARTYG5. 038800*-------------------------------------------------