Programmeren in COBOL/Statements/UNSTRING

Uit Wikibooks

Programmeren in COBOL

Inhoudsopgave




UNSTRING is een statement van COBOL. Hier wordt de vorm en de betekenis van deze statement uitgelegd samen met voorbeelden.

Vorm[bewerken]

UNSTRING veld

[DELIMITED BY [ALL] veld/constante [OR [ALL] veld/constante]... ]
INTO {veld [DELIMITER IN veld] [COUNT IN veld]}...
[WITH POINTER veld]
[TALLYING IN veld]
[ON OVERFLOW code]
[NOT ON OVERFLOW code]

[END-UNSTRING]

[]: geeft aan dat het optioneel is.
{}: geeft aan dat dit één stuk is die samen hoort.
onderstreept: geeft aan dat het verplicht is dit te schrijven. 
Als het tussen [] staat betekent dat je dit minstens moet schrijven,
als je dat deel van de statement wilt gebruiken.
niet-onderstreept: betekent dat je het mag schrijven maar is niet verplicht.
...: Geeft aan dat je nog velden of constanten mag bijschrijven
of stukjes die tussen [] of {} staan herhalen.

Uitleg[bewerken]

UNSTRING[bewerken]

UNSTRING wordt hoofdzakelijk gebruikt om een string op te splitsen in substrings, al dan niet op basis van een teken. Er zijn twee soorten strings nodig: de bronstring, die zal worden opgesplitst in substrings, en de doelstrings, hier worden de substrings in overgebracht. Er kunnen één of meerdere doelstrings worden gebruikt.

DELIMITED(optioneel)[bewerken]

Dit is optioneel en als het wordt gebruikt geeft het aan wanneer de string wordt gespiltst op basis van een teken of meerdere tekens, de zogenaamde delimiter. De gegevens worden eerst gekopieerd naar de eerste doelstring als er een delimiter wordt ontdekt gaat hij naar de volgende doelstring en kopieert hij daar de gegevens verder. Dit proces wordt herhaald tot men aan het einde is gekomen van de bronstring of er geen doelstrings meer zijn om de gegevens naar te kopiëren.

Als dit niet wordt gebruikt worden de gegevens gekopieerd op basis van de doelstrings. De gegevens worden gekopieerd tot de doelstring vol is daarna worden de gegevens gekopieerd in de volgende doelstring enzoverder. Dit proces eindigt wanneer er geen doelstrings meer zijn of wanneer de bronstring volledig is gekopieerd.

INTO[bewerken]

De substrings komen terecht in de velden die hier achter komen. Dit mogen één of meerdere velden zijn.

COUNT(optioneel)[bewerken]

Dit telt gewoon het aantal tekens dat werd gekopieerd naar de doelstring.

POINTER(optioneel)[bewerken]

Hiermee kun je bepalen vanaf waar de UNSTRING moet werken. Bijvoorbeeld als je een veld van 10 tekens wilt opsplitsen in substrings maar je wilt pas beginnen van teken 3 moet je gewoon "UNSTRING veld" doen, veld moet dan natuurlijk het getal 3 bevatten als waarde.

TALLYING(optioneel)[bewerken]

Geeft aan hoeveel doelstrings werden gevuld met gegevens van de bronstring.

OVERFLOW(optioneel)[bewerken]

OVERFLOW wordt geactiveerd als de POINTER een waarde bevat die kleiner dan 1 is of groter dan het aantal tekens van het veld die wordt verdeeld in substrings. Of wanneer er niet genoeg doelstrings zijn om de substrings in op te slaan. Na OVERFLOW kun je programmacode schrijven zoals bijvoorbeeld een foutbericht.

NOT OVERFLOW(optioneel)[bewerken]

Doet het omgekeerde van OVERFLOW.

END-UNSTRING(optioneel)[bewerken]

Sluit de functie af.

Voorbeelden[bewerken]

Simpel voorbeeld[bewerken]

COBOL-code: UNSTRING - simpel voorbeeld

           UNSTRING datum
           INTO dag, maand, jaar 

Complex voobeeld[bewerken]

COBOL-code: UNSTRING - complex voorbeeld

           UNSTRING datum
             DELIMITED BY "-"
             INTO dag COUNT teller, maand , jaar
             ON OVERFLOW DISPLAY "FOUT!"
             NOT ON OVERFLOW DISPLAY "GOED!"
           END-UNSTRING

Zie ook[bewerken]


COBOL statements

ACCEPT | ADD | CALL | CLOSE | COMPUTE | DELETE | DISPLAY | DIVIDE | EVALUATE | IF | INSPECT | MOVE | MULTIPLY | OPEN | PERFORM | READ | REWRITE | START | STOP | STRING | SUBTRACT | UNSTRING | WRITE


 

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.