以前いただいた質問です。以下の例をご覧ください。
*** サンプルデータ ;
data DT1; A="aaaaa"; output; A=" bbb"; output; A=" ccc"; output; run;
|
上の例で2~3行目の変数値の先頭には半角スペースがあります。
これを以下のようにPUTでログに出力してみると、、
*** 変数Aをログに吐いてみる ;
data DT2; set DT1; put A; run; ログ aaaaa bbb ccc |
先頭の半角スペースが消えてしまいます。このスペースを残すにはどうしたら良いでしょうか?
(変数にはFORMATが割り当てられていない前提です)
解説
「KVERIFY関数」と 「カラムポインタコントロール機能」 を使ってみました。
data DT2; set DT1; put +(kverify(A," ")-1) A;
run; ログ
aaaaa bbb ccc |
解説
「KVERIFY関数」と 「カラムポインタコントロール機能」 を使ってみました。
put +(kverify(A," ")-1) A;
|
上の青文字部分では「KVERIFYで半角スペース以外の文字が最初に出現する位置-1」、つまり先頭の半角スペースの数を求めています。
put +(kverify(A," ")-1) A;
|
PUTステートメントで 「+(式)」とすると、式の結果の値(数値)の分だけポインタを移動させてくれます。
つまり変数Aの先頭の半角スペースの分だけ右にポインタを移動させてから、Aの値を出力しています。
0 件のコメント:
コメントを投稿