2017年4月18日火曜日

PROC REPORTで困ったときのLISTオプション



REPORTプロシジャは非常に奥が深いので、以前より書いている「REPORTプロシジャ入門」でも基本部分さえ書ききれていません。


奥が深いゆえに「あれ?なんでこれうまく動いてくれないの!?」って質問も多くいただくので、そういった時に役立つLISTオプションをご紹介します。


とりあえず適当に以下LISTオプションをつけて実行してみます。

proc report data=SASHELP.CLASS nowd list;
  column NAME AGE;
run;


すると、ログにREPORTプロシジャの文が出力されます。

ログ
PROC REPORT DATA=SASHELP.CLASS LS=95  PS=58  SPLIT="/" CENTER ;
COLUMN  ( Name Age );

DEFINE  Name / DISPLAY FORMAT= $12. WIDTH=12    SPACING=2   LEFT "名前" ;
DEFINE  Age / SUM FORMAT= BEST9. WIDTH=9     SPACING=2   RIGHT "年齢" ;
RUN;


これは実行したREPORTプロシジャをSASがどのように解釈しているか表しています。
プログラマが省略したオプションとかが補完されて見れるわけですね。



REPORTプロシジャのオプションは初期値のクセが強いので「え?裏でそんな動きしてたのか、そりゃ想定通りの動きをしなかったわけだ。。」っていう具合にLISTオプションが解決の手助けしてくれます。

ただし、ログに出力されるREPORTプロシジャの文からは以下のような一部オプションの記述が省略されるらしいのでご注意を。

BY
WHERE
FREQ
WEIGHT
LIST
OUT=
OUTREP=
PROFILE=
REPORT=
NOWD

0 件のコメント:

コメントを投稿