13.1 Size error

In een programma komen onder meer de volgende twee variabelen voor:

01 daggemiddelde   pic 99.
01 weekgetal       pic 99.
  

Verder staat in dat programma de volgende opdracht:

    multiply daggemiddelde by 7 giving weekgetal
  

Als daggemiddelde de waarde 12 heeft, dan krijgt weekgetal met deze opdracht de waarde 84. Maar wat gebeurt er als daggemiddelde de waarde 15 heeft? Vijftien keer zeven is 105, maar het veld weekgetal is slechts twee posities groot. Het resultaat past niet. In COBOL heet dit een size error.

illustratie: Geert Nijmolen

cartoon: pak te nauw

onthoud

Als er een size error optreedt, zonder dat er in het statement voorzieningen zijn getroffen, dan is het resultaat onbepaald. Met 'onbepaald' bedoelt men dat niet is vastgelegd wat de inhoud van het veld is.

Als er een size error optreedt, dan is dat natuurlijk niet prettig. Je ziet dat het heel belangrijk is om de lengtes van de velden zorgvuldig te kiezen. Maar zelfs als je dat doet, dan kan een size error een enkele keer toch nog wel optreden. Gelukkig kun je van te voren bepalen wat er dan moet gebeuren. We breiden daartoe de opdracht uit met de calusule on size error:

    multiply daggemiddelde by 7 giving weekgetal
    on size error 
       display "weekgetal te groot; 99 aangenomen."
       move 99 to weekgetal
    end-multiply
  

Als tijdens de uitvoering van de vermenigvuldiging de uitkomst groter dreigt te worden dan twee cijfers, dan treedt een size error op. De computer laat de waarde van weekgetal wat hij was en voert de set-opdracht en de move-opdracht na on size error uit. Om aan te geven waar het rijtje uit te voeren opdrachten ophoudt, gebruiken we end-multiply.

onthoud

Achter elke rekenkundige opdracht mogen de woorden on size error komen. Erachter staan de opdrachten die de computer moet uitvoeren als een size error optreedt. Het rijtje opdrachten sluiten we op de gebruikelijke

Behalve on size error bestaat ook de not on size error. Daarachter plaatsen we de opdrachten die de computer alleen moet uitvoeren als geen size error optreedt bij de uitvoering van het rekenkundige statement.

    add toevoeging to totaal
    on size error
        display "totaal is reeds "; totaal
        display "toevoeging geweigerd."
    not on size error
        display "nieuw totaal is "; totaal
    end-add
  

Een size error treedt op in de volgende gevallen:

omslag 'Tijd voor COBOL'

Serie: leerboeken informatica

Titel: Tijd voor COBOL 2

Auteur: Andree Hollander

naamlogo