2015年4月1日水曜日

SQLプロシジャのINTO句で、前方に余計な半角スペースが入る場合がある。


まずは以下をご覧ください。

*** Sample Data ;
data DT1;
   do A=1 to 3;
        output;
   end;
run;

  A   
   1  
   2  
   3

*** カウントした結果をマクロ変数に格納 ;
proc sql noprint;
   select count(*) into: MAC
   from DT1;
quit;

*** マクロ変数をログに展開 ;
%put "&MAC";


ログ
"       3"

ログを見ると前方に半角スペースが入ってます。

マニュアルを確認してみたら、
今回のような書き方で、値を1個だけマクロ変数にいれようとすると、前方または後方に半角スペースが残ってしまうようです。

この前方または後方の半角スペースを取り除きたい場合、SAS9.3以降であれば、trimmed を加えます。

proc sql noprint;
   select count(*) into: MAC trimmed
   from DT1;
quit;

%put "&MAC";


ログ
"3"


もしくは、以下のように %letステートメント を挟んであげればokです。

proc sql noprint;
   select count(*) into: MAC
   from DT1;
quit;

%let MAC=&MAC;
%put "&MAC";


ログ
"3"


See also

0 件のコメント:

コメントを投稿