A procedural DIALOG instruction is made of several sub-dialogs, plus global control blocks such as BEFORE DIALOG and action handlers such as ON ACTION or COMMAND.
Sub-dialogs can be defined inside the DIALOG instruction, or can be declared externally in another module and attached to the current DIALOG block with the SUBDIALOG clause. A dialog defined in the scope of a function is know as a procedural dialog block, while a dialog declared in the scope of a module is named a declarative dialog block.
The sub-dialogs bind program variables to form fields and define the type of interaction that will take place for the data model (simple input, list input or query). The sub-dialogs implement individual control blocks which let you control the behavior of the interactive instruction. Sub-dialogs can also hold action handlers, which will define local sub-dialog actions.
The DIALOG procedural instruction can hold the following type of sub-dialogs: