2017-09-26 13 views
2

이것은 쉬운 것이어야하지만 알아낼 수는 없습니다 : 테이블 내용으로 매크로 변수를 만들어야하는 상황이 있습니다. &)를 텍스트의 일부로 사용하십시오. 매크로 변수를 호출 할 때 SAS가 앰퍼샌드를 무시하도록하려면 어떻게합니까? 예를 들어,이 코드 ... SAS : 앰퍼샌드를 매크로 변수에 두는 것

data _null_; 
test="Amos&Andy"; 
call symputx("testvar",test); 
run; 
%put testvar=&testvar; 

...이 로그에 기록 :

28 data _null_; 
29 test="Amos&Andy"; 
WARNING: Apparent symbolic reference ANDY not resolved. 
30 call symputx("testvar",test); 
31 run; 

NOTE: DATA statement used (Total process time): 
    real time   0.00 seconds 
    cpu time   0.00 seconds 


WARNING: Apparent symbolic reference ANDY not resolved. 
32 %put testvar=&testvar; 
testvar=Amos&Andy 

가 어떻게 SAS는 앰퍼샌드를 무시하고 로그에 경고를 작성하지받을 수 있나요? 매우 감사합니다!

+0

이러한 변수에 nrstr 또는 superq와 같은 인용 부호를 사용하거나 변수의 값을 작은 따옴표로 묶어보십시오. –

+0

좋습니다. 고맙습니다! – Eric

답변

5

첫 번째 경고는 피하기 쉽습니다. 매크로 변수 참조는 따옴표 안에 해결되지 않는, 그래서 당신은 사용할 수 있습니다 : 당신이 & TESTVAR를 해결하려는 경우

data _null_; 
test='Amos&Andy'; 
call symputx("testvar",test); 
run; 

, 당신은 공개 된 모든 매크로 트리거를 해결하지 매크로 프로세서를 알려줄 수있는 방법이 필요합니다 & testvar를 해결하십시오. 이것은 매크로 인용의 목적이다 :

%put testvar=%superq(testvar); 

%의 SUPERQ 매크로 변수 TESTVAR 해결하고 TESTVAR 해결 계시 된 모든 매크로 트리거 (즉, 마스크)을 인용 매크로 프로세서를 말한다. 이렇게하면 매크로 처리기에서 Andy라는 매크로 변수를 찾을 수 없습니다.

+0

그건 완벽 해요! 매우 감사합니다! – Eric