7.6 Teksten losmaken uit een een veld

Met de opdracht string knoopt de computer een aantal teksten aan elkaar in een veld. Met unstring gebeurt het omgekeerde.

onthoud

Met de unstring-opdracht laten we de computer de inhoud van een veld splitsen in verschillende stukken en daarna overbrengen naar een aantal andere velden.

illustratie: Geert Nijmolen

cartoon

Een voorbeeld. Gegeven zijn de volgende velden.

01  invoer-adres    pic x(90).
01  los.
    02 naam         pic x(40).
    02 straat       pic x(40).
    02 plaats       pic x(40).
  

Om ruimte te sparen heeft men naam, adres en woonplaats achter elkaar in invoer-adres geplaatst. Tussen de onderdelen staat een schuine streep. We gebruiken als inhoud in de komende voorbeelden telkens:
P.Jansen/Damln 93/3119 AD  KETHEL

De drie elementen moeten worden losgemaakt. Bij voorbeeld omdat er etiketten gedrukt moeten worden. De unstring-opdracht om dit te regelen luidt:

    unstring invoer-adres
        delimited by "/"
        into naam, straat, plaats
  

Na afloop van de unstring-opdracht heeft het veld naam de inhoud P.Jansen; straat heeft de inhoud Damln 93 en plaats 3119 AD  KETHEL.

De unstring-opdracht verloopt in twee fasen. Allereerst selecteert de computer de over te brengen stukken. Daartoe splitst hij bij een opgegeven scheidingsteken of bij het eind van het veld. De scheidingstekens zelf horen niet bij de geselecteerde teksten. De tweede fase is het overbrengen van de geselecteerde teksten naar de velden achter into. Dat overbrengen gebeurt volgens de regels van de move-opdracht. De oorspronkelijke waarde van de resultaatvelden gaat dus geheel verloren.

Alle velden bij de unstring-opdracht moeten alfanumeriek zijn, behalve de velden na into. Daar zijn numerieke velden toegestaan. We moeten numerieke velden uiteraard alleen gebruiken als we zeker weten dat er alleen cijfers geselecteerd zullen worden. Geen enkel veld bij de unstring-opdracht mag opgemaakt zijn.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo