2014年4月2日水曜日

ログ・アウトプットを外部ファイルに出力する。




「ログウィンドウ」と「アウトプットウィンドウ」の出力内容を、外部ファイルに保存する方法。



方法① PRINTTOプロシジャ


   proc  printto  log    = "保存するログのパスとファイル名.log"
                        print  = "保存するアウトプットのパスとファイル名.lst"   new;
   run;



・上記以降に実行したプログラムのログ・アウトプットが指定したパスに保存されます (「ログウィンドウ」と「アウトプットウィンドウ」には出力されなくなる)

newオプションは、すでに同名ファイルが存在する場合、上書きしてくれる。
   (指定しないと、追加書き込みになる)




最後に、以下を記述してログとアウトプットの出力先をデフォルトに戻しましょう。


   proc printto; run;






方法② DMステートメント


(注意喚起追記)
最近、DMステートメントでログ・アウトプットがうまく保存されない現象が起きました。
詳細不明のため、ご注意ください!



以下ステートメントをプログラムの最後に実行すると、それまでに出力された「ログウィンドウ」と「アウトプットウィンドウ」の中身を指定したパスに保存してくれる。


  dm log       'print  file="保存するログのパスとファイル名.log"  replace';
  dm output  'print  file="保存するアウトプットのパスとファイル名.lst"  replace';


replaceは、すでに同名ファイルが存在する場合、上書きしてくれる。



ただしDMステートメントは、、

・バッチ実行下では動作しない。
・すべての環境下で動作するか不明のため、使用する場合は各環境下で動作確認を行ってください。
・「dm  output  'print file=…」という書き方はテキスト形式のアウトプットを保存する方法です。SAS9.3以降アウトプットの形式がデフォルトでHTMLになったため、このまま書いてもうまく動作しません。
プログラムの先頭に「ods listing;」と書いてテキスト形式のアウトプットも出力されるように設定しておく必要があります。





ちなみに以下を記述しておくとSAS上の「ログウィンドウ」と「アウトプットウィンドウ」の中身を初期化(クリア)してくれるので便利。


   dm  log  'clear' ;
   dm  output  'clear' ;




0 件のコメント:

コメントを投稿