%LOOKUP(arg : array {: startindex {: numelems}}) %LOOKUPLT(arg : array {: startindex {: numelems}}) %LOOKUPGE(arg : array {: startindex {: numelems}}) %LOOKUPGT(arg : array {: startindex {: numelems}}) %LOOKUPLE(arg : array {: startindex {: numelems}})
次の関数は、以下に示すような点で引数 と一致する配列 内の項目の配列指標を戻します。
指定された条件に一致する値がない場合は、ゼロが戻されます。
検索は開始指標 から始まり、要素の数 要素まで続行されます。デフォルトでは、配列全体が検索されます。
最初の 2 つのパラメーターはどんなタイプであっても構いませんが、同じタイプでなければなりません。 これらの長さまたは小数点以下の桁数は、同じである必要はありません。3 番目と 4 番目のパラメーターは、小数点以下の桁数がゼロの非浮動数値である必要があります。
%LOOKUPLT、%LOOKUPLE、%LOOKUPGT、および %LOOKUPGE の場合、配列がキーワード ASCEND または DESCEND を使用して定義されている必要があります。引数 または配列 が ALTSEQ(*NONE) を指定して定義されている場合を除 き、ALTSEQ テーブルが使用されます。
組み込み関数 %FOUND と %EQUAL は %LOOKUP 命令に続けて設定されません。
%LOOKUPxx 組み込み関数は、順序配列 (ASCEND または DESCEND キーワードが指定された配列) を検索するために二分探索を使用します。
詳細については、配列命令または組み込み関数を参照してください。
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+.... /FREE arr(1) = 'Cornwall'; arr(2) = 'Kingston'; arr(3) = 'London'; arr(4) = 'Paris'; arr(5) = 'Scarborough'; arr(6) = 'York'; n = %LOOKUP('Paris':arr); // n = 4 n = %LOOKUP('Thunder Bay':arr); // n = 0 (not found) n = %LOOKUP('Kingston':arr:3); // n = 0 (not found after start index) n = %LOOKUPLE('Paris':arr); // n = 4 n = %LOOKUPLE('Milton':arr); // n = 3 n = %LOOKUPGT('Sudbury':arr); // n = 6 n = %LOOKUPGT('Yorks':arr:2:4); // n = 0 (not found between elements 2 and 5) /END-FREE
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.