在rsubmit中引用SAS中的宏

kyr*_*nia 1 sas

我无法理解为什么我无法在通话中呼叫宏rsubmit.

例如,我有代码:

%let var= year;
%put &var;            /* this works fine and prints "year" to the log  */
    rsubmit;
    proc sql;
        %put &var;    /* this does not work   */
Run Code Online (Sandbox Code Playgroud)

第二个实例抛出警告WARNING: Apparent symbolic reference VAR not resolved. 为什么我不能在rsubmit代码中引用宏,我怎么能适应这个?

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

rsubmit;
proc sql;
   %let var= year;
   %put &var;               /* prints "year" as expected  */
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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