| User interface / Multiple dialogs | |
The DIALOG block is an interactive instruction that executes several sub-dialogs simultaneously.
DIALOG
[ ATTRIBUTE ( dialog-control-attribute [,...] ) ]
{ record-input-block
| construct-block
| display-array-block
| input-array-block
| SUBDIALOG dialog-name
}
[...]
[
dialog-control-block
[...]
]
END DIALOG
{ FIELD ORDER FORM
| UNBUFFERED [ = boolean ]
}
where dialog-name in
the SUBDIALOG clause is the name
of a sub-dialog defined as declarative dialog block outside the scope
of the current function:DIALOG dialog-name ()
[ DEFINE variable-definition [,...] ]
{ record-input-block
| construct-block
| display-array-block
| input-array-block
}
END DIALOG
where record-input-block
is:{
INPUT BY NAME { variable | record.* } [,...]
|
INPUT { variable | record.* } [,...] FROM field-list
}
[ ATTRIBUTE ( input-control-attribute [,...] ) ]
[ input-control-block
[...]
]
END INPUT
where input-control-attribute
is:{ HELP = help-number
| NAME = "sub-dialog-name"
| WITHOUT DEFAULTS [ = boolean ]
}
where input-control-block is
one of:{ BEFORE INPUT
| BEFORE FIELD field-spec [,...]
| ON CHANGE field-spec [,...]
| AFTER FIELD field-spec [,...]
| AFTER INPUT
| ON ACTION action-name [INFIELD field-spec]
| ON KEY ( key-name [,...] )}
dialog-statement
[...]
{
CONSTRUCT BY NAME variable ON column-list
|
CONSTRUCT variable ON column-list FROM field-list
}
[ ATTRIBUTE ( construct-control-attribute [,...] ) ]
[ construct-control-block
[...]
]
END CONSTRUCT
{ HELP = help-number
| NAME = "sub-dialog-name"
}
where construct-control-block is
one of:{ BEFORE CONSTRUCT
| BEFORE FIELD field-spec [,...]
| ON CHANGE field-spec [,...]
| AFTER FIELD field-spec [,...]
| AFTER CONSTRUCT
| ON ACTION action-name [INFIELD field-spec]
| ON KEY ( key-name [,...] )}
dialog-statement
[...]
DISPLAY ARRAY array TO screen-array.*
[ ATTRIBUTE ( display-array-control-attribute [,...] ) ]
[ display-array-control-block
[...]
]
END DISPLAY
{ HELP = help-number
| COUNT = row-count
| KEEP CURRENT ROW = [ = boolean ]
}
where display-array-control-block is
one of:{ BEFORE DISPLAY
| BEFORE ROW
| AFTER ROW
| AFTER DISPLAY
| ON ACTION action-name
| ON KEY ( key-name [,...] )
| ON FILL BUFFER
| ON APPEND
| ON INSERT
| ON UPDATE
| ON DELETE
| ON EXPAND ( row-index )
| ON COLLAPSE ( row-index )
| ON DRAG_START ( dnd-object )
| ON DRAG_FINISH ( dnd-object )
| ON DRAG_ENTER( dnd-object )
| ON DRAG_OVER ( dnd-object )
| ON DROP ( dnd-object ) }
dialog-statement
[...]
INPUT ARRAY array FROM screen-array.*
[ ATTRIBUTE ( input-array-control-attribute [,...] ) ]
[ input-array-control-block
[...]
]
END INPUT
{ APPEND ROW [ = boolean ]
| AUTO APPEND [ = boolean ]
| COUNT = row-count
| DELETE ROW [ = boolean ]
| HELP = help-number
| INSERT ROW [ = boolean ]
| KEEP CURRENT ROW [ = boolean ]
| MAXCOUNT = max-row-count
| WITHOUT DEFAULTS [ = boolean ]
}
where input-array-control-block is
one of:{ BEFORE INPUT
| BEFORE ROW
| BEFORE FIELD [,...]
| ON CHANGE field-spec [,...]
| AFTER FIELD field-spec [,...]
| ON ROW CHANGE
| AFTER ROW
| BEFORE DELETE
| AFTER DELETE
| BEFORE INSERT
| AFTER INSERT
| AFTER INPUT
| ON ACTION action-name [INFIELD field-spec]
| ON KEY ( key-name [,...] ) }
dialog-statement
[...]
{ BEFORE DIALOG
| ON ACTION action-name
| ON KEY ( key-name [,...] )
| ON IDLE idle-seconds
| COMMAND option-name
[ option-comment ]
[ HELP help-number ]
| COMMAND KEY ( key-name [,...] ) option-name
[ option-comment ]
[ HELP help-number ]
| AFTER DIALOG
}
dialog-statement
[...]
{ statement
| ACCEPT DIALOG
| CONTINUE DIALOG
| EXIT DIALOG
| NEXT FIELD
{ CURRENT
| NEXT
| PREVIOUS
| field-spec
}
}
{ field-name
| table-name.*
| table-name.field-name
| screen-array[line].*
| screen-array[line].field-name
| screen-record.*
| screen-record.field-name
} [,...]
{ field-name
| table-name.field-name
| screen-array.field-name
| screen-record.field-name
}
{ column-name
| table-name.*
| table-name.column-name
} [,...]