SAS - Macro调用另一个宏

时间:2013-12-11 09:32:45

标签: macros call 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有一个小问题我是第二个宏(代码不能将它用作内部宏的参数)。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

macro_in致电macro_out您不需要数据步骤时,您可以使用宏语言:

%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;