在 rsubmit 中引用 SAS 中的宏

Referencing macro in SAS within a rsubmit

我不明白为什么我无法在 rsubmit 调用中调用宏。

比如我有代码:

%let var= year;
%put &var;            /* this works fine and prints "year" to the log  */
    rsubmit;
    proc sql;
        %put &var;    /* this does not work   */

第二个实例抛出警告WARNING: Apparent symbolic reference VAR not resolved.为什么我不能在 rsubmit 代码中引用宏,我该如何调整以允许这样做?

作为参考,如果我在 rsubmit 中移动宏的创建,它工作正常 - 例如:

rsubmit;
proc sql;
   %let var= year;
   %put &var;               /* prints "year" as expected  */

但是,我希望在我的代码开头分配宏 - 并且还希望了解为什么以前不起作用。

这是因为您是在本地而不是在远程系统上定义它,它们是分开保存的。如果您想在本地 运行 时远程 create/update 值,反之亦然,您可以分别使用 %syslput 和 %sysrput 语句。 http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a001221974.htm