Advanced features / Programs |
A module defines a set of program elements such as functions, report routines, types, constants and variables.
[ compiler-options | import-statement [...] | schema-statement | globals-inclusion | constant-definition [...] | type-definition [...] | variable-definition [...] ] [ MAIN-block ] [ dialog-block | function-block | report-routine [...] ] ]
A module defines a set of program elements that can be used by other modules when defined as PUBLIC, or to be local to the current module when defined as PRIVATE. Program elements are user-defined types, variables, constants, functions, report routines, and declarative dialogs.
A module can import other modules with the IMPORT FGL instruction. A module can define functions, reports, module variables, constants and types, as well as declarative dialogs.
Program modules are written as .4gl source files and a compiled to .42m files. Compiled modules (.42m files) can be linked together to create a program. However, linking is supported for backward compatibility only. The preferred way is to define module dependencies with the IMPORT FGL instruction. For better code re-usability, module elements can be shared by each other with by qualifying module variables, constants, types and function with PRIVATE or PUBLIC keywords. PUBLIC module elements can be referenced in other modules.
OPTIONS SHORT CIRCUIT IMPORT FGL cust_data SCHEMA stores PRIVATE CONSTANT c_title = "Customer data form" PUBLIC TYPE t_cust RECORD LIKE customer.* PRIVATE DEFINE cust_arr DYNAMIC ARRAY OF t_cust MAIN ... END MAIN DIALOG cust_dlg() INPUT BY NAME cust_rec.* ... END INPUT END DIALOG FUNCTION cust_display() ... END FUNCTION FUNCTION cust_input() ... END FUNCTION REPORT cust_rep(row) ... END REPORT