The code used to load data into a paged control differs significantly from that used to load data into an unpaged control. In the latter case, all data from the specified source is loaded into the control (and into memory) when the control is displayed on the screen. With a paged control, however, only the data visible in the control (that is, a single page of data) is loaded into memory. This can result in a dramatic performance improvement when the data source contains large numbers of records.
Note that the method used to load data into a paged grid is substantially different from the method used to load data into a paged list box, because of fundamental differences in the control type.
* Autoload paged control code generated by Drag-And-Drop Screen1-Gd-1-Ev-Msg-Paged-Next. PERFORM event-data-2 TIMES READ clients NEXT RECORD AT END MOVE event-action-fail TO event-action EXIT PARAGRAPH END-READ END-PERFORM. PERFORM ACU-Screen1-Gd-1-Autoload-Add. * Autoload paged control code generated by Drag-And-Drop Screen1-Gd-1-Ev-Msg-Paged-Prev. PERFORM event-data-2 TIMES READ clients PREVIOUS RECORD AT END MOVE event-action-fail TO event-action EXIT PARAGRAPH END-READ END-PERFORM. PERFORM ACU-Screen1-Gd-1-Autoload-Load. MODIFY Screen1-Gd-1, INSERTION-INDEX=2, RECORD-TO-ADD = Screen1-Gd-1-Autoload. * Autoload paged control code generated by Drag-And-Drop Screen1-Gd-1-Ev-Msg-Paged-First. MOVE LOW-VALUES TO cl-client-id START clients, KEY >= cl-client-id INVALID KEY MOVE event-action-fail TO event-action END-START. * Autoload paged control code generated by Drag-And-Drop Screen1-Gd-1-Ev-Msg-Paged-Last. MOVE HIGH-VALUES TO cl-client-id START clients, KEY <= cl-client-id INVALID KEY MOVE event-action-fail TO event-action END-START.
* Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-Next. PERFORM Screen1-Lb-1-get-next-item . * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-Prev. PERFORM Screen1-Lb-1-get-prev-item . * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-Nextpage. MODIFY Screen1-Lb-1, MASS-UPDATE = 1 PERFORM Screen1-Lb-1-Get-Next-Item Screen1-Lb-1-page-size times MODIFY Screen1-Lb-1, MASS-UPDATE = 0. * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-Prevpage. MODIFY Screen1-Lb-1, MASS-UPDATE = 1 PERFORM Screen1-Lb-1-Get-Prev-Item Screen1-Lb-1-page-size times MODIFY Screen1-Lb-1, MASS-UPDATE = 0. * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-First. MOVE LOW-VALUES TO cl-client-id START clients, KEY NOT < cl-client-id END-START. SET Screen1-Lb-1-READING-FORWARDS TO TRUE MODIFY Screen1-Lb-1, MASS-UPDATE = 1 RESET-LIST = 1. PERFORM Screen1-Lb-1-get-next-item Screen1-Lb-1-page-size times MODIFY Screen1-Lb-1, MASS-UPDATE = 0. * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-Ev-Ntf-Pl-Last. MOVE HIGH-VALUES TO cl-client-id START clients, KEY NOT > cl-client-id END-START. SET Screen1-Lb-1-READING-BACKWARDS TO TRUE MODIFY Screen1-Lb-1, MASS-UPDATE = 1 RESET-LIST = 1. PERFORM Screen1-Lb-1-get-prev-item Screen1-Lb-1-page-size times MODIFY Screen1-Lb-1, MASS-UPDATE = 0. * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-get-next-item. EVALUATE TRUE WHEN Screen1-Lb-1-at-start MOVE low-value to cl-client-id START clients, key not < cl-client-id END-START ADD 1 to Screen1-Lb-1-page-size GIVING Screen1-Lb-1-number-reads-needed WHEN Screen1-Lb-1-at-end EXIT paragraph WHEN Screen1-Lb-1-reading-backwards MOVE Screen1-Lb-1-page-size to Screen1-Lb-1-number-reads-needed WHEN Screen1-Lb-1-reading-forwards MOVE 1 to Screen1-Lb-1-number-reads-needed END-EVALUATE. PERFORM Screen1-Lb-1-number-reads-needed times READ clients next record AT END SET Screen1-Lb-1-at-end TO TRUE EXIT PARAGRAPH END-READ END-PERFORM. INITIALIZE Screen1-Lb-1-Autoload PERFORM Acu-Screen1-Lb-1-Autoload-Load MODIFY Screen1-Lb-1, item-to-add = Screen1-Lb-1-Autoload SET Screen1-Lb-1-reading-forwards TO TRUE. * Autoload paged control code generated by Drag-And-Drop Screen1-Lb-1-get-prev-item. EVALUATE TRUE WHEN Screen1-Lb-1-at-end MOVE high-value to cl-client-id START clients, KEY NOT > cl-client-id END-START ADD 1 TO Screen1-Lb-1-page-size GIVING Screen1-Lb-1-number-reads-needed WHEN Screen1-Lb-1-at-start EXIT paragraph WHEN Screen1-Lb-1-reading-forwards MOVE Screen1-Lb-1-page-size TO Screen1-Lb-1-number-reads-needed WHEN Screen1-Lb-1-reading-backwards MOVE 1 TO Screen1-Lb-1-number-reads-needed END-EVALUATE. PERFORM Screen1-Lb-1-number-reads-needed times READ clients previous record AT END SET Screen1-Lb-1-at-start TO TRUE EXIT PARAGRAPH END-READ END-PERFORM. INITIALIZE Screen1-Lb-1-Autoload PERFORM Acu-Screen1-Lb-1-Autoload-Load MODIFY Screen1-Lb-1, insertion-index = 1 ITEM-TO-ADD = Screen1-Lb-1-Autoload SET Screen1-Lb-1-reading-backwards TO TRUE.