User defined types

User defined types help to centralize the definition of complex structured data types.

A user defined type is created with the TYPE keyword. The next code example defines a type as a dynamic array of a record, with the structure of a database table as defined in the mydbschema.sch schema file:
SCHEMA mydbschema
TYPE t_custlist DYNAMIC ARRAY OF RECORD LIKE customer.* 
Variables can then be defined with the "custlist" user defined type:
DEFINE cl t_custlist

The scope of a type can be global, local to a module or local to a function.

Variables can be defined with a type defined in the same scope, or in a higher level of scope.

A typical usage is to declare user-defined types as PUBLIC in a module, so they can be reused in other modules:

The myutils.4gl module defines the user type:

        id INTEGER,
        description VARCHAR(100),
        creation DATE,
        mandatory BOOLEAN,
In the module importing the utility module, define variables using the type name, with utility module as prefix:
IMPORT FGL myutils
  DEFINE itemlist DYNAMIC ARRAY OF myutils.t_item_info