Full list mode of DISPLAY ARRAY
In order to handle short/medium result sets, use the full list mode of
DISPLAY ARRAY.
Understanding the full list mode
In full list mode, DISPLAY ARRAY uses a complete copy of the result set to be displayed in the
form array. The full list mode is typically used for a short or medium row set (10 - 100 rows).
In full list mode, the DISPLAY ARRAY instruction uses a static or
dynamic program array defined with a record structure corresponding to (or to a part
of ) a screen-array in the current form.
The program array is filled with data rows before DISPLAY ARRAY is
executed, typically with a FOREACH loop when rows come from the
database.

Consider using a dynamic array instead of a static array: By using a dynamic array
the program will only use the required memory resources, and the dialog will
automatically detect the number of rows from the dynamic array
(array.getLength())
Full list mode example
DISPLAY ARRAY in its simpler
form: a dynamic array is filled with database rows and contains the whole result set to be displayed
in the
table:MAIN
DEFINE arr DYNAMIC ARRAY OF RECORD
id INTEGER,
fname CHAR(30),
lname CHAR(30)
END RECORD
DEFINE i INTEGER
DATABASE stores
OPEN FORM f1 FROM "custlist"
DISPLAY FORM f1
DECLARE c1 CURSOR FOR
SELECT customer_num, fname, lname FROM customer
LET i=1
FOREACH c1 INTO arr[i].*
LET i = i+1
END FOREACH
CALL arr.deleteElement(i)
DISPLAY ARRAY arr TO sa.* ATTRIBUTES(UNBUFFERED)
BEFORE ROW
MESSAGE "Moved to row ", arr_curr()
END DISPLAY
END MAIN