CATXの落とし穴
文字列結合ではよく見かけるCATS、CATXですが、CATXには空白を無視するという落とし穴があります。
下の例を見てみましょう
変数aからdをカンマ区切りの文字列にする場合の処理です。
data _null_; a=''; b='a'; c=''; d='x'; e=cats(a,',',b,',',c,',',d); f=catx(',',a,b,c,d); g=catx(',',of a--d); run;
一見どれも同じように見えます。
むしろ、変数が増えれば増えるほどe>f>gの順に修正は楽になります。
しかしながら、生成される結果は以下のとおりです。
調べたらきちんと書いてありました。
CATX関数
「CATXは、結果の先頭または末尾に区切り文字を挿入しません。空白の項目では、結果の先頭または末尾に区切り文字は生成されません。また、複数の連続する区切り文字も生成されません。」
ということで、おとなしくcatsでちまちま結合するか、catqを使うか(構文が複雑なので自信がなく、全然使ったこと無いのですが)ですかね。