2019年1月1日火曜日

文字列の前後のスペースを除いてマクロ変数を作る話

たとえば"  test"のような,マクロ変数にしたい文字列の前後に要らないスペースがある時,
スペースを取り除いてマクロ変数にすることがあると思います.
今回の例で言うと"test"と言う値をマクロ変数に格納する場合です.

そんな時はcall symputxが便利ですよ,と言う話です.
call symputxだと前後のスペースを取り除いてマクロ変数にしてくれます.
call symputx("a" , "  test")と,call symput("a" , left(trim("  test") ))は同じです.

割と色んな場所で見かける紹介なのですが,あえてcall symputでマクロ変数を作っていてスペースを取り除き忘れたために
意図しない挙動を取ったプログラムを見かけたので私も紹介します.

/*---------- 以下マクロ変数作成時のプログラムの例 ----------*/
data _null_ ;
    call symput("a1"  , "  test") ;
    call symput("a2"  , left(trim("  test") )) ;
    call symputx("a3" , "  test") ;
run ;

%put &=a1 ;
%put &=a2 ;
%put &=a3 ;

/*---------- 作成したマクロ変数をlogに表示 ----------*/
39
40   %put &=a1 ;
A1=  test
41   %put &=a2 ;
A2=test
42   %put &=a3 ;
A3=test

0 件のコメント:

コメントを投稿