Parsing multiple strings
Only ARG and PARSE ARG can have more than one source string. To
parse multiple strings, you can specify multiple comma-separated
templates. Here is an example:
parse arg template1, template2, template3This instruction consists of the keywords PARSE ARG and three comma-separated templates. (For an ARG instruction, the source strings to parse come from arguments you specify when you call a program or CALL a subroutine or function.) Each comma is an instruction to the parser to move on to the next string.
Example:
/* Parsing multiple strings in a subroutine */
num='3'
musketeers="Porthos Athos Aramis D'Artagnon"
CALL Sub num,musketeers /* Passes num and musketeers to sub */
SAY total; say fourth /* Displays: "4" and " D'Artagnon" */
EXIT
Sub:
parse arg subtotal, . . . fourth
total=subtotal+1
RETURNNote that when a REXX program is started as a command, only one
argument string is recognized. You can pass multiple argument strings
for parsing:
- When one REXX program calls another REXX program with the CALL instruction or a function call.
- When programs written in other languages start a REXX program.
If there are more templates than source strings, each variable in a leftover template receives a null string. If there are more source strings than templates, the language processor ignores leftover source strings. If a template is empty (two commas in a row) or contains no variable names, parsing proceeds to the next template and source string.