Programmeren in COBOL/Relatieve bestanden zonder hash: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
kGeen bewerkingssamenvatting |
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. ''
==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.
Regel 25:
FILE SECTION.
FD persoon.
01 gegevens
FD persoonrel.
01 gegevensrel
WORKING-STORAGE SECTION.
77
88 eof
01 persoonnummer
PROCEDURE DIVISION.
Regel 60:
Piet Jansen
</pre>}}
Dit is het sequentieel bestand. Je kunt natuurlijk ook de gegevens inlezen via ''
{{code
|Taal= COBOL
Regel 75:
RELATIVE KEY persoonnummer.
</pre>}}
Bij ''
{{code
|Taal= COBOL
Regel 83:
FILE SECTION.
FD persoon.
01 gegevens
FD persoonrel.
01 gegevensrel
WORKING-STORAGE SECTION.
77
88 eof
01 persoonnummer
</pre>}}
Er valt niet echt veel te zeggen over de ''
{{code
|Taal= COBOL
Regel 109:
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==
{{zieook| Zie ook [[Programmeren in COBOL/Statements/READ|READ]] voor meer informatie.}}
===Relatief bestand sequentieel lezen===
{{code
Regel 128 ⟶ 129:
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 bestandstatus
88 eof
PROCEDURE DIVISION.
Regel 156 ⟶ 157:
FILE STATUS bestandstatus.
</pre>}}
Het enige interessante hier is ''
{{code
|Taal= COBOL
|Titel= Relatief bestand lezen
|Code=<pre>
77 bestandstatus
88 eof
</pre>}}
''
{{code
|Taal= COBOL
Regel 174 ⟶ 175:
END-PERFORM
</pre>}}
Hier is niet speciaals te zien behalve de ''
===Relatief bestand random lezen===
{{code
Regel 195 ⟶ 196:
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 persoonnummer
88 stoppen
PROCEDURE DIVISION.
Regel 217 ⟶ 218:
STOP RUN.
</pre>}}
Een relatief bestand ''
{{code
|Taal= COBOL
Regel 235 ⟶ 236:
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 persoonnummer
88 stoppen
</pre>}}
Zoals er in het vorige stukje werd gezegd moet je opletten met de lengte van de record. Als je de record hebt weggeschreven met een lengte van 50 tekens moet je die ook met die lengte weer lezen. Met de variabele ''persoonnummer'' gaan we de records lezen. Als ''persoonnummer'' 0 is wordt ''stoppen'' actief die komt van pas bij de lus dat we gaan gebruiken.
Regel 258 ⟶ 259:
END-PERFORM
</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 ''
====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
{{code
|Taal= COBOL
Regel 279 ⟶ 280:
END-PERFORM
</pre>}}
Dit gaat dus via ''
==Record toevoegen==
{{zieook| Zie ook [[Programmeren in COBOL/Statements/WRITE|WRITE]] voor meer informatie.}}
Hier zullen we zien hoe je makkelijk een record kunt toevoegen aan een relatief bestand.
{{code
Regel 300 ⟶ 302:
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 persoonnummer
PROCEDURE DIVISION.
Regel 316 ⟶ 318:
STOP RUN.
</pre>}}
Een record toevoegen vraagt weinig programmeerwerk. ''
==Record herschrijven==
{{zieook| Zie ook [[Programmeren in COBOL/Statements/REWRITE|REWRITE]] voor meer informatie.}}
Nu gaan we zien hoe je een record moet herschrijven.
{{code
Regel 336 ⟶ 339:
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 persoonnummer
77 aanpassen
88 ja
PROCEDURE DIVISION.
Regel 363 ⟶ 366:
STOP RUN.
</pre>}}
''
==Record verwijderen==
{{zieook| Zie ook [[Programmeren in COBOL/Statements/DELETE|DELETE]] voor meer informatie.}}
Het laatste dat we nog moeten zien is een record verwijderen.
{{code
Regel 379 ⟶ 383:
ACCESS RANDOM
RELATIVE KEY persoonnummer.
DATA DIVISION.
FILE SECTION.
FD persoon.
01 gegevens
WORKING-STORAGE SECTION.
77 persoonnummer
PROCEDURE DIVISION.
Regel 394 ⟶ 400:
STOP RUN.
</pre>}}
Als je iets uit een relatief bestand wilt verwijderen moet je die open via ''
[[Categorie:Programmeren in COBOL|Relatieve bestanden zonder hash]]
|