在 SAS/WPS 中使用 if then 语句设置宏变量

用户124249

我正在尝试使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章