TEMPLATE FUNCTION Max(A : T, B : T) RETURNS T IF A > B THEN RETURN A ENDIF RETURN B ENDFUNCTION TEMPLATE FUNCTION Second(First : A, Last : B) RETURNS B RETURN Last ENDFUNCTION TEMPLATE FUNCTION Zero() RETURNS T RETURN (T)0 ENDFUNCTION TEMPLATE PROCEDURE Print(Value : T) OUTPUT Value ENDPROCEDURE TEMPLATE FUNCTION Echo(Value : T) RETURNS T RETURN Value ENDFUNCTION TEMPLATE OVERLOAD FUNCTION Pick(Value : T) RETURNS INTEGER RETURN 100 ENDFUNCTION OVERLOAD FUNCTION Pick(Value : INTEGER) RETURNS INTEGER RETURN 200 ENDFUNCTION OUTPUT Max(1.5, 2.0) OUTPUT Max(Max(1, 2), 3) OUTPUT Second(7, "tail") OUTPUT Zero() CALL Print(2.5) Print(9) OUTPUT Pick(7) OUTPUT Pick(7) OUTPUT (STRING)Echo("chain").C_STR() CALL Echo("discarded") Echo("also discarded")