4.7 Tussenvoegen

In de paragrafen 3.4 en 3.5 ontdekten we het gemak van een opgemaakt veld. Door het plaatsen van een Z, een punt of een minteken in de picture-string van een variabele kunnen we de uitvoer verfraaien:
- de Z zorgt voor het onderdrukken van voorloopnullen;
- de punt levert een punt op de plaats van de decimaalaanduiding;
- met een minteken kunnen we zichtbaar maken dat een getal positief of negatief is.

Daarmee zijn de mogelijkheden voor opgemaakte velden nog lang niet uitgeput. In deze paragraaf gaat het om tekens die in een veld op een vaste plaats staan. Het betreft de schuine streep, de nul, de komma, en de spatie. Als eerste voorbeeld nemen we de schuine streep (/).

In de working-storage section van een programma komt de volgende veldbeschrijving voor:

01 datum      picture 99/99/99.
  

Dit is een veld van acht posities lang. Zes van de acht zijn bestemd voor cijfers (dat zijn de gebruikelijke negens in de picture-string). Verder zijn er twee schuine strepen.

onthoud

Een schuine streep in een picture-string betekent: als er iets naar dit veld wordt overgebracht, dan moet op die plaats een schuine streep staan.

Stel dat het vandaag 1 april 1999 is. We geven de opdracht:

     accept datum from date
  

De computer brengt de zes cijfers vanuit de computerdatum over naar het veld datum maar houdt rekening met de opmaak. De inhoud van het veld datum zal dan zijn: 99/04/01. Deze mogelijkheid kan flink wat extra werk besparen (zie opgave 4.12 in het werkboek).

onthoud

Een nul in de picture van een veld levert een nul op die plaats op.

Een toepassing daarvan is het aanvullen van een bedrag in guldens met twee nullen:

01 geldbedrag    picture ZZZZ9.00
  

Na de opdracht

    move 123 to geldbedrag

bevat het veld twee nullen (zie figuur 4.1):

Figuur 4.1 Geldbedrag

__123.00

Er staan twee nullen in het veld. Die nullen staan er niet van tevoren in. De computer zet ze pas in dat veld wanneer hij een elementaire move naar het betrokken veld uitvoert.

Het derde tussenvoegteken is de komma.

onthoud

De schuine streep, de nul en de komma vult de computer in principe op de aangegeven plaats in. Maar er komt een spatie voor in de plaats als het teken alleen maar onderdrukte nullen voor zich heeft. Net zoals alle andere vormen van opmaak, werkt het tussenvoegen niet als er bij de move een groepsveld is betrokken.

Een voorbeeld van het gebruik van komma's in een veld:

01 grootbedrag    picture ZZ,ZZZ,ZZ9.99.
  

Bekijk in de volgende tabel wat het resultaat is na elke move-opdracht

opdracht                              veldinhoud
move 12345678.90 to grootbedrag    12,345,678.90
move    45678.90 to grootbedrag        45,678.90
move      678.90 to grootbedrag           678.90
  

We zien dat een komma zichtbaar wordt op de aangegeven plaats, behalve als er alleen maar spaties voor staan. Deze regel is niet zo gek, want een verdwaald kommaatje tussen allemaal spaties staat een beetje raar. De komma is hier gebruikt om de duizendtallen te scheiden. In de volgende paragraaf zullen we zien hoe we de functie van de komma en punt kunnen verwisselen. We kunnen de komma en de punt dan toepassen op de manier die in Nederland gebruikelijk is.

Het laatste tussenvoegteken is de spatie. In de picture-string geven we die aan met de letter B (van het Engelse woord blank).

onthoud

De letter B in een picture-string geeft een spatie in het veld als er een waarde naar het veld wordt overgebracht via een move-opdracht waarbij geen groepsvelden zijn betrokken.

Deze letter B levert een handige manier om getallen te splitsen.

01 telefoonnummer  picture ZZZBZZB99.
  

illustratie: Geert Nijmolen

cartoon

Als we het getal 123456 overbrengen naar het veld telefoonnummer met de bovenstaande picture, dan is de inhoud van dat veld (figuur 4.2):

Figuur 4.2 Telefoonnummer

_12_34_56

Het eerste lege vakje komt vanwege de Z in de picture; het is een onderdrukte nul. De andere twee lege vakjes zijn veroorzaakt door de letter B in de picture-string.

Het verfraaien van de uitvoer heeft bijna uitsluitend betrekking op numerieke velden. Maar er is één uitzondering:

onthoud

De tussenvoegtekens '/', '0' en 'B' mogen ook in een alfanumeriek veld voorkomen. De andere opmaaktekens, zoals de punt en de komma dus niet!

Een voorbeeld van de B temidden van X-en:

01 opgemaakte-postcode   picture XXXXBXXBB.
  

De opdracht:

    move "9876AH" to opgemaakte-postcode
  

Levert netjes een spatie tussen de beide elementen van de postcode en twee spaties na de twee letters in de postcode (figuur 4.3):

Figuur 4.3 Postcode

9876_AH__

In een veld moet minstens één positie beschikbaar zijn voor een teken uit het zendende veld. Een veld mag dus niet uitsluitend uit tussenvoegtekens bestaan.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo