You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

[ |../../index.htm#lansa/l4wdev05_0255.htm]
現在地:

4.3.11.1 最初の例

姓をキーとして従業員データを検索するプログラムを、素朴に実装した例です。ユーザーが姓またはその一部を指定すると、これに合致する従業員データがリスト・ビューされます。
********   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]

  • No labels