Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../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')は、実際には「作業リスト項目内の国コード・フィールドの値が、プログラム内の取得コード・フィールドの値と等しい場合」という意味になります。
[ Image Removed |../../index.htm#lansa/loc_entry_e.htm]は、実際には「作業リスト項目内の国コード・フィールドの値が、プログラム内の取得コード・フィールドの値と等しい場合」という意味になります。