The RETURN instruction returns flow control to the function caller.
RETURN [ value [,...] ]
The RETURN instruction transfers the control back from a function with optional return values.
Record members can be returned with the .* or THRU notation. Each member is returned as an independent variable.
A function may have several RETURN points (not recommended in structured programming) but they must all return the same number of values.
The number of returned values must correspond to the number of variables listed in the RETURNING clause of the CALL statement invoking this function.
A function cannot return a static array, but can return the reference of a dynamic array.
MAIN
DEFINE fname, lname VARCHAR(30)
CALL foo(NULL) RETURNING fname, lname
DISPLAY fname CLIPPED, " ", upshift(lname) CLIPPED
CALL foo(1) RETURNING forname, surname
DISPLAY fname CLIPPED, " ", upshift(lname) CLIPPED
END MAIN
FUNCTION foo(code)
DEFINE code INTEGER
DEFINE person RECORD
fname VARCHAR(30),
lname VARCHAR(30)
END RECORD
IF code IS NULL THEN
RETURN NULL, NULL
ELSE
LET person.fname = "John"
LET person.lname = "Smith"
RETURN person.*
END IF
END FUNCTION