RETURN

The RETURN instruction gives the control of execution back to the caller, eventually by returning values on the stack.

Syntax

RETURN [ value [,...]  ]
  1. value can be any valid expression, an object reference or complex type reference such as a dynamic array reference.

Usage

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.

Consider using the fully typed function definition syntax, with a RETURNS clause in the function header, to get better compilation control of your code. When using the RETURNS clause, the compiler will check that the function body contains RETURN instructions that match the number of return values as specified in the function definition.

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 or dictionary.

Example

MAIN
  DEFINE fname, lname VARCHAR(30)
  LET lname = lastname(943)
  DISPLAY lnMAIN
  DEFINE fname, lname VARCHAR(30)
  LET lname = lastname(943)
  DISPLAY lname
  CALL fullname(235) RETURNING fname, lname
  DISPLAY fname, lname
END MAIN

FUNCTION lastname(id INTEGER) RETURNS STRING
  CASE id
    WHEN 943
      RETURN "McTiger"
    OTHERWISE
      RETURN NULL
  END CASE
END FUNCTION

FUNCTION fullname(id INTEGER) RETURNS(STRING, STRING)
  CASE id
    WHEN 235
      RETURN "Lee", "Park"
    OTHERWISE
      RETURN NULL, NULL
  END CASE
END FUNCTION