%STR
특수문자나 공백을 다룰 때 사용하는 매크로입니다.
STR은 String의 약자로 매크로 프로세사가 특수문자가 명령어가 아닌 일반 텍스트로 처리하도록 만든 함수입니다.
SAS에서는 특수문자가 명령어로 인식됩니다.
; (세미콜론) : 문장 끝
+, - : 연산자
, (쉼표) : 매개변수 구분
() (괄호) : 함수 또는 표현식
■ ;(세미콜론) 을 문장 끝으로 인식한 경우
%LET text = a;b;c;
%PUT &text;
text에 문자열 a 만 할당되어 b, c 문자는 tet에 할당되지 않습니다.
또한, 유효한 syntax가 아니기 때문에 오류가 발생되어 로그에 표시됩니다.
■ ;(세미콜론) 을 문자열로 인식하는 방법
%LET text = %STR(a;b;c);
%PUT &text;
;(세미콜론) 이나 따옴표(" " ' ')와 같은 특수문자가 포함되어 있을 경우
Macro Quoting 인 괄호 ( ) 를 활용해 괄호 안에 있는 텍스트를 문자열로 취급할 수 있게 합니다.
■ 등호(=) 표시를 문자열로 인식하는 방법
방법1)
%LET equation = x=15;
%PUT 방정식: &equation;
위 %LET 문에서 매크로와 관련된 특수문자( ; , "") 등이 포함되지 않았습니다.
매크로 관련 특수문자가 포함되어 있지 않기 때문에 Macro Quoting(매크로 인용) 없이도 x = 15 자체가 문자열로 인식할 수 있습니다.
방법2)
%LET equation = %STR(x=5);
%PUT 방정식: &equation;
%LET text1 = 안녕하세요;
%PUT [&text1];
SAS 매크로 변수에 값을 할당할 때에는 텍스트의 양쪽 끝에 있는 공백을 자동으로 제거합니다.
%LET 문으로 변수에 공백까지 넣었던 경우 공백은 사라집니다.
%LET text2 = %STR( 안녕하세요);
%PUT [&text2];
%LET text3 = %STR(안녕하세요 );
%PUT [&text3];
공백을 문자처럼 인식하기 위해서 %STR 문을 활용합니다.
%STR은 괄호 안의 모든 문자를 그대로 텍스트로 인식할 수 있게 합니다.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.