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