11.10 Geneste perform

We gaan uit van de tabel uit de vorige paragraaf. We willen het totaal aantal geslaagden weten van alle jaren en van alle examens. We moeten dan alle elementen van de tabel bij elkaar optellen. In het volgende stukje gebeurt dat via een herhalingsstructuur binnen een andere herhalingsstructuur.

    move zero to totaal
    perform with test after 
    varying jaar-subs from 1 by 1 until jaar-subs >= 3
        perform with test after 
        varying examen-subs from 1 by 1 until examen-subs >= 4
            add examen(jaar-subs, examen-subs) to totaal
        end perform
    end perform
  

We beginnen met het op nul zetten van het veld totaal. Daarna lopen we alle drie de jaren af en van elk jaar alle vier examens. De gegevens van elk examen tellen we bij het totaal op.

Dit is een eenvoudige en duidelijke methode. Er is eigenlijk weinig reden om het anders te doen, maar stel dat we niet met in-line performs werken, maar met het aanroepen van paragrafen. De totaalbepaling wordt dan:

    move zero to totaal
    perform examen-afhandelen with test after 
    varying jaar-subs from 1 by 1 until jaar-subs >= 3.

examen-afhandelen.
    perform optellen with test after 
    varying examen-subs from 1 by 1 until examen-subs >= 4.

optellen.
    add examen(jaar-subs, examen-subs) to totaal.
  

In deze situatie hebben we veel paragrafen nodig. COBOL kent een iets kortere schrijfwijze. De twee perform-opdrachten worden dan samengevoegd. Zo ontstaat een versie van perform met after.

    perform optellen with test after 
    varying jaar-subs from 1 by 1 until jaar-subs >= 3
    after examen-subs from 1 by 1 until examen-subs >= 4.

optellen.
    add examen(jaar-subs, examen-subs) to totaal.
  

In deze versie van de perform geven we informatie over twee te variëren subscripts. De eerste is jaar-subs. Hij loopt van 1 naar 3. Bij elke waarde van jaar-subs doorloopt de tweede subscript, examen-subs, de waarden 1 tot en met 4. De tweede subscript varieert dus het snelst. We kunnen dit als volgt weergeven

jaar-subs    1 1 1 1  2 2 2 2  3 3 3 3
examen-subs  1 2 3 4  1 2 3 4  1 2 3 4
  

onthoud

Een perform met after mogen we alleen gebruiken bij een out-of-line perform, dus niet bij een in-line perform.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 2

Auteur: Andree Hollander

naamlogo