2.4. Instructions

In this section, all instructions in standard REXX are described.

Extensions are listed later in this chapter.

First some notes on the terminology. What is called an instruction
in this document is equivalent to a “unit” of clauses. That is,
each instruction can consist of one or more clauses. For instance,
the SAY instruction is always a single instruction, but the IF
instruction is a multi-clause instruction. Consider the following
script, where each clause has been boxed:

     if a=b then
          say ‘hello’
     else
          say ‘bye’

Further, the THEN or ELSE parts of this instruction might consist
of a DO/END pair, in which case the IF instruction might consists
of an virtually unlimited number of clauses.

Then, some notes on the syntax diagrams used in the following
descriptions of the instructions. The rules applying to these
diagrams can be listed as:

·    Anything written in courier font in the syntax diagrams
  indicates that it should occur as-is in the REXX program. Whenever
  something is written in italic font, it means that the term should
  be substituted for another value, expression, or terms.

·    Anything contained within matching pairs of square brackets
  ([...]) are optional, and may be left out.

·    Whenever a pair or curly braces is used, it contains two or
  more subclauses that are separated by the vertical bar (|). It
  means that the curly braces will be substituted for one of the
  subclauses it contains.

·    Whenever the ellipsis (...) is used, it indicates that the
  immediately following subclauses may be repeated zero or more
  times. The scope of the ellipsis is limited to the contents of a
  set of square brackets or curly braces, if it occurs there.

·    Whenever the vertical bar | is used in any of the syntax
  diagrams, it means that either the term to the left, or the term
  to the right can be used, but not both, and at least one of the
  must be used.  This “operator” is associative (can be used in
  sequence), and it has lower priority than the square brackets (the
  scope of the vertical bar located within a pair of square brackets
  or curly braces is limited to the text within those square
  brackets or curly braces.

·    Whenever a semicolon (;) is used in the syntax diagram, it
  indicates that a clause separator must be present at the point. It
  may either be a semicolon character, or an end-of-line.

·    Whenever the syntax diagram is spread out over more lines, it
  means  that any of the lines can be used, but that the individual
  lines are mutually exclusive. Consider the syntax:

          SAY = symbol
               string
     
     This is equivalent to the syntax:
     
          SAY [symbol | string ]
     
      Because in the first of these two syntaxes, the SAY part may
     be continued at either line.
     
·    Sometimes the syntax of an instruction is so complex that
  parts of the syntax has been extracted, and is shown below in its
  expanded state. The following is an example of how this looks:
     
          SAY something TO someone
          
          something : = HI
               HELLO
               BYE
          
          someone : = THE BOSS
               YOUR NEIGHBOR
     
     You can generally identify these situations by the fact that
     they comes a bit below the real syntax diagram, and that they
     contains a colon character after the name of the term to be
     expanded.

In the syntax diagrams, some generic names have been used for the
various parts, in order to indicate common attributes for the
term.  For instance, whenever a term in the syntax diagrams is
called expr, it means that any valid REXX expression may occur
instead of that term. The most common such names are:

condition
     Indicates that the subclause can be any of the names of the
     conditions, e.g. SYNTAX, NOVALUE, HALT, etc.
expr
     Indicates that the subclause can be any valid REXX
     expression, and will in general be evaluated as normal during
     execution.

statement
     Indicates that extra clauses may be inserted into the
     instruction, and that exactly one of them must be a true
     statement.

string
     Indicates that the subclause is a constant string, i.e.
     either enclosed by single quotes (’...’) or double quotes
     (”...”).

symbol
     Indicates that the subclause is a single symbol. In general,
     whenever symbol is used as the name for a subclause, it means
     that the symbol will not automatically be expanded to the
     value of the symbol. But instead, some operation is performed
     on the name of the symbol.
template
     Indicates that the subclause is a parsing template. The exact
     syntax of this is explain in a chapter on tracing, to be
     written later.

In addition to this, variants may also exists. These variants will
have an extra letter or number appended to the name of the
subclause, and is used for differing between two or more
subclauses having the same “type” in one syntax diagram. In the
case of other names for the subclauses, these are explained in the
description of the instruction.



PREV NEXT