前回は、アルファベット文字・数字・特殊文字を指定する場合の修飾子を紹介しました。
今回は、それ以外の第3引数について説明していきます。
■アルファベット文字・数字・記号に関する修飾子
F(またはf) アンダースコア("_")、アルファベット(A - Z, a - z)を取り除きます。
N(またはn) 数字、アンダースコア("_")、アルファベット(A - Z, a - z)を取り除きます。
実行例:
data _null_;
x = "\123-4567_8901 B234+5678-9012 c";
y1 = COMPRESS( x ,,"F");
y2 = COMPRESS( x ,"1234","F");
put y1= / y2=;
run;
実行結果:
y1=\123-45678901 234+5678-9012
y2=\-567890 +5678-90
NOTE: DATA ステートメント 処理 (合計処理時間):
処理時間 0.00 秒
CPU 時間 0.00 秒
■機能を指定する修飾子
他の修飾子のように取り除く文字の種類を指定するのではなく、関数の機能を指定します。
I(またはi) 大文字と小文字の区別をせずに取り除くか否かを指定します。
K(またはk)関数の機能を「取り除く」から「残す」に変更します。
実行例:
data _null_;
x = "\123-4567_8901 B234+5678-9012 c";
y1 = COMPRESS( x ,"b","I");
y2 = COMPRESS( x ,"1234","K");
put y1= / y2=;
run;
実行結果:
y1=\123-4567_8901 234+5678-9012 c
y2=1234123412
NOTE: DATA ステートメント 処理 (合計処理時間):
処理時間 0.01 秒
CPU 時間 0.01 秒
■修飾子の併用
修飾子は2つ以上指定することも可能です。
組み合わせを工夫することにより使い方の幅が広がるかもしれません。
例えば数字だけを残したい場合には、以下のように3種類の記述ができます。
data _null_;
x = "2010/05/21";
y1 = COMPRESS(x , "/"); * パターン1;
y2 = COMPRESS(x ,,"FP"); * パターン2;
y3 = COMPRESS(x ,,"DK"); * パターン3;
put y1= / y2= / y3=;
run;
実行結果:
y1=20100521
y2=20100521
y3=20100521
NOTE: DATA ステートメント 処理 (合計処理時間):
処理時間 0.00 秒
CPU 時間 0.00 秒
パターン1 : 単純に"/"を取り除きます。
パターン2 : アンダースコアと大小アルファベットを"F"で取り除き、句読点を"P"で取り除きます。
パターン3 : 数字を"D"で指定し、機能を"K"で「取り除く」から「残す」に変更します。
関数の対象となる値に、"/"だけが削除対象として入ってくる場合はパターン1でも問題ありません。
しかし、削除対象が複数ある場合や削除対象が特定できない場合など、パターン2や3が有効になるかもしれません。
以上、2回に分けてCOMPRESS関数の第3引数について解説しました。
普段使っている関数でも、使っていない機能や知らなかった機能などについて調べてみると、何かの場面で作業に活用できたりプログラミングの幅が広がるかもしれませんね。
投稿者:小森谷
[google]
0 件のコメント:
コメントを投稿