2015年8月18日火曜日

PROC REPORTでインデントをつける方法(ODS出力時)



今回は「ODS RTF」での例になります。
「ODS EXCEL」等、一部の出力ではインデントが設定できなかったので、ご注意下さい。

* サンプルデータ ;
data DT1;
input A$ FLG;
cards;
aaa .
aaa 1
aaa 1
bbb .
bbb 1
bbb 1
;

FLG 
  aaa  
  . 
  aaa  
  1  
  aaa 
  1  
  bbb  
  . 
  bbb  
  1  
  bbb 
  1  


上のデータで、変数Aのデータ部分にインデントをつけて、出力してみます。

ods rtf file="ここに出力ファイルのフルパスを指定";

   proc report data=DT1;
       column A ;
       define A   / display style(column)=[marginleft=1cm] "インデントのテスト";
   run;

ods rtf close;




また条件によって、インデントをつけたり、つけなかったりしたい場合、

たとえば、今回のサンプルデータでFLG=1の時だけ、変数Aにインデントを設定したいとします。

ods rtf file="ここに出力ファイルのフルパスを指定";

   proc report data=DT1;
       column FLG A ;
       define FLG / display noprint;
       define A     / display  "インデントのテスト";

       compute A;
          if FLG=1 then call define(_COL_,"style","style=[marginleft=1cm]");
       endcomp;
   run;

ods rtf close;



ポイントは COLUMN と COMPUTE

① まずCOLUMNステートメントでは、以下の順番で変数を指定する必要があります。

column  条件に使用する変数  対象変数 ;

今回の例では「column FLG A;」としています。
この順番を守らないと、ちゃんとインデントが設定されません。


② 次にCOMPUTEステートメントで、以下のように設定します。

compute 対象変数;
     if 条件 then call define(_COL_ , "style", "style=[marginleft=インデント幅]");
endcomp;


ちなみに、以下記事で解説しているよくあるミスにも注意!

0 件のコメント:

コメントを投稿