Initial Example

Visual LANSA

Initial Example

This program performs generic searches for employees by surname. The user specifies all or part of an employee's surname and a resulting list of employees with names matching the request is displayed.

********   Define work variables and browse list to be used
DEFINE     FIELD(#L1COUNT) TYPE(*DEC) LENGTH(7) DECIMALS(0)
DEF_LIST   NAME(#L1) FIELDS((#SURNAME) (#GIVENAME) (#EMPNO) 
           #ADDRESS1)) COUNTER(#L1COUNT)
********   Loop until terminated by EXIT or CANCEL
BEGIN_LOOP
********   Get surname to search for
REQUEST    FIELDS(#SURNAME)
********   Build list of generically identical names
CLR_LIST   NAMED(#L1)
SELECT     FIELDS(#L1) FROM_FILE(PSLMSTV1) 
           WITH_KEY(#SURNAME) GENERIC(*YES)
ADD_ENTRY  TO_LIST(#L1)
ENDSELECT
********   If names found, display list to user
IF         COND('#L1COUNT *GT 0')
DISPLAY    BROWSELIST(#L1)
********   else issue error indicating none found
ELSE
MESSAGE    MSGTXT('No employees have a surname 
                   matching request')
ENDIF
********   Loop back and request next name to search for
END_LOOP

 

This program will work just fine, but what if the user inputs a search name of "D", and 800 employees working for the company have a surname that starts with "D"?

The result will be a list containing 800 names. But more importantly, it will take a long time to build up the list and use a lot of computer resource while doing it.

To solve this problem, a technique called "page at a time" browsing is often used. What this basically means is that the program extracts one "page" of names matching the request, and then displays them to the user. If the user presses the roll up key then the next page is fetched and displayed, etc, etc.

Ý 5.3.11 Page At a Time Scrolling (Forward Only)