Bij het invoeren van gegevens op een computer kan er van alles misgaan. Een foutje is snel gemaaakt (zie je wel?). Het is heel gevaarlijk om zonder controle met ingevoerde gegevens te gaan rekenen. En voor de computer is het eerder rekenen dan je denkt. Zelfs een vergelijking als in 'if getal > 30 then' geldt voor de computer al als rekenen. Hij trekt namelijk de twee getallen van elkaar af om te kijken of het een groter is dan het ander. Daarom geldt als vuistregel: altijd eerst de invoer controleren.
COBOL kent voor dit soort controles de test op numeriek.
illustratie: Geert Nijmolen
In het volgende stukje programma staat de conditie until leeftijd numeric.
display "Wat is je leeftijd? " with no advancing accept leeftijd perform with test before until leeftijd numeric display "Geef een getal alsjeblieft." accept leeftijd end-perform
onthoud
De test op numeriek (Engels: numeric) heet in COBOL een klasse-voorwaarde (Engels: class condition). Een veld geldt als numeriek als het alleen cijfers bevat. In een veld met een S in de picture moet bovendien een tekenaanduiding aanwezig zijn.
De test op numeriek is een ander soort voorwaarde dan we tot nu toe steeds zagen (de relatie-voorwaarde). Daarbij was er steeds een vergelijkingsteken, zoals > of =. Zo'n teken ontbreekt bij de klasse-voorwaarde. Het is beslist onjuist om het is-gelijk-teken te gebruiken bij de numeric-test.
Als we willen zien of een veld niet numeriek is, dan mogen we het woordje not toevoegen:
if getal not numeric then ...
In de voorbeeldprogramma's in dit boek blijft een controle op de invoergegevens soms buiten beschouwing. Dat gebeurt om de aandacht niet af te leiden van het onderwerp waar het in dat voorbeeld om gaat. Houd echter in gedachten dat in een echt toepassingsprogramma altijd controles zullen moeten plaatsvinden.