VAR i : INTEGER;
FUNCTION foo(REF c : INTEGER) : INTEGER;
BEGIN
c := c * 2;
COUT << "c = " << c << NL;
RETURN 1;
END foo;
BEGIN
i := 3;
foo(i);
COUT << "i = " << i << NL;
RETURN 3;
END.
============================ OUTPUTS:
C = 6
i = 6
============================
VAR i : INTEGER;
FUNCTION foo2(REF z : INTEGER) : INTEGER;
BEGIN
z := z * 2;
COUT << "z = " << z << NL;
RETURN 1;
END foo2;
FUNCTION foo(REF c : INTEGER) : INTEGER;
BEGIN
RETURN foo2(c);
END foo;
BEGIN
i := 5;
COUT << "i = " << foo(i) << NL;
RETURN 3;
END.
============================ OUTPUTS:
i = z = 10
1
============================