SUBSTR(変数名,1,1)やSUBSTR(変数名,N,1)のような一字抜きであればFIRST関数、CHAR関数が使えるという話

例えば

data Q1;
 X='ABCDEFG';
 A=substr(X,1,1);
 B=substr(X,3,1);
run;

AはXから先頭1文字をとってきて、Bは3番目の文字をとります。
これで、問題ないです。





文句のつけようのないコードですが、敢えて無理やり文句をつけてみます。

まず、引数が3つもいるのが面倒臭い。
そして、今作成されたA、BのLENGTHは元のXのLENGTHを継承するため
$7です。一字だけとってるんだから、長さは$1あれば必ず足りるのに6も余計な
領域使っていて、無駄だ!エコでない!

というわけで、上記のコードは、必ず先頭1文字を取得するFIRST関数と、指定した場所を
1文字抜くCHAR関数で

data A1;
 X='ABCDEFG';
 A=first(X);
 B=char(X,3);
run;

とかけます。






この場合、A、Bの長さは$1です。

ちなみに最後の1文字をとる関数については、多分ないので

A=first(reverse(X));

のようにreverse関数で逆さ読みにしてから、firstかけてください。





0 件のコメント:

コメントを投稿