2019年9月1日日曜日

streamプロシジャでマクロ変数を出力する

最近proc streamに凝っていますが、なかなか思うように扱えないですね。悲しい。
引っかかって解決したところを時々こうやって取り上げていければと思います。

今回はstreamプロシジャでマクロ変数を出力する話です。普通に書けばそのマクロ変数は展開されてしまいますが、クォートすれば展開させずにマクロ変数そのものを出力できます。


たとえば以下のように実行すると、マクロ変数hogeを展開して_outに出力します。当然マクロ変数hogeを作っていないと展開できない旨のerrorが返ります。

filename _out hogehoge\piyo.sas ;
proc stream outfile=_out resetdelim="rd" noabsscmt ;
begin
&hoge
;;;;


以下のように&をクオートするとマクロ変数hogeは展開されず、&hogeという文字列が_outに出力できます。あくまで文字列としてマクロ変数名を出すだけなのでマクロ変数hogeを事前に作っていなくてもerrorは返りません。

filename _out hogehoge\piyo.sas ;
proc stream outfile=_out resetdelim="rd" noabsscmt ;
begin
%str(&)hoge
;;;;

よく考えるとクオートすればいい話なのですがだいぶと難儀しました。まだまだstreamプロシジャと良い関係になれません。

0 件のコメント:

コメントを投稿