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