2017-09-21 1 views
-1
%let val = ' run'; 

%macro rrun; 
    %put successfully run; 
%mend; 

%macro x; 
    %r%cmpres(&val.); 
/* %rrun;*/ 
%mend;%x 

내가 "SAS에서 매크로 변수 이름으로 매크로 변수를 전달하기 위해 노력하고있어. (& 발.) 매크로 이름을 통과 값 %의 cmpres를 사용하여 %의 RRUN을 실행하려면"이하지 않는 이유 RRUN "나는 이해가 안 돼요 일. 압축 & 발은 "실행"SAS에서 매크로 변수를 매크로 변수 이름에 전달하는 방법은 무엇입니까?

때 나는이 아직도 & 발?

감사합니다,

답변

1

왜 매크로 변수에 따옴표를해야합니까?

,536 통과를 해결할 수있는 방법
166 %let val = ' run'; 
167 %put |%cmpres(&val)|; 
|' run'| 

매크로 변수에 동적으로 이름을 생성하려면 먼저 매크로 변수에 이름을 생성 한 다음 해당 매크로 변수를 참조하면 훨씬 쉽게 호출 할 수 있습니다. 그렇지 않으면 토큰 화가를 혼란에 빠뜨릴 위험이 있습니다.

%macro x; 
    %local mname; 
    %let mname=r%cmpres(&val); 
    %&mname; 
%mend; 
%x 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 이 예제에서는 실제 프로그램이 데이터베이스의 문자열 목록에서 변수 배열을 가져 오기 때문에 '실행'했습니다. – JPC

+0

매크로 변수 값에는 따옴표가 필요하지 않습니다. 변수 값이 있으면 값의 일부입니다. 컴파일러는 변수 이름이나 키워드에서 문자열 리터럴을 알 수 있도록 따옴표가 필요한 SAS 코드와 달리. 데이터 단계에서'CALL SYMPUTX()'를 사용하거나 SQL 코드에서'TRIMMED' 또는'SEPARATED BY' 키워드를 사용하여 선행/후행 공백없이 매크로 변수를 생성하십시오. – Tom

관련 문제