我希望使用select into:在宏模块中创建一个全局变量。
%macro example();
proc sql noprint;
select x into:DDD from aaa;
quit;
%mend;
问题是我希望创建一个全局变量DDD,在这个例子中我们只能得到局部变量DDD。 谢谢。 韦恩。
答案 0 :(得分:1)
我认为您无法控制Proc SQL中的范围。您可以在数据步骤中使用调用symputx来指定范围。
但是,默认情况下,通过Proc SQL在开放代码中创建的宏变量是全局变量。在一个宏内它将是本地的。
如评论中所述,您还可以使用
将宏变量明确声明为全局变量 %global macro_variable_name;
答案 1 :(得分:0)
正如@Reeza指出的那样,您只需使用%global DDD;
语句指定宏开头的宏变量global。
只有一个焦点:
有时您可以从另一个宏内部调用一个宏。
在这种情况下,您可以在外部宏中将相同的宏变量预先存在为local。
在%global
语句中回忆内部宏,由于同一个宏变量(ERROR: Attempt to %GLOBAL a name (XXX) which exists in a local environment.
)的全局定义和本地定义之间的冲突,您可能会遇到错误。
在这种情况下,你可以:
%let
,sql into:
或call symput
)在外部宏避免内部宏%global
语句
取决于您具有的宏观变量可见性要求。