Parameter Passing Mechanism
Parameters are passed to system and user-written procedures and functions by value or by reference. It is important that you recognize the distinction between these two methods.
Expressions, constants, system variables, and subscripted variable references are passed by
value.
Variables are passed by
reference.
Parameters passed by value may only be inputs to program units; results may not be passed back to the caller via these parameters. Parameters passed by reference may convey information in either or both directions. For example consider this trivial procedure:
PRO ADD, A, B
A = A + B
RETURN
END
This procedure adds its second parameter to the first, returning the result in the first. The call:
ADD, A, 4
adds 4 to A and stores the result in variable A. The first parameter is passed by reference and the second parameter, a constant is passed by value. The call:
ADD, 4, A
does nothing because a value may not be stored in the constant “4” which was passed by value. No error message is issued.
Similarly, if ARR is an array, the call:
ADD, ARR(5), 4
does not achieve the desired effect (adding 4 to element ARR (5)) because subscripted variables are passed by value. A possible alternative is:
TEMP = ARR(5)
ADD, TEMP, 4
ARR(5) = TEMP