|
Parsing
Een string opdelen in componenten
Met de Parse instructie kunnen variabelen en/of strings
opgedeeld worden in componenten.
Kijk voor een voorbeeld eens in programma PARSE1.rex.
In dit programma wordt eerst een variabele REGEL gevuld met
wat getallen. We hebben nu alleen het eerste en het vierde getal nodig,
en wel in aparte variabelen. Het programma laat zien hoe dat kan.
De punt fungeert hier als dummy placeholder. Het eerste getal
zal geplaatst worden in de variabele SPELTEL, het tweede en het
derde getal worden weggegooid, het vierde getal komt terecht in de
variabele PERSREC en de rest van de getallen wordt ook weggegooid.
/* REXX */
REGEL = '39 1 2 999 3 4 5'
Parse Var REGEL SPELTEL . . PERSREC .
Say 'Regel : 'REGEL
Say 'Speltel: 'SPELTEL
Say 'PersRec: 'PERSREC
Parse Value '28 1 2 888 3 4 5' With SPELTEL . . PERSREC .
Say 'Waarde : 28 1 2 888 3 4 5'
Say 'Speltel: 'SPELTEL
Say 'PersRec: 'PERSREC
Exit 0
Het tweede voorbeeld laat een variant van de Parse instructie
zien, waarbij de waarde van een string (literal) wordt opgedeeld.
Een string verwerken
Kijk voor nog een voorbeeld eens in programma PARSE2.rex.
In dit programma wordt eerst een variabele REGEL gevuld met
een achttal teksten. We willen nu op basis van een patroon de string
opdelen in drie delen. Alles voor 'Drie' moet naar de variabele
LINKS, alles na 'Drie' en voor 'Zes' moet naar de variabele
MIDDEN en alles na 'Zes' moet naar de variabele RECHTS.
/* REXX */
REGEL = 'Een Twee Drie Vier Vijf Zes Zeven Acht'
Parse Var REGEL LINKS 'Drie ' MIDDEN 'Zes ' RECHTS
Say 'Links : 'LINKS
Say 'Midden: 'MIDDEN
Say 'Rechts: 'RECHTS
Do While (REGEL <> '')
Parse Var REGEL WOORD REGEL
Say 'Woord : 'WOORD
End
Exit 0
Vervolgens laat het programma zien hoe een variabele woord voor woord
kan worden opgedeeld. Deze toepassing zul je in veel REXX programma'a
terug vinden. Vaak worden resultaten van een bepaalde bewerking opgeslagen
in een string. Deze resultaten wil je dan bijvoorbeeld stuk voor stuk
verwerken. Door nu het eerste woord van de string af te knippen, in een
aparte variabele op te slaan, en vervolgens de rest weer in de string
terug te plaatsen, kun je de string middels een iteratie woord voor woord
verwerken.
|