Parsing Instructions Examples

All examples in this section parse source strings into words.

ARG

/* 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 Parsing Several Strings.

PARSE ARG is similar to ARG except that PARSE ARG does not convert alphabetic characters to uppercase before parsing.

PARSE LINEIN

parse linein "a=" num1 "c=" num2     /* Assume: 8 and 9          */
sum=num1+num2                        /* Enter: a=8 b=9 as input  */
say sum                              /*  Displays: "17"          */

PARSE PULL

PUSH "80 7"                /* Puts data on queue                 */
parse pull fourscore seven /* Assigns: fourscore="80"; seven="7" */
SAY fourscore+seven        /* Displays: "87"                     */

PARSE SOURCE

parse source sysname .
Say sysname                         /* Possibly Displays:        */
                                    /* "Windows"                 */

PARSE VALUE.

PARSE VAR examples are throughout the chapter, starting with Parsing.

PARSE VERSION

parse version . level .
say level                /* Displays: "6.02" */

PULL is similar to PARSE PULL except that PULL converts alphabetic characters to uppercase before parsing.