RETURN returns control, and possibly a result, from a Rexx program,
method, or routine to the point of its invocation.
If no internal routine (subroutine or function) is active, RETURN and
EXIT
are identical in their effect on the program that is run.
If called as a routine,
expression
(if any) is evaluated, control is passed back to the caller, and the Rexx
special variable
RESULT is set to the value of
expression.
If you omit
expression,
the special variable RESULT is dropped (becomes uninitialized).
The various settings saved at the time of the
CALL
(for example, tracing and addresses) are also restored.
If a function call is active, the action taken is identical, except that
expression must be specified on the
RETURN instruction. The result of
expression
is then used in the original expression at the point where the function
was called.
See
Chapter 7, Functions for more details.
If a method is processed, the language processor evaluates
expression (if any) and returns control to
the point from which the method's activating message was sent.
If called as a term of an expression,
expression is required. If called as a
message instruction,
expression is
optional and is assigned to the Rexx special variable
RESULT if a return
expression is specified.
If the method has previously issued a REPLY instruction, the RETURN instruction
must not include a result
expression.
If a PROCEDURE instruction was processed within an internal subroutine
or internal function, all variables of the current generation are dropped
(and those of the previous generation are exposed) after
expression is
evaluated and before the result is used or assigned to RESULT.
If the RETURN statement causes the program to return to the operating
system on a Unix-like systems the value returned is limited to a numerical
value between 0 and 255 (an unsigned byte). If no
expression is supplied then the default value
returned to the operating system is zero.