前のページ|次のページ

%UNQUOTE関数

マクロの実行時に、値に含まれているすべての特殊文字とニーモニック演算子をアンマスクします。

種類: マクロ関数
参照項目: %BQUOTE関数と%NRBQUOTE関数%NRBQUOTE関数%NRQUOTE関数%NRSTR関数%QUOTE関数と%NRQUOTE関数%STR関数と%NRSTR関数、および %SUPERQ関数

構文

%UNQUOTE(character-string | text-expression)

詳細

%UNQUOTE関数は値をアンマスクすることにより、その値に含まれている特殊文字がテキストとしてではなく、マクロ言語要素として解釈されるようにします。%UNQUOTE関数の最も重要な機能は、先行するマクロクォーティング関数によりそのトークン化が変更されていた値の正常なトークン化を復元することです。%UNQUOTE関数はマクロの実行時に有効となります。
詳細については、マクロクォーティングを参照してください。

例: %UNQUOTE関数を使用した値のアンマスク

この例では、マクロクォーティング関数を使ってマクロ変数の値を割り当て、その後、DATAステップで同変数を参照した場合に発生する可能性のある問題に対処しています。値がSASコンパイラに到達する前にアンマスクされていない場合、DATAステップは正しくコンパイルされず、エラーメッセージが出力されます。一部のマクロ関数は自動的に値をアンマスクしますが、変数はこれらの関数によって処理されません。
次のプログラムを実行すると、TESTVALの値がSASコンパイラに到達した時点でマスクされたままになっているため、エラーメッセージがSASログに出力されます。
%let val = aaa;
%let testval = %str(%'&val%');
data _null_;
  val = &testval;
  put 'VAL =' val;
run;
次のプログラムは、%UNQUOTE関数によりTESTVALの値をアンマスクしているため、正しく動作します。
%let val = aaa;
%let testval = %str(%'&val%');
data _null_;
  val = %unquote(&testval);
  put 'VAL =' val;
run;
このプログラムを実行すると次の行がSASログに書き込まれます。
VAL=aaa
前のページ|次のページ|ページの先頭へ