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 件のコメント:
コメントを投稿