Voor de volgende mogelijkheden van de unstring-opdracht nemen we het veld datum als voorbeeld. Dit veld van tien posities bevat linksaangesloten een datum. De volgorde is dag, maand, jaar. Tussen de onderdelen staat een streepje (-) of een schuine streep (/). De dag en de maand kunnen uit 1 of uit 2 cijfers bestaan. Het jaar is altijd vier cijfers. Voorbeelden (_ betekent spatie): 7-2-1956__, 9-10-1989_, 12/12/1999. Het veld datum moet gesplitst worden in dag en mnd en jaar. Bovendien willen we uitzoeken welke scheidingstekens tussen dag en mnd en tussen mnd en jaar zijn gebruikt.
01 datum pic x(10). 01 dag pic 99. 01 mnd pic 99. 01 jaar pic 9999. 01 scheiding1 pic x. 01 scheiding2 pic x. unstring datum delimited by "-" or "/" or space into dag delimiter in scheiding1 mnd delimiter in scheiding2 jaar
onthoud
Achter delimited by kunnen we een reeks scheidingen vermelden, met het woordje or ertussen. Elk van de genoemde tekens geldt als mogelijke scheiding.
De scheiding kunnen we per veld opslaan in een alfanumeriek veld. Als er geen scheiding is, bijvoorbeeld omdat het einde van het veld is bereikt, dan wordt de variabele na delimiter in gevuld met spaties. Let goed op het verschil tussen delimited by en delimiter in. Delimited by geeft de begrenzing of begrenzingen aan.
onthoud
Na delimiter in komt een variabele waarin de gevonden begrenzing wordt opgeborgen.
Nu gaan we het iets ingewikkelder maken. Stel dat het is toegestaan om twee streepjes te schrijven als de ruimte dat toelaat. Het veld datum kan dan ook nog de volgende inhoud hebben: 4--11-1978, 6--7--1993. Als we de bovenstaande unstring-opdracht gebruiken, dan vindt de computer na het eerste scheidingsteken opnieuw een scheidingsteken. Dat heeft tot gevolg dat er voor het tweede veld (mnd) geen tekens zijn geselecteerd. Het veld krijgt dan spaties als inhoud als het alfanumeriek is, of nullen als het numeriek is (zoals hier). Dat is niet de bedoeling. We willen tegen de computer zeggen: de scheiding is één of meer streepjes. Dat kan door all toe te voegen:
unstring datum delimited by all "-" or "/" or space into dag delimiter in scheiding1 mnd delimiter in scheiding2 jaar
Door all "-" te schrijven beschouwt de computer twee of meer streepjes als één scheiding. In het veld na delimiter in plaatst hij één streepje. Het gebruik van all kan heel handig zijn als we een zin hebben waarbij tussen de woorden een of meer spaties staan. We geven dan op: delimited by all space. Elk groepje spaties telt dan als één scheiding. Delimited by space (zonder all) betekent: de scheiding is slechts één teken lang.