プロシジャ出力をアウトプットではなくデータセットに出力する

[OS] ALL
[リリース] SAS System8以降
[キーワード] Base, ODS OUTPUT, ODS EXCLUDE, no display

[質問]

プロシジャの出力をデータセットに出力して、アウトプットウィンドウへの表示をしないようにできますか?

[回答]

ODSステートメントを使用して、データセットへの出力とアウトプットウィンドウへの表示を別々に制御できます。 また、ODS EXCLUDE ALLステートメントを使用すれば、アウトプットウィンドウへの表示を抑制できます。
元に戻すには、ODS SELECT ALLステートメントを指定します。

プロシジャによっては、アウトプットウィンドウへの表示を抑制するNOPRINTオプションがサポートされていて、 これを指定した場合、出力データセットは作成されます。しかし、NOPRINTオプションは ODS OUTPUTステートメントと同時には使用できませんのでご注意ください。

下記の例では、CORRESPプロシジャの通常の出力が抑制され、OBSERVEDテーブルがデータセットに出力されます。


                                                    /* サンプルデータ */
   DATA COLOR;
      INPUT region eyes $ hair $ count @@;
   DATALINES;

   1 blue  fair   23 1 blue  red     7 1 blue  medium 24
   1 blue  dark   11 1 green fair   19 1 green red     7
   1 green medium 18 1 green dark   14 1 brown fair   34
   1 brown red     5 1 brown medium 41 1 brown dark   40
   1 brown black   3 2 blue  fair   46 2 blue  red    21
   2 blue  medium 44 2 blue  dark   40 2 blue  black   6
   2 green fair   50 2 green red    31 2 green medium 37
   2 green dark   23 2 brown fair   56 2 brown red    42
   2 brown medium 53 2 brown dark   54 2 brown black  13
   ;
   RUN;
                                            /* アウトプット出力の抑制 */
   ODS EXCLUDE ALL;
   PROC CORRESP DATA=color OBSERVED DIM=1;
      TABLE eyes,hair;
      ODS OUTPUT OBSERVED=tableout;
   RUN;
                                            /* アウトプット出力の選択 */
   ODS SELECT ALL;

   PROC PRINT DATA=tableout;
   RUN;

上記の内容は、米国SAS Institute社のWebサイトに記載されているFAQの日本語訳です。