如何使用 %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',然后您实际上在您的实时代码中调用它 - 不仅是为了漂亮的风格,而且如果您可以重新 运行 它而无需重新编译它需要(修复某些东西,比如说)。
如果我写一个 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',然后您实际上在您的实时代码中调用它 - 不仅是为了漂亮的风格,而且如果您可以重新 运行 它而无需重新编译它需要(修复某些东西,比如说)。