FINDNEXT、FINDPREV (DSEB のみ)
(FASTREXX プロシージャーで使用できます。)
入力データ・セットの needle を、 現行入力レコードから前方へ (FINDNEXT) または後方へ (FINDPREV) 検索します。検索は、ある範囲の列に、または正確な大/小文字の突き合わせに限定することができます。
FINDNEXT() または FINDPREV() によって特定のレコード上で needle が検出されると、以前に検出された needle に 1 を加えた位置 (FINDNEXT の場合) および 1 を引いた位置 (FINDPREV の場合) から、反復検索が再開されます。UP()、Down()、TOP()、または BOT() コマンドによってレコードの位置が変更された場合、または以前に needle が検出されなかった場合は、現在のレコードの最後からの逆方向検索 (FINDPREV の場合) および現在のレコードの最初からの順方向検索 (FINDNEXT の場合) が実行されます。
- Returns
- 検索が正常に行われた場合、needle が検出されたレコードが現行入力レコードになります。 そして、FINDNEXT 関数は、レコード内の needle の開始桁を戻します。検索が正常に行われなかった場合、現行入力レコードは、元のままで、FINDNEXT は 0 を戻します。
- needle
- 検索するストリングまたは数値。needle は、varname が既存の変数名と一致する &varname 形式の文字変数であっても構いません。「&」がコーディングされており、変数名が見つからない場合は、needle は検索されるストリング値として扱われます。
- start
- それぞれの入力レコードの検索範囲の開始を指定する位置 (バイト単位)。
- end
- それぞれの入力レコードの検索範囲の終了を指定する位置 (バイト単位)。
- CASE
- 大/小文字を区別した比較を行うことを指定します。
FINDNEXT または FINDPREV を呼び出すまでは現行であったレコードに加えた変更を、すべて保管したい場合は、UPDATE 関数を使用します。そうしないと、検索が正常に行われている場合、そのレコードに加えられたすべての変更は、FINDNEXT または FINDPREV が別のレコードに移動するときに消失します。
いくつかの例を示します。
例 1
FINDPREV('abc') /* Finds 'abc', 'ABC', 'ABc' and so on */
例 2
FINDNEXT('abc',1,10,'CASE') /* Finds 'abc', but not 'ABC', 'ABc' and so on */