SAS 宏全局范围
有没有一种简单的方法可以使在宏全局范围内创建的所有宏变量都处于作用域中?
IE:
%macro x;
%global _all_; * ??? ;
%let x=1;
%let y=1;
%let z=1;
%mend;
is there a short way to make ALL macro variables created inside a macro global in scope?
ie:
%macro x;
%global _all_; * ??? ;
%let x=1;
%let y=1;
%let z=1;
%mend;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我能想到的唯一方法是使用宏代替,而无需提前将每个宏声明为全局宏,然后执行 %let 语句%let 语句。
在下面的代码中,我创建了一个名为 %mylet 的宏,其唯一目的是使用我作为参数传递的名称和值来创建全局变量。 然后,我在想要定义全局变量的地方使用这个宏来代替 %let 。
例如。
会成为...
The only way I can think of to do this without having to declare each macro as global ahead of time and then do a %let statement is to use a macro in place of the %let statement.
In the code below, I create a macro called %mylet which has as its sole purpose the task of creating a global variable with the name and value I pass as arguments. I then use this macro in place of %let everywhere I want global variables defined.
eg.
would become...
如果您在开放代码中创建宏变量,则宏变量将自动添加到全局宏符号表中:
这将在您创建更大的宏之前:
另一种选择是使用数据步骤:
If you create the macro variable within open code the macro variable will automatically be added to the global macro symbol table:
This would be before you create the larger macro:
Another alternative would be to create the variables using a data step:
如果您在数据步骤中创建宏变量,并且该数据步骤位于宏内部,则默认情况下,创建的宏变量将在该宏的范围内是本地的。
用于
创建全局宏变量。
If you create macro variables within a data-step, and that data-step is inside a macro, the macro variables created will be, by default, local in scope to that macro.
Use
to create global macro variables.