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.
Using TTY attributes
The ATTRIBUTES
clause can define TTY attributes such as colors
(RED
, GREEN
), and REVERSE
. These attributes will
be used during the dialog execution.