Page History
[ |../../index.htm#lansa/loc_entry_e.htm]
現在地:
...
7.88.2 LOC_ENTRY の使用例
例1:#ORDERLINEというリスト内で、数量×価格が1000を超えている最初の項目を見つけます。 例1:#ORDERLINEというリスト内で、数量×価格が1000を超えている最初の項目を見つけます。
DEF_
...
LIST NAME(#ORDERLINE)
...
FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) TYPE(*WORKING)
LOC_ENTRY IN_LIST(#ORDERLINE)
...
WHERE('(
...
#QUANTITY * #PRICE) *GT 1000')
例2:#COUNTRY 例2:#COUNTRY (国のリスト)という「テーブル・ファイル」は、#CCODE (国コード)、#CMNEM (国の略称)、および#CNAME (国の正式名称)というフィールドで構成されています。作業リストを使用して、このファイルに対するI/Oを最小限にするサブルーチンを作成します(すなわち、FETCHコマンドをLOC_ENTRYコマンドで置き換えます)。
SUBROUTINE NAME。
SUBROUTINE NAME(GET_CNTRY)
...
PARMS((
...
#GETCODE *RECEIVED)(
...
#CMNEM *RETURNED)
...
(
...
#CNAME *RETURNED))
...
DEFINE FIELD(#GETCODE)
...
REFFLD(#CCODE)
DEF_
...
LIST NAME(#COUNTRIES)
...
FIELDS(#CCODE #CMNEM #CNAME) TYPE(*WORKING)
...
ENTRYS(100)
...
LOC_
...
ENTRY IN_LIST(#COUNTRIES)
...
WHERE('
...
#CCODE =
...
#GETCODE')
...
IF_
...
STATUS IS_NOT(*OKAY)
...
FETCH FIELDS(#COUNTRIES)
...
FROM_FILE(COUNTRY)
...
WITH_KEY(#GETCODE)
ADD_
...
ENTRY TO_LIST(#COUNTRIES)
ENDIF
ENDROUTINE
このルーチンでは、ファイル#COUNTRY内で国コードが見つからない状況が考慮されていないことに注意してください。国が見つかったかどうかに関わらず、項目がリストに追加されます。 ENDIF ENDROUTINE
このルーチンでは、ファイル#COUNTRY内で国コードが見つからない状況が考慮されていないことに注意してください。国が見つかったかどうかに関わらず、項目がリストに追加されます。
また、パラメータ・リストで(#CCODEの代わりに)フィールド#GETCODEを使用していることにも注意してください。このフィールドを使用しない場合、LOC_ENTRYコマンドのWHERE条件をWHERE('#CCODE = #CCODE')として記述する必要がありますが、これは常にtrueのため、常に最初の項目が取得されることになります。 として記述する必要がありますが、これは常にtrueのため、常に最初の項目が取得されることになります。 WHERE条件で参照されるフィールドが作業リストの一部である場合、プログラムで認識されている実際のフィールドではなく、作業リスト内のそのフィールドのオカレンスが評価されます。
WHERE条件で参照されるフィールドが作業リストの一部である場合、プログラムで認識されている実際のフィールドではなく、作業リスト内のそのフィールドのオカレンスが評価されます。
すなわち、条件WHERE('#CCODE = #GETCODE')は、実際には「作業リスト項目内の国コード・フィールドの値が、プログラム内の取得コード・フィールドの値と等しい場合」という意味になります。
[ |../../index.htm#lansa/loc_entry_e.htm]は、実際には「作業リスト項目内の国コード・フィールドの値が、プログラム内の取得コード・フィールドの値と等しい場合」という意味になります。