Programmeren in COBOL/Velden/Groepsvelden en conditie met voorwaardenaam: verschil tussen versies

truUK, gebuisD + switch
kGeen bewerkingssamenvatting
(truUK, gebuisD + switch)
{{Programmeren in COBOL}}
In dit hoofdstuk leer je over '''groepsvelden en condities met voorwaardenaam'''. Dit gaat een beetje dieper in op [[Programmeren in COBOL/Inleiding#variabelen|variabelen]].
 
==Groepsvelden==
Een groepsveld kan gebruikt worden om via één acceptACCEPT data te geven aan meerdere variabelen.
{{code
|Taal = COBOL
WORKING-STORAGE SECTION.
01 getal.
02 a picPIC 9.
02 b picPIC 99.
 
PROCEDURE DIVISION.
</pre>
}}
In dit programma wordt een getal gelezen en dat getal zal worden opgesplitsopgesplitst in 2 getallen. In tegenstelling tot een gewone variabelvariabele, waar ''level'' "77" wordt gebruikt bij het declareren, moet je voor een groepsveld "01" gebruiken dus: "01 getal.". ''Getal'' zal dan de naam zijn van het groepsveld. Bij de naam van een groepsveld wordt geen ''picPIC'' gebruikt. Het groepsveld wordt onderverdeeld in andere variabelen. In dit geval is dat ''a'' en ''b''. Bij deze variabelen moet wel een picPIC worden gebruikt en dit is hetzelfde als bij andere variabelen. De lengte van het groepsveld ''getal'' hangt af van de som van de lengestlengtes van variabelen die bij het groepsveld horen. Hier is dit dus 3 tekens lang (''a'' heeft er 1 en ''b'' heeft er 2). Als je dus een getal leest met het groepsveld ''getal'' zal die worden opgesplitsopgesplitst. Hier een voorbeeld.
{{code
|Taal = COBOL
|Titel = Scherm
|Code =
<pre>
Scherm:
geef een getal:
193
93
</pre>
 
}}
Om van de variabelen van een groepsveld apart op het scherm te tonen, hoef je dus alleen maar ''displayDISPLAY'' te gebruiken, gevolgd door de naam van de variabelvariabele. Het omgekeerde is ook waar. Stel, je vraagt eerst de voornaam van de gebruiker en daarna de achternaam en je wilt die heel makkelijk hetopnieuw op het scherm opnieuw tonenweergeven.
{{code
|Taal = COBOL
WORKING-STORAGE SECTION.
01 naam.
02 voornaam picPIC xX(10).
02 achternaam picPIC xX(10).
 
PROCEDURE DIVISION.
</pre>
}}
Heel simpel dus: je leest apart de variabelen ''voornaam'' en ''achternaam''. Omdat die bij groepsveld ''naam'' horen kun je ze via ''displayDISPLAY'' beide in één keer tonen op het scherm. Maar wat al je voornaam exact 10 letters lang is? Dan wordt de voornaam en achternaam aan elkaar geschreven. Hiervoor bestaat de ''fillerFILLER''.
 
===FillerFILLER===
Een ''fillerFILLER'' kan voor twee zaken worden gebruikt. HetDe eerste werd in het vorige stukhierboven al aangehaald.: StelAls je hebt 2 variabelen in een groepsveld hebt en de inhoud van die beide variabelen gebruiken de totale voorziene lengte dat(bepaald diedoor variabele aankanPIC). Dan is het goed moest je nogMet een extra variabele, de ''fillerFILLER'', tussen die 2 hebben die ervoor zorgt dat wanneerkan je heteen groepsveldspatie toonttussen erdie de twee2 variabelen niet aan elkaar worden getoondzetten.
{{code
|Taal = COBOL
|Titel = FillerFILLER
|Code =
<pre>
WORKING-STORAGE SECTION.
01 naam.
02 voornaam picPIC xX(10).
02 picPIC xX valueVALUE " ".
02 achternaam picPIC xX(10).
 
PROCEDURE DIVISION.
</pre>
}}
Hier is tussen die variabelen ''voornaam'' en ''achternaam'' nog een derde geplaatst.: "''02 picPIC xX valueVALUE " ""'' omdatOmdat je de fillerFILLER toch niet gebruikt, moet je hethem geenniet naambenoemen. Sommige compilers geven wel een ''warning'' als je hem niet FILLER noemt (''02 FILLER PIC X VALUE " "''). Tussen ''achternaam'' en ''voornaam'' zal nu een spatie komen wanneer je het groepsveld ''naam'' toont. Je kunt natuurlijk naast een spatie ook alle andere tekens gebruiken -, +, *, /,... LetMaar wellet op! als je een fillerFILLER gebruikt: leesLees dan nooit het hele groepsveld in, in dit geval ''naam'', doe je dat welanders overschrijf je de ''fillerFILLER''. Dus nooit "acceptACCEPT naam".
 
De ''fillerFILLER'' kun je ook op een andere manier gebruiken. Wanneer je gegevens inleest kan het zijn dat je uiteindelijk bepaalde informatie niet nodig hebt. Je leest bijvoorbeeld namen in en je weet dat de eerste 10 tekens de voornaam is, maar die wil je niet. Dan kun je ook een ''fillerFILLER'' gebruiken.
{{code
|Taal = COBOL
|Titel = fillerFILLER
|Code =
<pre>
01 naam.
02 picPIC xX(10).
02 achternaam picPIC xX(10).
</pre>
}}
Als je dan ''naam'' inleest, zal de voornaam worden opgeslagen in de ''fillerFILLER''. Maar omdat je die toch niet nodig hebt, geef je de ''fillerFILLER'' geen naam. De gegevens gaan wel echtertoch niet verloren,: alsAls je het groepsveld ''naam'' toont, krijg je nogsteedsnog steeds de voornaam te zien. Het is gewoon een simple tructruuk om minder variabelnamen(overbodige) variabelen te hebben bij grote programmasprogramma's.
 
==Conditie met voorwaardenaam==
Conditie met voorwaardenaam is een manier om een bepaalde variabelvariabele te activeren als er voldaan is aan een bepaalde voorwaarde.
===De simpele manier===
{{code
DATA DIVISION.
WORKING-STORAGE SECTION.
77 getal picPIC 9.
88 even valueVALUE 0, 2, 4, 6, 8.
88 oneven valueVALUE 1, 3, 5, 7, 9.
 
PROCEDURE DIVISION.
</pre>
}}
De variabele ''getal'' is onderverdeeld in 2 andere variabelen: ''even'' en ''oneven''. Als het getal dat wordt gelezen en opgeslagen wordt in de variabele ''getal'', even is, dan wordt de variabele ''even'' geactiveerd. En met oneven wordt de variabele ''oneven'' geactiveerd.
 
===Gebruik van thruTHRU of through===
Als veel opvolgende cijfers als voorwaarde gelden, kun je thruTHRU gebruiken.
{{code
|Taal = COBOL
DATA DIVISION.
WORKING-STORAGE SECTION.
77 getal picPIC 99.
88 nietgeslaagd valueVALUE 0 thruTHRU 49.
88 geslaagd valueVALUE 50 thruTHRU 99.
 
PROCEDURE DIVISION.
</pre>
}}
Dit programma kijkt of een leerling gebuistal of niet geslaagd is. Wanneer het getal lager dan 50 is, zal de variabele ''niet geslaagd'' geactiveerd worden. Als het 50 of hoger is, zal de variabele ''geslaagd'' geactiveerd worden. Naast de Amerikaanse spelling ''thruTHRU'' kuntkan, je ook het Engelse ''throughTHROUGH'' gebruiken.
 
===Een boolean===
Je kan dankzij conditie met voorwaardenaam dus ook een boolean maken. Hier is een simpel voorbeeld hoe het moet.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 boolean picPIC xX.
88 ok valueVALUE "j", "J".
 
PROCEDURE DIVISION.
</pre>
}}
 
De gebruiker wordt gevraagd of het ok is. Antwoordt hij met een "j", dan wordt de variabelvariabele ok geactiveerd,; wanneer hij met iets anders antwoordt gebeurt er niets.
 
====Switch====
Een switch of vlag is ook een boolean. Zo kan bijgehouden worden of het einde van een bestand (EOF = end-of-file) of tabel bereikt werd.
{{code
|Taal = COBOL
|Titel = SchermSwitch
|Code =
<pre>
01 SW-EOF PIC X VALUE 'N'.
88 EOF PIC X VALUE 'Y'.
</pre>
}}
 
 
[[Categorie:Programmeren in COBOL|Groepsvelden en conditie met voorwaardenaam]]
34

bewerkingen

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.