2013-12-11 5 views
0

SAS에 문제가 있습니다. 더 정확하게는 다른 매크로 안에있는 매크로를 호출하는 것입니다. 다음은 그 예입니다.SAS - 다른 매크로 호출 매크로

data TEST_1; 
    do i = 1 to 100; 
    a=i**2; 
    output; 
end; 
run; 

data TEST_2; 
    do i = 1 to 100; 
    b=i**3; 
    output; 
end; 
run; 

%macro macro_in(file_a); 

data result1; 
set &file_a; 
    c=a+1; 
run; 

%mend; 

%macro_in(TEST_1); 

%macro macro_out(file_b); 

data result2; 
set &file_b._2; 
    d=a-1; 
run; 

data _null_; 
    do i = 1 to 2; 
    call execute(COMPRESS('%macro_in(' || &file_b || '_' || i || ')')); 
    output; 
    end; 
run; 

%mend; 

%macro_out(TEST); 

첫 번째 매크로 작품 완전히 잘 그러나 변수 file_b 내가 두 번째 매크로 (코드 내부 매크로에 대한 인수로 사용할 수 없음)에 약간의 문제가있다. 어떤 도움을 주셔서 감사합니다!

+0

는 항상 당신이 '% 매크로에 나와있는 매크로 이름을 언급하는 것이 좋습니다 '도'% mend ' –

답변

2

당신이 매크로 언어를 사용하는 datastep 필요하지 않습니다 macro_out에서 macro_in 전화 : 참고하시기 바랍니다

%macro macro_out(file_b); 

    data result2; 
    set &file_b._2; 
     d=a-1; 
    run; 

    %do i = 1 %to 2; 
     %macro_in(&file_b._&i); 
    %end; 

%mend; 
+0

고마워요! – user2280549