文字列内の位置により指定されるワードを検索します。
種類: | マクロ関数 |
参照項目: | %NRBQUOTE関数および %STR関数と%NRSTR関数 |
Macro Functions in UNIX Environments (UNIX版SAS) | |
Macro Functions (z/OS版SAS) |
文字列またはテキスト式を指定します。argumentが次に示すような特殊文字やニーモニック演算子を含んでいる場合、%QSCANを使用します。argumentがカンマを含んでいる場合、%BQUOTE(argument)のように、クォーティング関数を使用してargumentを囲みます。
この関数が返すワードの位置を表す整数、またはそのような整数を生成するテキスト式です(暗黙の%EVALは、n個の数値プロパティを提供します)。nがargument内にあるワード数よりも大きい場合、この関数はヌル文字列を返します。
文字のリストを初期化する文字式を指定します(省略可能)。このリストは、単語を区切る区切り文字として使用する文字を決定します。次の規則が適用されます。
ヒント | charlistに文字を追加するには、次に示す各種のモディファイヤを使用します。 |
%SCAN関数の動作を変更する非空白文字を含む文字定数、変数、式を指定します。空白は無視されます。次の文字を修飾子として使用できます。
aまたはA | アルファベット文字を文字リストに追加します。 |
bまたはB | 引数countの符号にかかわらず、左から右へではなく、右から左にスキャンを実行します。 |
cまたはC | 制御文字を文字リストに追加します。 |
dまたはD | 数字を文字リストに追加します。 |
fまたはF | 下線と英字(VALIDVARNAME=V7オプション使用時のSAS変数名で有効な先頭文字)を文字リストに追加します。 |
gまたはG | グラフィック文字を文字リストに追加します。グラフィック文字とは、紙の上にイメージとして印刷される文字のことです。 |
hまたはH | 水平タブを文字リストに追加します。 |
iまたはI | 大文字小文字を無視します。 |
kまたはK | 文字リストに含まれていないすべての文字が区切り文字として扱われるようにします。つまり、モディファイヤKを指定すると、文字リストに含まれている文字が、区切り文字として省略されるのではなく、戻り値内に保持されるようになります。Kを指定しない場合、文字リスト内のすべての文字が区切り文字として扱われます。 |
lまたはL | 小文字を文字リストに追加します。 |
mまたはM | 複数の連続する区切り文字、および引数string の先頭または末尾にある区切り文字が、長さゼロのワードを意味することを指定します。モディファイヤMを指定しない場合、複数の連続する区切り文字は1つの区切り文字として扱われ、引数stringの先頭または末尾にある区切り文字は無視されます。 |
nまたはN | 数字、下線、英字(VALIDVARNAME=V7オプション使用時のSAS変数名に表示される文字)を文字リストに追加します。 |
oまたはO | 引数charlistおよび引数modifierを、%SCAN関数が呼び出されるたびに処理するのではなく、一度だけ処理します。DATAステップ(WHERE句を除く)またはSQLプロシジャでモディファイヤOを使用すると、引数charlistおよびmodifierが変化しないようなループで%SCAN関数を呼び出す場合、同関数の処理が高速になります。モディファイヤOは、ユーザーが作成するSASプログラム内の%SCAN関数の各インスタンスに対して個別に適用されます。モディファイヤOは、%SCAN関数のすべてのインスタンスで同じ区切り文字やモディファイヤが使われるようにするものではありません。 |
pまたはP | 句読点を文字リストに追加します。 |
qまたはQ | 引用符で囲まれた部分文字列内にある区切り文字を無視します。引数stringの値に一致しない引用符が含まれている場合、左から右にスキャンした場合と右から左にスキャンした場合とでは異なるワードが生成されます。 |
rまたはR | %SCAN関数が返すワードから、先頭または末尾にある空白を削除します。モディファイヤQおよびRの両方を指定すると、%SCAN関数はまずワードの先頭または末尾にある空白を削除します。モディファイヤQおよびRの両方を指定すると、%SCAN関数はまずワードの先頭または末尾にある空白を削除します。続いて、同ワードが引用符で始まる場合、%SCAN関数は引用符の1ペアを同ワードから削除します。 |
sまたはS | スペース類(空白、水平タブ、垂直タブ、復帰、改行、改ページ)を文字リストに追加します。 |
tまたはT | 引数string および 引数charlist の末尾にある空白を削除します。どちらか一方の引数だけから末尾の空白を削除したい場合、モディファイヤT付きの%SCAN関数ではなく、TRIM関数を使用してください。 |
uまたはU | 大文字を文字リストに追加します。 |
wまたはW | 印刷可能文字を文字リストに追加します。 |
xまたはX | 16進文字を文字リストに追加します。 |
ヒント | 引数modifierが文字定数である場合、それを引用符で囲む必要があります。一組の引用符で複数の修飾子を指定します。引数modifierには、文字変数や文字式も指定できます。 |
& % ' " ( ) + − * / < > = ¬ ^ ~ ; , # blank AND OR NOT EQ NE LE LT GE GT IN
%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 SCAN: %scan(&x,3,*); %put The third word in X, with QSCAN: %qscan(&x,3,*);
X: %a*%b*%c The third word in X, with SCAN: cccccc The third word in X, with QSCAN: %c