これまた便利な関数が仲間入りしました。
いわゆる文字列結合をした結果を返すCAT関数です。
(CATS/CATT/CATX関数も同じ仲間ですが、動作に少し違いが出ます。
詳しくは下記で説明していきます。)
V8までですと、文字列結合する場合は
var1 = "ABC" || "DEF" ;
のように、"||"で文字列(文字変数)同士を結合していました。
(ちなみに、"!!"でも記述できました。かなりマニアック?)
V9でCAT(CATS/CATT/CATX)関数を使うと以下のように記述できます。
data _NULL_ ;
x = "NI " ; * Iの後にブランク ;
y = " Nature Insight " ; * Nの前にブランク、tの後にブランク ;
z = " Co.,Ltd. " ; * Cの前にブランク、d.の後にブランク ;
z1 = cat (x, y, z) ;
z2 = cats(x, y, z) ;
z3 = catt(x, y, z) ;
z4 = catx("_", x, y, z) ;
put z1 = ;
put z2 = ;
put z3 = ;
put z4 = ;
run ;
先に、実行結果を見てみます。
関数の戻り値の格納先の変数(z1~z4)には、文字変数を結合した値が入っていますね。
(値は微妙に違っていますが)
では、1つずつ説明していきます。
・CAT関数
引数で指定した文字列(文字変数)を単純に結合します。
・CATS関数
引数で指定した文字列(文字変数)を、それぞれの最初と最後のブランクを取り除いて結合します。
・CATT関数
引数で指定した文字列(文字変数)を、それぞれの最後のブランクのみを取り除いて結合します。
・CATX関数
引数で指定した文字列(文字変数)を、それぞれの最初と最後のブランクを取り除き、
第1引数で指定したデリミタ(区切り文字)を付加して結合します。
ログからですと、少し分かりにくいかもしれませんが、
1つ1つを注意深くみると、上で説明した通りの結果が返ってきていることが分かります。
(文字列中のブランク("Nature Insight"ですとeとIの間のブランク)は取り除かれないようです。)
V8で実行すると、完全なシンタックスエラーになります。
動きはさりげないですが、大量の文字列(文字変数)を結合するとき等は重宝しそうですね。
(var1 || var2 || var3 || var4 || var5 ||~のように"||"を沢山記述する必要がなくなるので)
ちなみに、CAT関数という名称は、おそらく「concatenate(連結させる)」から取ったものと思われます。
0 件のコメント:
コメントを投稿