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
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: