如何在proc iml中有条件地定义一个宏变量?

时间:2014-05-21 10:40:23

标签: sas sas-macro sas-iml

我在合并proc imlif/thencall symputx方面存在问题。如果我运行以下代码:

proc iml;

call symputx("noif",3);
a=1;
b=&noif;                              /* 1) : works*/
if a=1 then call symputx("withif",1);
if a=1 then print a;                  /* 2) : works */
c=&withif;                            /* 3) : doesn't work */
quit;
%put &withif;                         /* 4) : works */
  • 1)工作(以及SAS / IML文档)显示我可以在call symputx

  • 中使用proc IML
  • 2)工作(以及SAS / IML文档)显示我可以在if/then

  • 中使用proc IML
  • 3)因此,不能正常工作必须归因于这三个陈述的组合问题。

  • 但是4)工作表明call symputx("withif",1)在某种程度上被理解了。

proc iml内有条件定义宏变量的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

Rick Wicklin在his blog回答了我的问题。基本上,我需要在else块之后添加空if/then语句,以便IML知道它们已经完成。