如何使用 %include 调用 SAS 宏

How to i use %include to invoke a SAS macro

如果我写一个 test.sas 内容为:

%macro test;
%put test macro;

%mend;
%test;

然后在 sas 会话中执行:

%include test.sas

它会调用宏 'test' 吗?还是只包含宏定义而跳过执行?

它将执行文件中的语句,就好像它们作为行包含在原始程序中一样。所以它将首先定义宏,然后当最后一行是 运行 时,它将执行宏。

%include 就像在外部文件上按 F3。它将尝试编译并执行文本文件中的所有内容。所以,如果你打开 mcompilenote=all 并且你的程序是:

%macro test;
%put test macro;

%mend;
%test;

日志将显示为:

8    %macro test;
9    %put test macro;
10
11   %mend;
NOTE: The macro TEST completed compilation without errors.
      6 instructions 80 bytes.
12   %test;
test macro

但是,如果您的程序是:

%macro test;
%put test macro;

%mend;

日志将显示为:

8    %macro test;
9    %put test macro;
10
11   %mend;
NOTE: The macro TEST completed compilation without errors.
      6 instructions 80 bytes.

是的,它会按照您最初的建议工作 - 它会编译 运行 宏。

我会注意到良好的编程风格是在您的实际程序中调用宏(如果这就是您所做的全部)。这就像一个 C++ 头文件:宏包含 'what to do',然后您实际上在您的实时代码中调用它 - 不仅是为了漂亮的风格,而且如果您可以重新 运行 它而无需重新编译它需要(修复某些东西,比如说)。