Structure of a procedural DIALOG block

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:

  1. Simple record input with the INPUT sub-dialog block.
  2. Query by example input with the CONSTRUCT sub-dialog block.
  3. Read-only record list navigation with the DISPLAY ARRAY sub-dialog block.
  4. Editable record list handling with the INPUT ARRAY sub-dialog block.
  5. A SUBDIALOG clause referencing a declarative sub-dialog by name.