9.7 Beginstatus of niet?

Dit is een voorbeeld van een zeer klein, maar compleet subprogramma.

identification division.
program-id. tel-programma.
data division.
working-storage section.
01  teller pic 999, value 1.
procedure division.
paragraaf.
    display teller
    add 1 to teller
    exit program.
  

Dit is een subprogramma zonder parameters, want er staat geen using achter procedure division. Er is bovendien geen linkage section.

De eerste keer dat dit programma wordt aangeroepen, heeft het zijn beginstatus. Dat wil zeggen dat de variabele teller de waarde 1 heeft. Dat getal vormt de uitvoer van het subprogramma. Vervolgens verhoogt het subprogramma teller met 1. Daarna geeft het de besturing terug aan het hoofdprogramma. De volgende keer dat het hoofdprogramma een call tel-programma uitvoert, heeft teller de waarde 2. Bij elke volgende aanroep zal de teller eentje hoger zijn. Na de eerste aanroep blijft het subprogramma in de status waarin het verkeert. COBOL gaat ervan uit dat een programma dat eenmaal is geladen beschikbaar blijft in het geheugen van de computer.

Soms willen we dat een subprogramma weer zijn beginwaarde aanneemt. We moeten dat speciaal aangeven. Daar zijn twee manieren voor. Vanuit het hoofdprogramma gebruiken we daarvoor het cancel-statement.

    cancel "tel-programma"
  

Na cancel staat de naam van een subprogramma.

onthoud

Het subprogramma dat in een cancel-opdracht staat, wordt als het ware buiten gebruik gesteld. De eerste call na de cancel-opdracht moet het subprogramma weer ophalen alsof het de eerste keer was.

Via de cancel-opdracht kunnen we zelf bepalen wanneer we een subprogramma in zijn beginstatus willen terugkrijgen.

Als we een subprogramma altijd in zijn beginstatus willen aantreffen, dan kunnen we in het subprogramma een uitbreiding opnemen na de programmanaam.

program-id. annuiteitsberekening is initial program.
  

Na de programmanaam staat is initial program. 
 

onthoud

Door de vermelding initial program, heeft een subprogramma bij elke aanroep zijn beginstatus. Dat wil zeggen dat variabelen niet hun oude waarde behouden. Hun waarde is onbepaald als ze in de working-storage section geen beginwaarde krijgen. Als de value-clausule voor het geven van een beginwaarde aanwezig is, dan hebben ze bij elke aanroep die beginwaarde.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo