All examples in this section parse source strings into words.
/* ARG with source string named in REXX program invocation */
/* Program name is PALETTE. Specify 2 primary colors (yellow, */
/* red, blue) on call. Assume call is: palette red blue */
arg var1 var2 /* Assigns: var1='RED'; var2='BLUE' */
If var1<>'RED' & var1<>'YELLOW' & var1<>'BLUE' then signal err
If var2<>'RED' & var2<>'YELLOW' & var2<>'BLUE' then signal err
total=length(var1)+length(var2)
SELECT;
When total=7 then new='purple'
When total=9 then new='orange'
When total=10 then new='green'
Otherwise new=var1 /* entered duplicates */
END
Say new; exit /* Displays: "purple" */
Err:
say 'Input error--color is not "red" or "blue" or "yellow"'; exit
ARG converts alphabetic characters to uppercase before parsing. An example of ARG with the arguments in the CALL to a subroutine is in section Parsing Multiple Strings.
Say "Enter Yes or No =====> "
parse upper external answer 2 .
If answer='Y'
then say "You said 'Yes'!"
else say "You said 'No'!"
parse numeric digits fuzz form
say digits fuzz form /* Displays: '9 0 SCIENTIFIC' */
/* (if defaults are in effect) */
PUSH '80 7' /* Puts data on queue */
parse pull fourscore seven /* Assigns: fourscore='80'; seven='7' */
SAY fourscore+seven /* Displays: "87" */
parse source sysname .
Say sysname /* Displays: "CICS" */
parse version . level .
say level /* Displays: "3.48" */