Biostat/SAS Macro

SAS Macro 매크로 함수 %SCAN, %QSCAN

카이집사

%SCAN(변수, n<, 구분자>)  %QSCAN(변수, n<, 구분자>)

두 매크로 함수는 문자열의 특정위치를 지정하여 문자를 찾는 기능을 하는데, 다음 예제를 통해서 두 함수의 차이를 살펴보면 이해가 쉽다. 

 

%macro a;
   aaaaaa
%mend a;
%macro b;
   bbbbbb
%mend b;
%macro c;
   cccccc
%mend c;
%let x=%nrstr(%a*%b*%c); 
%put X: &x;                          
%put The third word in X, with SCAN: %scan(&x,3,*);      ----(1)
%put The third word in X, with QSCAN: %qscan(&x,3,*); ----(2)

 

(1) %SCAN 은 구분자(*) 기준으로 X 변수의 세번째 글자를 인식 후, 매크로 C 를 실행시켜서 cccccc 를 출력시키는 반면, 

(2) %QSCAN 에서는 구분자(*) 기준으로 X 변수의 세번째 글자를 인식 후, %를 문자열로 인식하여 그대로 나타낸다. 따라서 %QSCAN 을 이용한 결과는 %c 가 된다. 

 

%SCAN 은 주로 날짜에서 연도와 월 등을 슬래시(/) 등의 구분자를 이용하여 분리하여 저장하고자 할 때 사용한다.