如果我写有内容的test.sas:如何我使用%包括调用SAS宏
%macro test;
%put test macro;
%mend;
%test;
然后就是在SAS会话中执行此:
%include test.sas
威尔它只是调用宏'测试'?或者它是否只包含宏定义,但跳过执行?
如果我写有内容的test.sas:如何我使用%包括调用SAS宏
%macro test;
%put test macro;
%mend;
%test;
然后就是在SAS会话中执行此:
%include test.sas
威尔它只是调用宏'测试'?或者它是否只包含宏定义,但跳过执行?
%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++头文件:宏包含'要做什么',然后你实际调用它在你的实时代码中 - 不仅是为了好的样式,而且是为了能够重新运行它,而无需重新编译它,如果你需要(修复某事,说)。