Implicit data type conversion on the stack

When a value or a reference is popped from the stack, implicit data conversion takes place. This means, for example, that you can pass a string value to a function that defines the receiving variable as a numeric data type; no compilation error will occur, but you can get a runtime error if the string cannot be converted to a numeric. The same principle applies to values returned from functions, since the stack is also used in this case.

MAIN
  DEFINE s STRING
  LET s = "123"
  CALL display_integer(s) -- Will be accepted
  LET s = "abc"
  CALL display_integer(s) -- Will fail with conversion error
END MAIN

FUNCTION display_integer(x)
  DEFINE x INTEGER
  DISPLAY x
END FUNCTION