FUNCTION

	[DECLARE] FUNCTION func(TYPE var1, ...) TYPE

The keyword PROCEDURE is used in conjonction with the keyword FUNCTION in the declaration of a user-defined function…
The compiler directive “;$USEFUNCS” may be used in order to allow your main code (code between BEGIN & END) to be located anywhere within your file…
The big difference between functions and procedures is that functions return a value. To assign the return value inside a function, simple use the name of the function just like a variable. You do not need to declare this variable, it is done for you. When the function is finished executing the value in the return variable will be made available as the return value.
Note that function calls can take place anywhere inside of an expression as well as stand-alone statements. This can be useful in situations when the functions return value is not needed, but the functions side effects are.
Example:

	;$USEFUNCS
	DECLARE FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
	DECLARE FUNCTION square(INTEGER x) INTEGER
	FUNCTION Xto_theY(INTEGER x, INTEGER y) INTEGER
	INTEGER i
	 Xto_theY = x
	 for i = 2 to y
	   Xto_theY = Xto_theY * x
	 next i
	ENDFUNC
	FUNCTION square(INTEGER x) INTEGER
	square = x * x
	ENDFUNC
	BEGIN
	  PRINTLN "4 to the 3rd power = ",Xto_theY(4,3)
	  PRINTLN "4 squared = ",square(4)
	END

See also: Procedure