我正在尝试使用 SAS 编程语言的 if then 语句设置宏变量,但使用 WPS(世界编程系统),这基本上是 SAS 克隆,但由于某种原因它不起作用。
%if 1=1 %then %do;
data test;
a=111;
run;
%let a=2;
%end;
%put &a.;
我在 put 语句后收到此消息:
WARNING: Macro variable "&a" was not resolved
但是,测试数据集已成功创建。这只是 WPS 特定的问题,还是 SAS 中也发生了同样的错误?
更新:我尝试在宏中运行上述代码,但仍然收到相同的错误消息:
%macro test_macro();
%if 1=1 %then %do;
data test;
a=111;
run;
%let a=2;
%end;
%mend;
%test_macro();
%put &a.;
如果您不告诉宏处理器您希望 A 成为全局宏符号,它将在本地宏符号表中生成。
在调用宏之前定义 A :
%let a=before macro call;
%test_macro();
%put &a.;
或者在宏定义中添加 %GLOBAL 语句。
%macro test_macro();
%global a;
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句