2017年6月30日金曜日

プロシジャ実行時に、「結果ビューア」等への出力をしないで、「データセット」に出力する。



以下をご覧ください。

ods output Moments=OUT1;

   proc univariate data=SASHELP.CLASS;
       var AGE;
   run;

ods output close;


ODS OUTPUT を使って、プロシジャの結果をデータセットに出力しています。
「ODS OUTPUT」については以下記事で紹介済です。


ここから本題で、
「データセットに出力したいだけで、結果ビューアにプロシジャの結果が出るの邪魔くさい!」っていう時ありますよね。



そんな時は「ODS SELECTステートメント
ODS出力先(HTML, LISTING, RTF等)に対して、プロシジャ等の結果を送らないように出来ます。

(少し独特な挙動なので、以降の解説も見ていただいて理解して使った方がよいです)

ods select none;
ods output Moments=OUT1;

   proc univariate data=SASHELP.CLASS;
      var AGE;
   run;

ods output close;
ods select all;


解説

ODS SELECT NONE:
ODS出力先に対して、出力オブジェクト(プロシジャ等の結果)を送らないようにします。

ODS SELECT ALL:
ODS出力先に対して、出力オブジェクト(プロシジャ等の結果)を送る設定をSASのデフォルトの状態に戻します。


ODS SELECT NONE」を実行すると、
通常「ODS SELECTステートメント」または「ODS EXCLUDEステートメント(説明省略)」で設定を変更しない限り、ODS出力先にプロシジャ等の結果を送ることは出来ません。

ただし「ODS OUTPUT」だけは例外で、上の例のように「ODS SELECT NONE」の直後でもプロシジャの結果等をデータセットに出力することが出来ます。



ちなみに、ちょっと前に以下の記事で「ODS RESULTS」を紹介しました。
「ODS RESULTS」で結果ウインドウへの表示を抑制する

「ODS SELECT」と「ODS RESULTS」は似たような事が出来るので混同しがちですが、機能としては全然別物なのでご注意を。




0 件のコメント:

コメントを投稿