Programmeren in COBOL/Bestandsorganisatie/Sequentiële bestanden: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
het gebeurT |
kGeen bewerkingssamenvatting |
||
Regel 1:
{{Programmeren in COBOL}}
Dit is een hoofdstuk van ''Programmeren in COBOL''. Hier zul je leren hoe je '''sequentiële bestanden''' kunt lezen.
==Sequentiële bestanden lezen==▼
Een sequentieel bestand is een bestand waar iedere lijn een ''record'' vormt. Een record zal gegevens opslaan voor bijvoorbeeld één persoon. Een sequentieel bestand kan verschillende datatypes (of extensies) hebben. Wij zullen ''.
▲===Voorbeeld van een Sequentieel bestand===
▲Een sequentieel bestand is een bestand waar iedere lijn een ''record'' vormt. Een record zal gegevens opslaan voor bijvoorbeeld één persoon. Een sequentieel bestand kan verschillende datatypes (of extensies) hebben. Wij zullen ''.dat'' gebruiken. Maar dat kan natuurlijk ook ''.in'' of iets anders zijn.
{{code
|Taal = COBOL
Regel 14 ⟶ 13:
}}
In dit sequentieel bestand worden de naam, adres en geslacht van een persoon opgeslagen.
▲==Sequentiële bestanden lezen==
We gaan een klein programma schrijven dat de gegevens inleest en alleen de achternaam, voornaam en geslacht op het scherm toont.
{{code
Regel 28 ⟶ 26:
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT invoer ASSIGN TO "invoer.
LINE SEQUENTIAL.
Regel 37 ⟶ 35:
02 achternaam PIC X(20).
02 voornaam PIC X(15).
02 PIC X(39).▼
02 geslacht PIC X.
Regel 58 ⟶ 55:
</pre>
}}
<pre>
Jan Peeters M
Peter Jansen M
</pre>
Nu gaan we dat een beetje uitleggen.
{{code
Regel 73 ⟶ 68:
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT invoer ASSIGN TO "invoer.
LINE SEQUENTIAL.
</pre>
}}
Als er gewerkt wordt met bestanden wordt dit stukje toegevoegd. Het bestand ''invoer.
{{code
|Taal = COBOL
Regel 89 ⟶ 84:
02 achternaam PIC X(20).
02 voornaam PIC X(15).
02 PIC X(39).▼
02 geslacht PIC X.
</pre>
}}
In de ''DATA DIVISION'' komt er de ''FILE SECTION'' bij. Er wordt gebruik gemaakt van groepsvelden om de gegevens in op te slaan. In dit geval is dat persoon.
{{code
|Taal = COBOL
Regel 136 ⟶ 130:
==Sequentiële bestanden schrijven==
Een bestand schrijven volgt natuurlijk het omgekeerde principe van een bestand lezen. Je verwerkt eerst de gegevens je plaatst die in het groepsveld van de uitvoer en vervolgens schrijf je het bestand. We zullen in dit voorbeeld een bestand openen en daarna lezen wat er in zit om dat te verwerken en uit te schrijven. Je moet natuurlijk niet een bestand lezen; je kan gewoon de gegevens inlezen via een ''ACCEPT'', maar dat neemt tijd in beslag. We gebruiken in dit voorbeeld hetzelfde sequentieel bestand om te lezen als in het vorige.
{{code
Regel 149 ⟶ 142:
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT invoer ASSIGN TO "invoer.
LINE SEQUENTIAL.
SELECT uitvoer ASSIGN to "uitvoer.
LINE SEQUENTIAL.
Regel 161 ⟶ 154:
02 achternaam PIC X(20).
02 voornaam PIC X(15).
02 PIC X(39).▼
02 geslacht PIC X.
Regel 198 ⟶ 190:
</pre>
}}
Een uitvoer-bestand wordt op dezelfde manier gekoppeld met een groepsveld en ook op dezelfde manier gesloten. Het bestand openen gebeurt op een andere manier "OPEN
{{code
|Taal = COBOL
Regel 210 ⟶ 202:
</pre>
}}
Het enige waar er moet op gelet worden, is het overzetten van de variabelen van het éne groepsveld naar het andere en ook de ''WRITE''-commando gevolgd door de groepsveld van de uitvoer en de ''END-WRITE''. Hieronder bevindt zicht het resultaat van dit programma.
<pre>
Jan Peeters M
Peter Jansen M
</pre>
==Record achteraan toevoegen==
Telkens we ''OPEN OUTPUT'' doen en we schrijven daar iets in wordt er eigenlijk een nieuw bestand opgeslagen m.a.w. als er al een bestand bestond met dezelfde naam gaan de gegevens in dat bestand verloren en wordt het vervangen door andere gegevens. Daardoor kun je geen record toevoegen met ''OPEN OUTPUT'' hievoor moet je ''OPEN EXTEND'' gebruiken. ''OPEN EXTEND'' betekent dat je automatisch vanachter gegevens kunt toevoegen. In dit volgende programma gaat de gebruiker gegevens van een persoon opgeven en die worden achteraan toegevoegd.
{{code
|Taal = COBOL
|Titel = Record achteraan toevoegen.
|Code =
<pre>
IDENTIFICATION DIVISION.
PROGRAM-ID. RecordToevoegen.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT uitvoer ASSIGN to "uitvoer.txt"
LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD uitvoer.
01 regel.
02 PIC X.
02 uitge PIC X.
WORKING-STORAGE SECTION.
77 PIC X VALUE "n".
88 eof VALUE "j".
PROCEDURE DIVISION.
HOOFD.
OPEN EXTEND uitvoer
DISPLAY "Geef de voornaam:"
ACCEPT uitvn NO BEEP
DISPLAY "Geef de achternaam:"
ACCEPT uitan NO BEEP
DISPLAY "Geef het geslacht:"
ACCEPT uitge NO BEEP
WRITE regel END-WRITE
CLOSE uitvoer
STOP RUN.
</pre>
}}
Niet zo moeilijk dus gewoon in de plaats van ''OPEN OUTPUT'' moet je ''OPEN EXTEND'' gebruiken.
[[Categorie:Programmeren in COBOL|Sequentiële bestanden]]
|