Programmeren in COBOL/Relatieve bestanden met hash: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
kGeen bewerkingssamenvatting |
|||
Regel 1:
{{Programmeren in COBOL|deel=Bestandsorganisatie|sjabloonuit={{{sjabloonuit}}}}}
Relatieve bestanden kunnen via een sleutel makkelijk een record terugvinden. Dit kan via een cijfer (van 1 tot n). Maar een cijfer is niet altijd handig, en vaak weinig informatief. Een naam of een beschrijvend woord zouden makkelijker zijn. COBOL laat het gebruik van namen toe via een omweg: een [[w:hashfunctie|hash-functie]] zet de naam om in een cijfer waarmee je makkelijk het record kunt terugvinden. Het grote nadeel van een relatief bestand met hash is dat je op voorhand moet weten hoeveel records je maximaal zult hebben. Als je eerst 10 records wou hebben en je maakt dat bestand aan, moet je wanneer je plotseling 20 records wilt opslaan een nieuw relatief bestand aanmaken.
==Relatief bestand met hash aanmaken==
Regel 21:
</pre>
}}
Dit bestand gaan we omzetten in een relatief bestand. Het bevat de namen van wiki's met hun omschrijvingen. De namen van de wiki's zullen we gebruiken als sleutel. In het relatief bestand zal zowel de naam als de omschrijving van de wiki staan. Hieronder is een voorbeeld van een programma
{{code
|Taal= COBOL
Regel 148:
Waarom wordt ook later uitgelegd. Maar we moeten echter eerst een keer die relatief bestand openen als OUTPUT, dit zorgt ervoor dat het bestand wordt aangemaakt als het nog niet bestaat en voorkomt dat er fouten zijn als we het vervolgens openen met I-O. We lezen vervolgens het eerste lijntje in van het sequentiële bestand. Om vervolgens naar het deelprogramma ''omzetten'' te gaan als het op het einde van het sequentiële bestand is zal het deelprogramma stoppen.
Als we in ''omzetten'' zijn aangekomen, gaan we meteen naar het deelprogramma ''zoeken'' en van daaruit meteen naar de hash-functie.
{{code
|Taal= COBOL
Regel 181:
</pre>
}}
De hash functie is juist gebeurd. We hebben dus een sleutel en we lezen vervolgens het relatief bestand. Dit is meteen de reden waarom we het geopend hebben als I-O: we moeten het bestand ook lezen omdat we moeten zien of er niet al een record op die plaats is. Als er geen record is op die plaats dan krijgen we een INVALID KEY, hier ''slechtesleutel'' genaamd. INVALID KEY betekent hier ironisch genoeg dat het goed is want op de plaats van onze sleutel is er geen record dus kunnen we daar een record wegschrijven. Maar wat als er wel een record is? Hiervoor
{{code
|Taal= COBOL
|