INPUT ARRAY instruction configuration
This section describes the options that can be specified in the ATTRIBUTES clause
of the INPUT ARRAY instruction. The options of the ATTRIBUTES clause
override all default attributes and temporarily override any display
attributes that the OPTIONS or the OPEN WINDOW statement
specified for these fields. With the INPUT ARRAY statement,
the INVISIBLE attribute is ignored.
HELP option
The HELP clause specifies the number of a help message to display if the user invokes the help the
INPUT ARRAY dialog. The predefined 'help' action is automatically created by the
runtime system. You can bind action views to the
'help' action.
The HELP clause overrides the HELP attribute.
WITHOUT DEFAULTS option
The WITHOUT DEFAULT clause defines whether the program array elements are
populated (and to be displayed) when the dialog begins. Once the dialog is started, existing rows
are always handled as records to be updated in the database (i.e. WITHOUT
DEFAULTS=TRUE), while newly-created rows are handled as records to be inserted in the
database (i.e. WITHOUT DEFAULTS=FALSE). In other words, the REQUIRED and DEFAULT attributes defined in the
form are only used for newly-created rows.
It
is unusual to implement an INPUT ARRAY with no WITHOUT
DEFAULTS option, because the data of the program variables
would be cleared and the list empty. So, you typically use the WITHOUT
DEFAULT clause in INPUT ARRAY. In a singular INPUT
ARRAY, the default is WITHOUT DEFAULTS=FALSE.
FIELD ORDER FORM option
By
default, the form tabbing order is defined by the variable list in
the binding specification.
You can control the tabbing order by using the FIELD ORDER
FORM attribute. When this attribute is used, the tabbing
order is defined by the TABINDEX attribute
of the form items. With FIELD ORDER FORM, if you
jump from one field to a another with the mouse, the BEFORE
FIELD / AFTER FIELD triggers of intermediate
fields are not executed (actually, the Dialog.fieldOrder FGLPROFILE
entry is ignored.)
If the form uses a TABLE container,
the front-end resets the tab indexes when the user moves columns around.
This way, the visual column order always corresponds to the input
tabbing order. The order of the columns in an editable list can be
important; you may want to freeze the table columns with the UNMOVABLECOLUMNS attribute.
UNBUFFERED option
The UNBUFFERED attribute
indicates that the dialog must be sensitive to program variable changes.
When using this option, you bypass the traditional "buffered" mode.
When using the traditional " buffered" mode, program variable changes are not automatically
displayed to form fields; you need to execute a DISPLAY TO or DISPLAY BY
NAME. Additionally, if an action is triggered, the value of the current field is not
validated and is not copied into the corresponding program variable. The only way to get the text of
the current field is to use GET_FLDBUF().
If
the "unbuffered" mode is used, program variables and form fields are
automatically synchronized. You don't need to display explicitly values
with a DISPLAY TO or DISPLAY BY NAME.
When an action is triggered, the value of the current field is validated
and is copied into the corresponding program variable.
COUNT option
The COUNT attribute
defines the number of valid rows in the static array to be displayed as
default rows. If you do not use the COUNT attribute,
the runtime system cannot determine how much data to display, so the
screen array remains empty. You can also use the SET_COUNT() built-in
function, but it is supported for backward compatibility only. The COUNT option
is ignored when using a dynamic
array. If you specify the COUNT attribute,
the WITHOUT DEFAULTS option is not required because
it is implicit. If the COUNT attribute is greater
than MAXCOUNT, the runtime system will take MAXCOUNT as
the actual number of rows. If the value of COUNT is
negative or zero, it defines an empty list.
MAXCOUNT option
The MAXCOUNT attribute
defines the maximum number of rows that can be inserted in
the program array. This attribute allows you to give an upper limit
of the total number of rows the user can enter, when using both static or dynamic arrays.
When
binding a static array, MAXCOUNT is used as
upper limit if it is lower or equal to the actual declared static
array size. If MAXCOUNT is greater than the array
size, the size of the static array is used as the upper limit. If MAXCOUNT is
lower than the COUNT attribute (or to the SET_COUNT() parameter),
the actual number of rows in the array will be reduced to MAXCOUNT.
When
binding a dynamic array, the user can enter an infinite number
of rows unless the MAXCOUNT attribute is used. If MAXCOUNT is
lower than the actual size of the dynamic array, the number of rows
in the array will be reduced to MAXCOUNT.
If MAXCOUNT is
negative or equal to zero, the user cannot insert rows.
ACCEPT option
The ACCEPT attribute
can be set to FALSE to avoid the automatic creation
of the accept default action. This option can be used for example
when you want to write a specific validation procedure, by using ACCEPT INPUT.
CANCEL option
The CANCEL attribute
can be set to FALSE to avoid the automatic creation
of the cancel default action. This is useful for example when you
only need a validation action (accept), or when you want to write
a specific cancellation procedure, by using EXIT INPUT.
If
the CANCEL=FALSE option is set, no close action will be
created, and you must write an ON ACTION close control
block to create an explicit action.
APPEND ROW option
The APPEND ROW attribute can be set to FALSE to avoid the
append default action, and prevent the user adding rows at the end of the list. If APPEND
ROW=FALSE, it is still possible to insert rows in the middle of the list. Use the
INSERT ROW attribute to disallow the user from inserting rows. To deny automatic temporary row creation if only
APPEND ROW=FALSE is used, set AUTO APPEND is not set to
FALSE.
INSERT ROW option
The INSERT ROW attribute can be set to FALSE to avoid the
insert default action, and prevent the user inserting new rows in the middle of the list. However,
even if INSERT ROW is FALSE, it is still possible to append rows
at the end of the list. Use the APPEND ROW attribute to disallow the user from
appending rows. To deny automatic temporary row
creation if only INSERT ROW=FALSE is used, set AUTO APPEND
is not set to FALSE.
DELETE ROW option
The DELETE ROW attribute can be set to FALSE to avoid the
delete default action, and prevent the user removing rows from the list.
AUTO APPEND option
By default, an INPUT ARRAY controller creates a temporary row when needed (for
example, when the user deletes the last row of the list, a new row will be automatically created).
You can prevent this default behavior by setting the AUTO APPEND attribute to
FALSE. When this attribute is set to FALSE, the only way to create
a new temporary row is to execute the append
action.
If both
the APPEND ROW and INSERT ROW attributes
are set to FALSE, the dialog automatically behaves
as if AUTO APPEND equals FALSE.
KEEP CURRENT ROW option
Depending
on the list container used in the form, the current row may be highlighted
during the execution of the dialog, and cleared when the instruction
ends. You can change this default behavior by using the KEEP
CURRENT ROW attribute, to force the runtime system to keep
the current row highlighted.