3.4 Voorloopnullen onderdrukken

In de paragrafen 3.1 en 3.2 ging het over het rekenen met negatieve en gebroken getallen. In deze en de volgende paragraaf gaat het over het afdrukken van getallen. We willen de uitvoer verfraaien. Een ander woord voor verfraaien is opmaken. Bij het mooier maken van de computeruitvoer spreekt men over opmaken (Engels: editing).

Bij de uitvoer van getallen kan men minstens drie redelijk klinkende wensen hebben:

Elk van de drie genoemde wensen kan de computer voor ons vervullen als we de juiste picture-clausule schrijven.

We kijken allereerst naar de nulonderdrukking (Engels: zero suppression).

illustratie: Geert Nijmolen

cartoon

onthoud

Bij nulonderdrukking gaat het om het vervangen van voorloopnullen (Engels: leading zeroes) door spaties. Voor elke positie van het getal waarbij een eventuele voorloopnul een spatie moet worden, schrijven we de letter Z.

Vergelijk de picture-beschrijvingen van de volgende twee velden:

01 rekennummer      picture 9999.
01 afdruknummer     picture ZZZ9.
  

Rekennummer is een gewoon numeriek veld van vier posities. Het veld afdruknummer is een numeriek-opgemaakt veld van vier posities. Maximaal drie keer kan een nul vervangen worden door een spatie. De laatste positie in de picture is een 9 en geen Z. Daarmee geven we aan dat op die laatste plaats een eventuele nul moet blijven staan. Bekijk het volgende stukje programma:

move 3 to rekennummer
perform with test after until rekennummer > 9999
   move rekennummer to afdruknummer
   display afdruknummer
   compute rekennummer = rekennummer * 10
end-perform
  

Dit programmafragment zorgt voor de volgende uitvoer:

   3
  30
 300
3000
  

Op de plaats waar voorloopnullen zouden staan, staan nu spaties. Bij het werken met opgemaakte velden is er een zeer belangrijke regel:

onthoud

Met een opgemaakt veld kun je niet rekenen.

Het is van groot belang om dit goed te onthouden. Het is heel makkelijk om tegen deze regel te zondigen. Maar misschien gebeurt dat minder vaak als je begrijpt waarom deze regel geldt. Als het veld afdruknummer de waarde 3 ontvangt, dan komt dit in het geheugen te staan als: spatie spatie spatie drie. De spatie is geen numeriek teken. De computer zou niet weten hoe hij die inhoud moet vermenigvuldigen met 10. Om die reden hebben we in dit voorbeeld twee velden nodig: een veld om te rekenen en een veld om de waarde op de gewenste manier af te beelden.

Een opgemaakt veld mag het resultaatveld zijn van een rekenkundige opdracht. Het wordt dan immers niet gebruikt bij de berekening, maar ontvangt alleen het uitgerekende resultaat. In een opgemaakt veld mag wel de letter V voorkomen (om de plaats van het decimaalteken aan te geven), maar niet de letter S.

Het is toegestaan om een opgemaakt veld over te brengen naar een niet-opgemaakt veld. De computer vervangt dan de opmaaktekens weer door tekens om mee te rekenen. Spaties vervangt hij weer door nullen. In het Engels heet dit terugbrengproces: de-editing.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo