| 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