2015年10月9日金曜日

マクロ実行文をログに展開するMPRINTとMPRINTNEST


他の方が書いたSASプログラムを引き継いで運用するって事ありますよね。
そんな時に今回紹介するオプションが結構役に立ちます。


まず以下のプログラムがあったとします。
* 適当な例 ;
%macro TEST;
     X=1;
%mend;

%macro TEST2;
     data DT1;
         %TEST
     run;
%mend;

マクロ[TEST2]の中で別のマクロ[TEST]を呼び出しているプログラムです。


ここで MPRINT オプションを設定してマクロを実行すると、、
options mprint;
%TEST2;


ログ
MPRINT(TEST2):   data DT1;
MPRINT(TEST):   X=1;
MPRINT(TEST2):   run;

上のログのように、展開されたマクロがログに出力されます。


さらにMPRINTNEST オプションも合わせて設定すると、、
options mprint mprintnest;
%TEST2;


ログ
MPRINT(TEST2):   data DT1;
MPRINT(TEST2.TEST):   X=1;
MPRINT(TEST2):   run;

MPRINT(マクロ名1.マクロ名2) という風にネストされているマクロ名がすべて出力されます。

設定を戻すには 「options nomprint nomprintnest ;」と書けばok


マクロって便利ですが、ネストしまくると読みづらいプログラムになりがちです。
そういった時、上記オプションを設定することで、マクロの動きが分かり易くなる場合があります。


0 件のコメント:

コメントを投稿