Biostat/SAS Macro

SAS Macro 인용함수 %BQUOTE, %NRBQUOTE

카이집사

%BQUOTE (문자열 | 문자식)

%NRBQUOTE(문자열 | 문자식)

 

문자열이나 문자식에 포함되어 있는 특수문자를 문자로만 받아들인다.

이에 해당되는 특수 문자들은,

' " ( ) + - * / < > = ^ ~ ; , blank

AND OR NOT EQ NE LE LT GE GT

 

%NRBQUOTE 은 여기에 ‘&’ 과 ‘%’ 이 포함된다.

 

[Example] 변수인용부호 

%macro fileit(infile);

  %if %bquote(&infile) NE %then
     %do;
         %let char1 = %bquote(%substr(&infile,1,1)); -- 1)
         %if %bquote(&char1) = %str(%’)   ---------------- 2)
             or %bquote(&char1) = %str(%")    ------------- 3)
         %then %let command=FILE &infile;
         %else %let command=FILE "&infile";
     %end;
  %put &command;

%mend fileit;

%fileit(myfile);
[로그창]  FILE "myfile"

%fileit('myfile');
[로그창] FILE 'myfile'
 
1)매크로 변수 INFILE 에 들어있는 문자열의 첫글자를 특수문자에 상관없이 다른 매크로 변수인 CHAR1에 넣음. CHAR1 의 결과에 따라 %IF 문 조건에 맞춰 문장을 실행함
2)CHAR1 변수의 결과가 인용부호 이거나
3)CHAR1 변수의 결과가 인용부호 일 경우를 의미