>>-RETURN--+------------+--;-----------------------------------><
+-expression-+
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. (See
Section 2.6, “EXIT”.)
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. (See
Section 2.3, “CALL”.)
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 the description of functions in
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/Linux system 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.