Returning simple typed values from functions

Simple data types such as INTEGER, DECIMAL, VARCHAR are returned by value. When returning a simple typed value, the runtime system pushes a copy of the data on the stack. The STRING data type is an exception to this rule: elements of this type are return by mutable reference: the whole string value is not copied on the stack, only the reference to the string value is copied.

MAIN
  DEFINE x INTEGER
  LET x = int_add(10,20)
END MAIN

FUNCTION int_add(n1,n2)
  DEFINE n1, n2 INTEGER
  RETURN (n1+n2)
END FUNCTION