Herhalingen
Arnout van Kempen over rommelen in een digitale wereld.
Net als in andere talen kunnen we in COBOL een bepaald codeblock meermaals herhalen. In C deden we dat met
for(int x=0;x<=10;x++){ codeblock };
In COBOL doen we precies hetzelfde met recursie:
PERFORM 1-TOT-10.
STOP RUN.
1-TOT-10.
IF x <= 10
PERFORM codeblock
ADD 1 TO X
PERFORM 1-TOT-10
END-IF.
Maar COBOL kent ook een simpeler variant, die weliswaar minder flexibel is:
PERFORM 10 TIMES
PERFORM codeblock
END-PERFORM
We missen nu toegang tot de teller, zoals in C en in de eerste COBOL-variant, maar als we die toegang niet nodig hebben, is de laatste versie eigenlijk veel leesbaarder.
Met PERFORM kunnen we nog wat complexere herhalingen bouwen. Bijvoorbeeld
PERFORM UNTIL conditie zal herhalen tot aan de conditie wordt voldaan. En
PERFORM VARYING x FROM 1 BY 1 UNTIL conditie doet hetzelfde, maar laat de variabele x meelopen met een startwaarde en een waarde die bij iedere herhaling daarbij wordt opgeteld. Dit zit al erg in de buurt van het for-statement in C.
Hiermee hebben we de belangrijkste elementen van COBOL besproken. Voor wie er echt dieper in wil duiken zijn er nog geavanceerdere onderwerpen, zoals databases, modulair programmeren, en meer van dat fraais te ontdekken. Maar met wat we nu behandeld hebben, kom je een heel eind in het begrijpen van de basisstructuur van een COBOL-programma.
Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.
Gerelateerd
We gaan diep!
Arnout van Kempen over rommelen in een digitale wereld.
Voorwaarden in COBOL
Arnout van Kempen over rommelen in een digitale wereld.
Het Y2K-probleem
Arnout van Kempen over rommelen in een digitale wereld.
Over bits & bytes
Arnout van Kempen over rommelen in een digitale wereld.
En arrays dan?
Arnout van Kempen over rommelen in een digitale wereld.