%LOOKUPxx (配列要素の検索)
%LOOKUP(arg : array | keyed_array_DS {: start_index {: number_of_elements}})
%LOOKUPLT(arg : array {: start_index {: number_of_elements}})
%LOOKUPGE(arg : array {: start_index {: number_of_elements}})
%LOOKUPGT(arg : array {: start_index {: number_of_elements}})
%LOOKUPLE(arg : array {: start_index {: number_of_elements}})
- %LOOKUP
- 正確に一致するもの。
- %LOOKUPLT
- 引数 に最も近いが、引数 よりも小さいもの。
- %LOOKUPLE
- 正確に一致しているか、または引数 に最も近いが引数 よりは小さい値。
- %LOOKUPGT
- 引数 に最も近いが、引数 より大きいもの。
- %LOOKUPGE
- 正確に一致しているか、または引数 に最も近いが引数 より大きい値。
指定された条件に一致する値がない場合は、ゼロが戻されます。 戻り値は符号なし整数形式 (タイプ U) です。
+---+---+---+---+---+---+---+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
-----------+---+---+---+---+---+---+---+
ASCEND | A | C | C | C | E | E | G |
-----------+---+---+---+---+---+---+---+
DESCEND | G | E | E | E | C | C | A |
-----------+---+---+---+---+---+---+---+
- %LOOKUP、%LOOKUPLE、または %LOOKUPGE では、 検索引数と等しい要素が複数ある場合、最初に一致した要素の 指標が戻されます。 例えば、検索引数が C の場合、これらの組み込み関数 は、昇順配列では 2 を戻し、降順配列では 5 を 戻します。
- 昇順配列に対する %LOOKUPLE 組み込み関数では、検索引数と等しい要素がない 場合、検索引数よりも小さい最後の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPLE は 4 を戻します。
- 降順配列に対する %LOOKUPLE 組み込み関数では、検索引数と等しい要素がない 場合、検索引数よりも小さい最初の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPLE は 5 を戻します。
- 昇順配列に対する %LOOKUPGE 組み込み関数では、検索引数と等しい要素がない場合、 検索引数より大きい最初の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPGE は 5 を戻します。
- 降順配列に対する %LOOKUPGE 組み込み関数では、検索引数と等しい要素がない場合、 検索引数より大きい最後の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPGE は 4 を戻します。
- 昇順配列に対する %LOOKUPLT 組み込み関数では、 検索引数より小さい最後の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPLT は 4 を戻します。
- 降順配列に対する %LOOKUPLT 組み込み関数では、 検索引数より小さい最初の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPLT は 5 を戻します。
- 昇順配列に対する %LOOKUPGT 組み込み関数では、 検索引数より大きい最初の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPGT は 5 を戻します。
- 降順配列に対する %LOOKUPGT 組み込み関数では、 検索引数より大きい最後の要素の指標が戻されます。 例えば、検索引数が D の場合、%LOOKUPGT は 4 を戻します。
検索は指標開始指標 から始まり、要素数 個の要素について続けられます。 デフォルトでは、配列全体が検索されます。
2 番目のパラメーターには ARRAY_NAME 形式の スカラー配列を指定できます。 %LOOKUP の場合は、ARRAY_DS_NAME(*).SUBFIELD_NAME 形式のキー付き配列データ構造 を指定することも可能です。
配列データ構造を検索するには、データ構造名と指標 (*) を指定してから、検索のキーとして使用するサブフィールドを指定します。 例えば、配列データ構造 INFO のサブフィールド CODE で値 'XP2' を検索する場合、 最初のパラメーターとして 'XP2' を指定し、2 番目のパラメーターとして INFO(*).CODE を指定します。 修飾名で指標 (*) までの部分が配列を表し、 (*) の後の部分が、スカラー・サブフィールド、またはスカラーの指標付き配列を表す必要があります。
最初の 2 つのパラメーターはどんなタイプであっても構いませんが、同じタイプでなければなりません。 キー付きデータ構造配列の場合、最初のパラメーターは、キーとタイプが同じでなければなりません。 これらの長さまたは小数点以下の桁数は、同じである必要はありません。 3 番目と 4 番目のパラメーターは、小数点以下の桁数がゼロの非浮動数値である必要があります。
%LOOKUPLT、%LOOKUPLE、%LOOKUPGT、および %LOOKUPGE の場合、配列がキーワード ASCEND または DESCEND を使用して定義されている必要があります。 引数 または配列 が ALTSEQ(*NONE) を指定して定義されている場合を除 き、ALTSEQ テーブルが使用されます。
組み込み関数 %FOUND と %EQUAL は %LOOKUP 命令に続けて設定されません。
%LOOKUPxx 組み込み関数は、順序配列 (ASCEND または DESCEND キーワードが指定された配列) を検索するために二分探索を使用します。