2016年8月15日月曜日

「put _ALL_」は動くのに、「put _NUMERIC_」や「put _CHAR_」は動かない。


以下のように 「PUT _ALL_;」 で全ての変数値をログに出力する事が出来ます。

* サンプルデータ作成 ;
data DT1;
   A = 1;
   B = "aaa";
   C = 2;
   D = "bbb";
run;

* 変数値の出力 ;
data _NULL_;
   set DT1;
   put _ALL_;
run;

ログ
A=1 B=aaa C=2 D=bbb _ERROR_=0 _N_=1

「_ERROR_」 や 「_N_」 などSASが内部で持っている自動変数も出力されます。


同じ要領で 「PUT _NUMERIC_;」 で全数値変数、「PUT _CHAR_;」 で全文字変数を出力することが出来そうですが、、
data _NULL_;
   set DT1;
   put _NUMERIC_;
   put _CHAR_;
run;

ログ
ERROR: _char_を変数名として使用できません。
ERROR: _numeric_を変数名として使用できません。

ERRORが出てしまいます。
こういう書き方無理なのかというと、以下のように書けばいけます。


全数値変数をログに出力 (自動変数は出力されない)
data _NULL_;
   set DT1;
   put (_NUMERIC_)(=);
run;

ログ
A=1 C=2


全文字変数をログに出力 (自動変数は出力されない)
data _NULL_;
   set DT1;
   put (_CHAR_)(=);
run;

ログ
B=aaa D=bbb



関連記事
PUT (変数名) (出力時の表示法) という書き方

0 件のコメント:

コメントを投稿