Page History
姓をキーとして従業員データを検索するプログラムを、素朴に実装した例です。ユーザーが姓またはその一部を指定すると、これに合致する従業員データがリスト・ビューされます。
********
...
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
機能的にはこれで充分ですが、例えば検索キーとして「D」を指定し、これに合致する従業員が800人いたとすればどうなるでしょうか。
この場合、800行ものリストが表示されることになってしまい、ユーザーにとって見にくい上に、相当の時間とコンピュータ資源を要します。
これを解消するため、所定の行数ごとにページで区切って表示する方法がよく使われます。すなわち、条件に合致するレコードを「1ページ分」だけ検索し、これを表示するという方法です。次のページに進むためのキーが押されれば、改めてレコードを検索し、表示することになります。