FOR 関数

FOR フィールド関数は式を評価し、結果値 TRUE、FALSE、または UNKNOWN を割り当てます。

構文

FOR を使用すると、反復フィールドのすべてのインスタンスを反復する式を書き込むことができます。各インスタンスに対してブール式を処理し、結果を照合します。

以下に例を示します。
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
注:
  1. 比較述部に関してまず、FOR ALL の後ろのフィールド参照の最後にある [] に注意する必要があります。大括弧は、Item フィールドのすべてのインスタンスの反復を定義します。

    その情報はコンテキストから入手できるため、この構文は不要に思えるかもしれませんが、しかし、これは他の構文との一貫性を保つ役割があります。

  2. ASclause 文節は、フィールド参照内の名前 I を反復フィールドの現行のインスタンスと関連付けます。これは、C++ などのオブジェクト指向言語で使用される iterator クラスの概念と類似しています。括弧付きの式は、Item フィールドの各インスタンスに対して評価される述部です。

すべてのキーワードを指定すると、この関数は Body.Invoice.Purchases 内のフィールド項目のすべてのインスタンスを反復し、述部 I.Quantity <= 50 を評価します。述部の評価は以下のようになります。
  • TRUE (フィールドが空、またはすべての Item インスタンスが TRUE の場合) は、TRUE を戻します。
  • FALSE (すべての Item インスタンスに対して) の場合、FALSE が戻ります。
  • それ以外の場合、UNKNOWN が戻ります。
ANY および SOME キーワードは同等です。どちらかを使用すると、この関数は Body.Invoice.Purchases 内のフィールド項目のすべてのインスタンスを反復し、述部 I.Quantity <= 50 を評価します。述部の評価は以下のようになります。
  • FALSE (フィールドが空、またはすべての Item インスタンスが FALSE の場合) は、FALSE を戻します。
  • TRUE (すべての Item インスタンスに対して) の場合、TRUE が戻ります。
  • それ以外の場合、UNKNOWN が戻ります。
これをさらに説明する以下の例は、サンプル・メッセージで説明されるメッセージに基づいています。 以下のフィルター式で、
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')
副述部は TRUE と評価されます。しかし、次の式では FALSE を戻します。
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')
これは、C Primer がこの invoice (送り状) の中に含まれていないためです。このインスタンスで、invoice (送り状) 内のいくつかの項目がブック・タイトルを指すフィールドに含まれていない場合、副述部は UNKNOWN を戻し、比較述部も UNKNOWN の値を戻します。
ヌル値が出現する可能性がある場合には、十分注意してください。このフィルターを作成する際には、以下のようにフィールドの存在を明示的に確認してください。
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND
I.Book.Title = 'C Primer')
IS NOT NULL 述部によって確実に、Item フィールドに Book が含まれない場合に、副述部が FALSE の値を戻すようにします。
関連概念
ESQL の概要
関連タスク
ESQL の開発
エレメントの不明な複数の出現へのアクセス
関連資料
構文図: 使用可能なタイプ
サンプル・メッセージ
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak18490_