4.6 Wissels

Voorwaardenamen zijn een handig hulpmiddel om condities kort op te schrijven. Een veel voorkomend gebruik van de voorwaardenaam zien we in zogenaamde wissels. Bij de spoorwegen bepaalt de stand van een wissel welke kant de trein opgaat.

onthoud

In COBOL is een wissel (Engels: switch, indicator) een veld dat als het ware in twee standen kan staan. Bij het nemen van beslissingen kijken we in welke stand de wissel staat.

Een wissel kwam voor in het programma volgende-dag (zie paragraaf 3.15). Daar was een veld met de naam datum-ok-wissel. We begonnen met de waarde "J" naar dat veld te brengen. Als er bij het controleren van de datum een fout werd geconstateerd, dan gaven we aan de wissel de waarde "N". De herhalingsstructuur waarin invoer en controle plaatsvonden, werd net zolang herhaald totdat datum-ok-wissel gelijk bleef aan "J" Hier volgt nog eens dat gedeelte uit het programma:

     Perform with test after until datum-ok-wissel = "J"
        perform vraag-een-datum
        move "J" to datum-ok-wissel
        if invoer-datum not numeric then
           display "Datum is niet numeriek"
           move "N" to datum-ok-wissel
        else
           perform controleer-datum
*          bij een geconstateerde fout komt er een foutboodschap
*          op het scherm en wordt datum-ok-wissel gelijk aan "N"
        end-if
     end-perform
  

De twee standen van een wissel kunnen we duidelijk aangeven met behulp van voorwaardenamen. Elke stand beschrijven we op een 88-level.

 01 datum-ok-wissel      picture X.
    88 datum-ok          value "J".
    88 datum-niet-ok     value "N".
  

De perform-opdracht kunnen we dan 'mooier' schrijven als:

     Perform with test after until datum-ok
  

COBOL heeft nog meer fraais. Ook bij het 'zetten' van een wissel (het geven van een waarde aan een veld dat we als wissel gebruiken) kunnen we de voorwaardenaam gebruiken. In plaats van:

move "N" to datum-ok-wissel

mogen we schrijven:

set datum-niet-ok to true
  

De set-opdracht zou je kunnen vertalen met: zet de wissel in de stand datum-niet-ok. Dat doet de computer door de waarde "N" over te brengen naar de variabele datum-ok-wissel.

Er bestaat geen set-opdracht met het woord false, om een wissel de andere kant op te zetten. De computer kan immers niet weten dat wij "J" het tegenovergestelde van "N" vinden. De Engelsen zullen "Y" als het tegenovergestelde van "N" zien.

Je mag wel schrijven:

set datum-ok to true
  

Daarmee laat je de computer de waarde "J" te geven aan het veld datum-ok-wissel, want de voorwaardenaam datum-ok is verbonden met de waarde "J".

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo