2013年11月8日金曜日

PUT関数の小技「文字寄せ」


以下のプログラムを実行すると、、

data DT1;
  length VAR1 $20.;
  VAR1 = put(1, 20.);
run;


「         1」みたいな感じで先頭に余計な半角スペースが入ってしまう。
左詰めにするため「left関数」を使う以外に、

 VAR1 = put(1, 20. -L);

と書くこともできてしまう。

ちなみに

 「-L」が左詰め
 「-C」が中央
 「-R」が右詰め

って意味になる。



使うときの注意

① VAR1 = put(1, 8.2 -L);            * OK ;
② VAR1 = put(1, 8.2 -L) || "mg";  * NG ;


上記②の場合、
まず「put(1, 8.2 -L)」で左詰めした分、文字値の右側に半角スペースが移動します。
イメージ:「    1.00」→「1.00    」


この文字と「mg」を結合すると「1.00    mg」といった感じで、不要な半角スペースが混入してしまう。

あくまでもleft関数のような動きをしていることに注意!

5 件のコメント:

  1. まじですか!凄い!知りませんでした!
    いっつも関数で空白飛ばしたりしていました!
    人生変わりました。有難うございます。

    返信削除
  2. コメントありがとうございます!
    他人のプログラムにこの小技が入ってたらなんかカッコいいですよね。
    この小技はゼロパディングの時など、他にも応用できることがありそうです。

    また見に来てください!

    返信削除
  3. もう毎日でもみますよ。
    勉強になります!ブログはじめてくれて凄い嬉しいです。
    なんか僕のと違って、文章が読みやすくて綺麗で、内容もためになります!

    僕のブログにリンク貼ってもよいです??

    返信削除
  4. 日本でテクニカルな議論の場とか、サイトがないので、
    「詰めSAS」毎日見させていただいて勉強になってます。

    リンク宜しくお願いします!
    こちらからもリンク貼らせてください。

    返信削除
  5. いや、うちのグループの男性陣に紹介したら、
    皆こっちの方がためになる。僕のブログは我が強すぎて、文章がうざいともっぱらの噂です。
    リンク有難うございます!!

    返信削除