%TLOOKUPxx (テーブル要素の検索)
%TLOOKUP(arg : search-table {: alt-table})
%TLOOKUPLT(arg : search-table {: alt-table})
%TLOOKUPGE(arg : search-table {: alt-table})
%TLOOKUPGT(arg : search-table {: alt-table})
%TLOOKUPLE(arg : search-table {: alt-table})
次の関数は、次のように引数 と一致する値を求めて検索テーブル を検索します。
- %TLOOKUP
- 正確に一致するもの。
- %TLOOKUPLT
- 引数 に最も近いが、引数 よりも小さいもの。
- %TLOOKUPLE
- 正確に一致しているか、または引数 に最も近いが引数 よりは小さい値。
- %TLOOKUPGT
- 引数 に最も近いが、引数 より大きいもの。
- %TLOOKUPGE
- 正確に一致しているか、または引数 に最も近いが引数 より大きい値。
値が指定された条件に一致する場合、検索テーブルの現在のテーブルの要素は条件を満たす要素に設定され、代替テーブルに対する現行テーブル要素が同じ要素に設定され、そして関数が値 *ON を戻します。
指定された条件に一致する値がない場合は、*OFF が戻されます。
最初の 2 つのパラメーターはどんなタイプであっても構いませんが、同じタイプでなければなりません。 これらの長さまたは小数点以下の桁数は、同じである必要はありません。
引数 または検索テーブル が ALTSEQ(*NONE) を指定して定義されている場合を除き、ALTSEQ テーブルが使用されます。
組み込み関数 %FOUND と %EQUAL は %LOOKUP 命令に続けて設定されません。
注: LOOKUP 命令コードとは異なり、%TLOOKUP
はテーブルにのみ適用されます。配列内の値を検索するには %LOOKUP 組み込み関数を使用します。
%TLOOKUPxx 組み込み関数は、 順序テーブル (ASCEND または DESCEND キーワードが指定されたテーブル) を検索するために二分探索を使用します。 正しい順序になっていない順序配列を参照してください。
詳細については、配列命令または 組み込み関数を参照してください。
図 1. %TLOOKUPxx の例
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
/FREE
*IN01 = %TLOOKUP('Paris':tab1);
IF %TLOOKUP('Thunder Bay':tab1:tab2);
// code to handle Thunder Bay
ENDIF;
/END-FREE