前のページ|次のページ

%KSCANと%QKSCAN関数

文字列内の単語を位置指定して検索します。

カテゴリ: DBCS
種類: NLSマクロ関数

構文

%KSCAN (argument, n<,delimiters > )
%QKSCAN (argument, n<,delimiters > )

必須引数

argument

文字列またはテキスト式です。argumentが後述する特殊文字またはニーモニック演算子を含む場合は、%QKSCANを使用します。

n

整数または整数を生成するテキスト式です。この整数は、単語の位置を表します。nargumentにある単語数より大きい場合、関数はNULL文字列を返します。nが負の場合、%KSCANは文字列の最後の単語から逆方向に検索して、単語を選択します。

delimiter

%QKSCANが文字式内で単語区切り文字として使用する文字を指定します。

詳細

%KSCANと%QKSCAN関数は、argumentを検索して、n番目の単語を返します。単語とは、1つ以上の区切り文字によって区切られた1つ以上の文字のことです。
%KSCANでは、引数がマクロ引用関数によりマスクされていても、特殊文字とニーモニック演算子をマスクせずに値を返します。%QKSCANは、次の特殊文字とニーモニック演算子をマスクした値を返します。
& % ' " ( ) + − * / < > = ¬ ^ ~ ; , # blank
AND OR NOT EQ NE LE LT GE GT IN
%KSCAN関数では、次の条件をすべて満たす部分文字列を単語とします。
  • 左境界が、区切り文字または文字列の先頭である
  • 右境界が、区切り文字または文字列の末尾である
  • 区切り文字を含まない
単語は、その文字列の先頭または末尾に区切り文字がある場合、またはその文字列に2つ以上の連続した区切り文字が含まれる場合には長さが0となります。
%KSCAN関数に指定する引数が2つのみの場合、デフォルトの区切り文字は、コンピュータの使用文字がASCIIであるかEBCDICであるかによって異なります。
  • コンピュータの使用文字がASCIIの場合、次の文字がデフォルトの区切り文字です。
    blank !$ % & ( ) * + , - . / ; < ^¦/ ; < ^¦
    ^文字が含まれないASCII環境では、%KSCAN関数は代わりに~文字を使用します。
  • コンピュータの使用文字がEBCDICの場合、次の文字がデフォルトの区切り文字です。
    blank !$ % & ( ) * + , - . / ; < ^¦/ ; < ¬ | ¢¦
%KSCAN関数では、文字引数にNULLを指定できます。NULL引数は、長さがゼロの文字列として処理されます。数値引数にはNULLを指定できません。

例: %KSCANと%QKSCANの処理の比較

次の例に、%KSCANと%QKSCANの処理を示します。
%macro a;
   aaaaaa
%mend a;
%macro b;
   bbbbbb
%mend b;
%macro c;
   cccccc
%mend c;
%let x=%nrstr(%a*%b*%c);
%put X: &x;
%put The third word in X, with KSCAN: %kscan(&x,3,*);
%put The third word in X, with QKSCAN: %qkscan(&x,3,*);
%PUTステートメントは、ログに次の行を出力します。
X: %a*%b*%c
The third word in X, with KSCAN: cccccc
The third word in X, with QKSCAN: %c
前のページ|次のページ|ページの先頭へ