[
|../../index.htm#lansa/l4wdev05_0255.htm]
現在地:
姓をキーとして従業員データを検索するプログラムを、素朴に実装した例です。ユーザーが姓またはその一部を指定すると、これに合致する従業員データがリスト・ビューされます。
******** 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ページ分」だけ検索し、これを表示するという方法です。次のページに進むためのキーが押されれば、改めてレコードを検索し、表示することになります。
[
|../../index.htm#lansa/l4wdev05_0255.htm]