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=132 PS=60  SPLIT="/" CENTER ;
 COLUMN  ( Name Age );
  
 DEFINE  Name / DISPLAY FORMAT= $8. WIDTH=8     SPACING=2   LEFT "Name" ;
 DEFINE  Age / SUM FORMAT= BEST9. WIDTH=9     SPACING=2   RIGHT "Age" ;
 RUN;


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



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


ただし、ログに出力されるREPORTプロシジャの文には、
  • 一部の出力先でしか有効でないオプションが出力されたり(例えば「WIDTH=」や「SPACING=」というオプション)
  • 以下のような一部のステートメントやオプションの記述が省略されるらしいのでご注意ください
BY
WHERE
FREQ
WEIGHT
LIST
OUT=
OUTREPT=
PROFILE=
REPORT=
NOWD 
...等


0 件のコメント:

コメントを投稿