ログウィンドウがいっぱいになって処理が中断するのを回避する

[OS] ALL
[リリース] ALL
[キーワード] Base, DMS, LOG, OUTPUT,text, full, delete

[質問]

長いプログラムを実行する際、「ログ WINDOW FULL:ウィンドウのテキスト域が一杯のため削除します」というウィンドウが表示されて、処理が中断します。
これを回避するにはどうすればよいでしょうか。

[回答]

上記メッセージは、ログの出力行数が、ウィンドウの最大表示行数である99,999行を超えたことを示しています。

この現象を回避するには、下記の2種類の対応法があります。

1. PRINTTOプロシジャでログの出力先を外部ファイルに切り替える

PRINTTOプロシジャを使用して、ログの出力先をログウィンドウから外部ファイルに切り替えることができます。
この場合は、行数の制限はありません。


  /* ログの出力先を外部ファイルに変更 */
  PROC PRINTTO LOG="C:\SASLog\print.log" NEW;
  RUN;

  DATA class;
    SET sashelp.class;
  RUN;

  /* ログの出力先をウィンドウに戻す */
  PROC PRINTTO;
  RUN;

PRINTTOプロシジャの LOG=オプションに、出力先ファイルのパスまたはファイル参照名を記述します。以降、ログはすべてファイルに記録されます。

ログの出力先をウィンドウに戻すには、オプションなしでPRINTTOプロシジャを実行します。これにより、ログの出力先がデフォルト(ウィンドウ)に戻ります。

すでに同名のファイルが存在する場合、上書きするにはNEWオプションを指定します(NEWオプションを指定しない場合は、追加出力になります)。

2. NONOTES, NOSOURCEシステムオプションを指定して出力行数を減らす

プログラムソースやNOTEメッセージの出力が不要な場合は、NONOTES, NOSOURCEシステムオプションを指定して、出力しないようにできます。

NOSOURCE ソースプログラムを出力しない
(デフォルトはSOURCE)
NONOTES 「NOTE:」で始まるメッセージを出力しない
(デフォルトはNOTES)


  OPTIONS NOSOURCE NONOTES; 

デフォルトに戻すときは、「OPTIONS SOURCE NOTES;」を指定します。

なお、SAS 9.1以降では、DMSLOGSIZEシステムオプションを指定して、出力行数の制限を拡張できます。
詳細は下記のFAQを参照してください。