全角文字データから数字のみを取り出す

[OS] Windows
[リリース] 9.2以降
[キーワード] DBCS サンプルプログラム

[質問]

COMPRESS関数の第三引数に KD を指定することで、文字列の中から数字のみを取り出す処理ができます。同様の処理を、全角文字を含むデータに対して行うことは可能でしょうか?

[回答]

COMPRESS関数は半角文字専用の関数であるため、全角文字を含むデータに対して使用することはできません。

全角文字に対応した KCOMPRESS関数を代わりに使用します。

ただし、KCOMPRESS関数は第三引数をサポートしないため、数字のみを取り出す処理を KCOMPRESS関数単独で行うことはできません。

次のような DATAステップを用いる必要があります。

/* サンプルデータ */
DATA sample; 
  INPUT col1 : $50.;
  DATALINES; 
1
2nd
3番目
; 
RUN;

/* 数字のみを取り出す */
DATA result;
  SET sample;

  /* 全角と半角の数字一覧 */
  numlist="12345678901234567890";

  /* 数字以外の値すべて */
  only_char=KCOMPRESS(col1,numlist);

  /* 全角と半角の数字 */
  only_num=KCOMPRESS(col1,only_char);

  /* 全角数字を半角数字に変換する */
  only_num2=KPROPCASE(only_num,"FULL-ALPHABET, HALF-ALPHABET");

  PUT only_num2=;
RUN;

ログ出力例:

only_num2=1
only_num2=2
only_num2=3