Herhaling komt in vele soorten voor. Bij programmastructuurdiagrammen is een van de vormen het herhalingsdiagram met de test achteraf (zie figuur 1.2). In het ingesprongen gedeelte staan de bewerkingen die moeten worden herhaald. In de onderste ruimte staat een voorwaarde die bepaalt hoe vaak de bewerking moet worden uitgevoerd.
Figuur 1.2 Herhalingsdiagram met de test achteraf
Om de structuur van het schema hierboven in COBOL te coderen gebruiken we een van de vele varianten van het perform-statement. Eerst volgt hier een voorbeeld.
compute aantal = 0 perform with test after until aantal >= 24 display " " compute aantal = aantal + 1 end-perform
Dit stukje programma toont een primitieve manier om een beeldscherm van 24 regels leeg te maken. Door 24 keer een lege regel op het scherm te plaatsen is alle aanwezige tekst naar boven geschoven en uit het beeld: verdwenen. De variabele aantal houdt bij hoeveel regels er al zijn opgeschoven. Twee opdrachten moeten herhaaldelijk worden uitgevoerd: een display-opdracht en een compute-opdracht. De display-opdracht plaatst een spatie en schuift het scherm een regel omhoog. Met de compute-opdracht zorgen we er voor dat de waarde van aantal met 1 stijgt. Deze twee opdrachten staan tussen de regel die begint met perform en de regel die end-perform luidt. Dat zijn de begrenzers van de herhaling. Laten we even stilstaan bij de regel:
perform with test after until aantal >= 24
De woorden with test after geven aan dat de computer achteraf kijkt naar de voorwaarde. De opdrachten van de herhaling zijn dan al eenmaal uitgevoerd. Je zult vermoeden dat er ook een variant is met with test before; (en daar heb je gelijk in), maar daar kijken we in dit hoofdstuk niet naar. Om de grens (het bereik) van de herhaling aan te geven beschikt COBOL over until. In COBOL kunnen we alleen aangeven wanneer de herhaling moet stoppen: de computer gaat automatisch door met herhalen totdat (Engels: until) de voorwaarde waar is geworden.
We zullen de programmaregels stap voor stap doorlopen om de werking van de perform-constructie te bekijken. Allereerst krijgt de variabele aantal de waarde nul. Dit gebeurt buiten de herhaling. Als volgende stap zet de computer een lege regel op het scherm en hij verhoogt de variabele aantal (= O) met 1: aantal wordt gelijk aan 1. Pas daarna kijkt de computer naar de conditie. Is aantal groter of gelijk aan 24? Als dat zo is, dan. moet hij stoppen met herhalen. De variabele aantal is pas 1, dus de computer stopt niet, maar gaat herhalen: weer een lege regel en de verhoging van aantal. Dat herhalen gaat door totdat voor de 24e keer een lege regel op het scherm is gezet. Aantal is dan 24 keer met 1 verhoogd en heeft daardoor de waarde 24 gekregen. Ook na de verhoging tot 24 komt de conditie weer aan bod. De computer vergelijkt aantal met 24 en constateert dat de voorwaarde nu waar is geworden; de grens van de herhaling is dus bereikt. Dat betekent dat de herhaling is afgelopen. Deze beschrijving sluit mooi aan bij het PSD van figuur 1.3:
Figuur 1.3 PSD 'Scherm schoonmaken'
Omdat de test achteraf plaatsvindt, worden de opdrachten van de herhaling altijd minstens een keer uitgevoerd.
illustratie: Geert Nijmolen