OVERLOAD FUNCTION Pick(x : INTEGER) RETURNS INTEGER RETURN x + 1 ENDFUNCTION OVERLOAD FUNCTION Pick(x : REAL) RETURNS BOOLEAN RETURN x > 0 ENDFUNCTION OVERLOAD FUNCTION Pick(x : INTEGER, y : INTEGER) RETURNS STRING RETURN "pair" ENDFUNCTION OVERLOAD PROCEDURE Pick(x : STRING) OUTPUT x ENDPROCEDURE OVERLOAD FUNCTION Pick(a : ARRAY OF INTEGER) RETURNS INTEGER RETURN a[1] ENDFUNCTION OVERLOAD FUNCTION Pick(a : ARRAY[1:2,1:2] OF INTEGER) RETURNS INTEGER RETURN a[2,2] ENDFUNCTION OVERLOAD FUNCTION Pick(a : ARRAY OF REAL) RETURNS BOOLEAN RETURN a[1] > 0 ENDFUNCTION DECLARE a : ARRAY[1:2] OF INTEGER DECLARE b : ARRAY[1:2,1:2] OF INTEGER DECLARE c : ARRAY[1:2] OF REAL a[1] <- 7 b[2,2] <- 9 c[1] <- 1.0 OUTPUT pIcK(2) OUTPUT Pick(2.0) OUTPUT Pick(1, 2) CALL Pick("text") OUTPUT Pick(a) OUTPUT Pick(b) OUTPUT Pick(c) OUTPUT Pick(Pick(1)) OVERLOAD PROCEDURE Bump(BYREF x : INTEGER) x <- x + 1 ENDPROCEDURE OVERLOAD PROCEDURE Bump(BYREF x : REAL) x <- x + 2.0 ENDPROCEDURE FUNCTION Legacy(x : REAL) RETURNS BOOLEAN RETURN x > 0 ENDFUNCTION DECLARE n : INTEGER n <- 4 CALL Bump(n) OUTPUT n OUTPUT Legacy(1)