2019年1月11日金曜日

ODS GRAPHICSの設定を保存・復元する。




SAS9.4M3からODS GRAPHICSの設定を一時保存・復元する「PUSH・POPオプション」が追加されました。

本題に入る前に、まずは前提知識として「SHOWオプション」から紹介していきます。




SHOWオプション

ODS GRAPHICS / SHOW ;

  • 現在のODS GRAPHICS の設定をログに表示することが出来ます。


ods graphics / show ;



PUSHオプション

ODS GRAPHICS / PUSH ;

  • 現在のODS GRAPHICSの設定を一時保存することが出来ます。
  • PUSHオプションを指定する度に、その時点のODS GRAPHICSの設定を別々に保存することが出来ます。



/*** ① 現在のODS GRAPHICSの設定を見てみる ********/
ods graphics / show;

/* 設定を保存 */
ods graphics / push;



/*** ② ODSで出力される画像の幅を300pxに変更 ********/
ods graphics / width=300;
ods graphics / show;

/* 設定を保存 */
ods graphics / push;





POPオプション

ODS GRAPHICS / POP ;

  • 一時保存したODS GRAPHICSの設定を呼び出すことが出来ます。
  • POPオプションを指定する度に、PUSHで保存した設定の新しい方から順に呼び出されます。
  • つまり、PUSHで設定①、設定②、設定③と3回設定を保存した場合、POPでは設定③、設定②、設定①という順で呼び出される(スタックの原理)



/* 設定の呼び出し */
ods graphics / pop;
proc sgplot data=sashelp.class;
  scatter x=height y=weight;
run;

/* 設定の呼び出し */
ods graphics / pop;
proc sgplot data=sashelp.class;
  scatter x=height y=weight;
run;





役に立つ例

汎用マクロを作る際に便利です。以下の例をご覧ください。

%macro test;

  /* 現在のODS GRAPHICSの設定を保存しておく */
  ods graphics / push;

  /* SGPLOT */
  ods graphics / reset=all height=500 width=500;
  proc sgplot data=sashelp.class;
       scatter x=weight y=height;
  run;

  /* マクロ実行前のODS GRAPHICSの設定に戻す */
  ods graphics / pop;

%mend;

  • マクロの最初にPUSH、最後にPOPを置いています。
  • これにより、いくらマクロの中でODS GRAPHICSの設定をいじっていても、マクロ実行後には設定を元に戻すことが出来ます。


0 件のコメント:

コメントを投稿