VAR a: ARRAY[1 TO 5] OF INTEGER;
VAR b: ARRAY[1 TO 5] OF INTEGER;
BEGIN ... END;
What happens when we have an assignment a := b? If the assignment is "by reference" (which is how Java works), variables of array type are represented as pointers and the outcome of the assignment is that a ends up pointing to the same array that b points to (i.e., alias). If the assignment is "by value" (which is how Modula-3 works), then the assignment copies the contents of array b to array a.
Let's consider the following abstract call F(A1, ... An). F is the procedure being called. While we are used to calling a procedures directly (e.g., print(...)), most languages, including MYSTERY allow complicated expressions for F. For example, if a is an array of procedures, one can do a[2](5) in MYSTERY to call the procedure at a[2] with argument 5. MYSTERY even allows a procedure to return a procedure. Thus, if a procedure, f, returns a procedure, then one could write f()(x). This calls the procedure returned by f with the argument x. Needless to say, most languages allow one to pass arbitrarily complicated arguments (i.e., Ai).
Use this link to submit programs. You should provide evidence that supports your argument. You will lose 5% of the points for this question for each additional executed PRINT.