SQLのINTO句を使用する際の注意点を2つ紹介したいと思います。
1. 変数にフォーマットが割り当てられている場合
data DT1; format X yymmdd10.; X=1; run; proc sql noprint; select X into :X trimmed from DT1; quit; %put &X; ログ 1960-01-02 |
マクロ変数にはフォーマットをあてた値が格納されるようです。この挙動、SASのリファレンスに書いてない気がする。。
事前にフォーマットを除いておくか、もしくは数値変数ならデータに応じた適切な長さのBESTフォーマットを「FORMAT=」で便宜的にあてるなどの対応が必要になります。
proc sql noprint; select X format=best16. into :X trimmed from DT1; quit; %put &X; ログ 1 |
2. 数値変数かつフォーマットが割り当てられていない場合
data DT2; X=123.456789; run; proc sql noprint; select X into :X trimmed from DT2; quit; %put &X; ログ 123.4568 |
デフォルトの挙動として「BEST8.」の出力形式で格納されるようです。
状況によっては、もとの数値がだいぶ削られちゃいますね(これはINTO句に限ったことではないですが。。)