Programmeren in COBOL/Statements/UNSTRING
UNSTRING is een statement van COBOL. Hier wordt de vorm en de betekenis van deze statement uitgelegd samen met voorbeelden.
Vorm
bewerkenUNSTRING 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
bewerkenUNSTRING
bewerkenUNSTRING 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)
bewerkenDit 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
bewerkenDe substrings komen terecht in de velden die hier achter komen. Dit mogen één of meerdere velden zijn.
COUNT(optioneel)
bewerkenDit telt gewoon het aantal tekens dat werd gekopieerd naar de doelstring.
POINTER(optioneel)
bewerkenHiermee 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)
bewerkenGeeft aan hoeveel doelstrings werden gevuld met gegevens van de bronstring.
OVERFLOW(optioneel)
bewerkenOVERFLOW 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)
bewerkenDoet het omgekeerde van OVERFLOW.
END-UNSTRING(optioneel)
bewerkenSluit de functie af.
Voorbeelden
bewerkenSimpel voorbeeld
bewerkenCOBOL-code: UNSTRING - simpel voorbeeld
UNSTRING datum INTO dag, maand, jaar
Complex voobeeld
bewerkenCOBOL-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- Hoofdstuk Werken met tekst#Tekst opslitsen met UNSTRING|werken met tekst
- Functie STRING
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 |