Programmeren in COBOL/Relatieve bestanden zonder hash: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Sephiroth (overleg | bijdragen)
Geen bewerkingssamenvatting
Sephiroth (overleg | bijdragen)
kGeen bewerkingssamenvatting
Regel 1:
{{Programmeren in COBOL}}
Bij sequentiële bestanden is het moeilijk om een bepaald record terug te vinden. De enige optie is om dan record per record te lezen tot je het vind. Dat is natuurlijk niet echt handig en efficiënt. Daarom bestaan er relatieve bestanden. Een record in een relatief bestand zal een nummer krijgen de zogenaamde relatieve sleutel van 1 tot n. Via een bepaalde berekening kan COBOL bepalen waar deze record zich in het bestand bevind. Een relatief bestand kan op 3 manieren worden gelezen. ''Sequential'' zoals een sequentieel bestand. ''Random'' wat betekent dat je een nummer ingeeft en de record wordt opgehaald met dat nummer. En ''dynamic'' dit is een combinatie van de twee vorige.
===Relatief bestand aanmaken===
Een relatief bestand kun je niet in een tekstverwerker aanmaken. Je moet het via een programma aanmaken die je zelf hebt geschreven.
{{code
Regel 108:
</pre>}}
Hier valt ook niet veel te vertellen. Het is grotendeels zoals bij sequentiële bestanden. Het sequentieel bestand wordt gelezen. De gegevens worden overgebracht en de record wordt geschreven in het relatief bestand.
===Relatief bestand lezen===
====Relatief bestand sequentieel lezen====
{{code
|Taal= COBOL
Regel 175:
</pre>}}
Hier is niet speciaals te zien behalve de ''read''. Als het op het einde van het bestand komt gaat het gewoon verder met de programmacode.
====Relatief bestand random lezen====
{{code
|Taal= COBOL
Regel 259:
</pre>}}
Om een record op te halen is het enige wat je moet doen een nummer zetten in ''persoonnummer'' er moet wel een record zijn met dat nummer. Vervolgens doe je gewoon ''read'' en de gegevens worden opgehaald. Is ''persoonnummer'' 0 dan stopt de lus.
=====Fouten=====
De kans is natuurlijk heel groot dat er fouten zullen gebeuren wanneer je een nummer vraagt. De gebruiker kan het fout in typen of het record bestaat gewoonweg niet. Om te vermijden dat je aan raar fout bericht krijgt of het programma plotseling beïndigd kun je in COBOl een klein beveiliging inbouwen. Dit kost weinig moeite en het is best dat je het erbij zet.
{{code
Regel 280:
</pre>}}
Dit gaat dus via ''invalid key'' en ''not invalid key''. Achter ''invalid key'' kun je dus een stukje programmacode schrijven voor het geval dat het nummer fout is. Achter ''not invalid key'' kun je dus een stukje code schrijven voor als het wel juist is. Vergeet niet te eindigen met een ''end-read''.
===Record toevoegen===
Hier zullen we zien hoe je makkelijk een record kunt toevoegen aan een relatief bestand.
{{code
Regel 317:
</pre>}}
Een record toevoegen vraagt weinig programmeerwerk. ''Open extend'' wilt zeggen dat je het bestand opent met de bedoeling om achteraan in het bestand iets toe te voegen. Dus je kunt alleen maar een record vanachter toevoegen niet meer niet minder. Je laat de gegevens inlezen en schrijft die in het bestand d.m.v. ''write''. Dan kun je nog als extra de relatieve sleutel laten zien. Dan kan de gebruiker later de gegevens nog terugvinden d.m.v. die sleutel.
===Record herschrijven===
Nu gaan we zien hoe je een record moet herschrijven.
{{code
Regel 364:
</pre>}}
''Open i-o'' is nieuw, ''i-o'' is afgekort van ''input-outpu'' en betekent dus dat je het bestand zowel kunt lezen als schrijven. In dit programma vragen we eerst de nummer van de persoon op. Vervolgens tonen we die gegevens op het scherm en vragen we of deze gegevens moet worden aangepast. Je plaatst de nieuwe gegevens in de variabel ''gegevens'' en gebruikt ''rewrite'' om ze weg te schrijven. Bij ''rewrite'' kun je ook gebruik maken van ''invalid key'' en ''not invalid key''.
===Record verwijderen===
Het laatste dat we nog moeten zien is een record verwijderen.
{{code
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.