처음 쌔스를 배울때 헛갈리게 만드는 부분들 중 하나가 데이터 스텝 내에서 매크로 변수를 사용하는 것 입니다.
가끔 아래와 같이 데이터 스텝내에서 생성된 값을 매크로 변수에 할당했는데 해당 스텝내에서 다시 불러 쓰고 싶을때가 있습니다.
[예제]
%let test=5;
data _null_;
var1 = 10;
call symput('test', compress(var1));
test2=&test;
put test2=;
run;
%put [&test];
그런데 실행해 보면 test2에 5가 들어가 있습니다. 의도했던 것은 10인데 말입니다.
데이터 스텝이 실행되는 시점에 test2=&test; <-- 요부분의 매크로변수가 정해져 버려서 test2=5; 라고 들어가 버립니다.
동적으로 매크로변수를 할당해서 사용하고 싶을때는 아래와 같이 symget 함수를 사용해야 합니다.
%let test=5;
data _null_;
var1 = 10;
call symput('test', compress(var1));
test2=symget('test');
put test2=;
run;
%put [&test];
댓글 없음:
댓글 쓰기