数値の前にゼロをつけて桁をそろえて出力する

[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, format, numeric, leading, zero, Zw.d

[質問]

桁数がそろっていない数値変数の値を、下記のように前にゼロを埋め込んで5バイトの文字変数に変換するには、どのようにすればよいでしょうか。

変換前 変換後
1
00001
12
00012
123
00123
1234
01234
12345
12345

[回答]

PUT関数とZw.dフォーマットを使用して変換できます。


  /* サンプルデータ */
  DATA sample; 
    INPUT num1 @@;
  CARDS;
  1 12 123 1234 12345
  ;
  RUN; 

  DATA sample;
    SET sample; 
    char1 = PUT(num1,Z5.);  /* PUT関数 + Zw.dフォーマット */  
  RUN;

Zw.dフォーマット
数値データの前にゼロをつけて出力します。
wは全体の表示桁数(バイト数)、dは小数の桁数です。

PUT関数
指定したフォーマットで値を変換します。
戻り値は文字列になります。

なお、数値変数を文字変数に変換せずに、前にゼロを埋めこんで表示するには、数値変数にZw.dフォーマットを設定します。


  DATA sample; 
    SET sample;       
    FORMAT num1 Z5.;        /* FORMATステートメント */ 
    PUT num1=; 
  RUN;