我通过DDE(set1, set2, set3
)向Excel输出三个数据集。数据集具有相同的变量,但set3
有两个附加变量。我将DDE部分包装在一个宏中,我调用每个数据集并使用“put”来写出我想要的变量。我正试图弄清楚如果在set3
上调用宏,如何从set3
添加另外两个变量。到目前为止,这是我的代码:
filename out dde
'excel|sheet1!r2c2:r1000c5';
%macro write(set);
data _null_;
set &set.;
file out dlm='09'x;
put
var1
var2
var3
%if &set. = set3 %then var4 var5;
%else ;
run;
%mend write;
%write(set1);
%write(set2);
%write(set3);
如果我删除宏%if-%then语句,代码工作正常。任何想法如何去做?谢谢!
答案 0 :(得分:2)
PUT
语句没有结尾分号,仅适用于%if
和%else
语句。
如果我独立于SAS代码缩进宏代码,我发现它有助于使代码更清晰。此外,当SAS语句需要多行时,请确保将终端分号放在单独的行上。
您甚至可以添加一些冗余的宏%do;
和%end;
,以帮助更清楚地说明哪些语句是宏语句,哪些语句是SAS语句。或者在这种情况下是SAS声明的一部分。
%macro write(set);
data _null_;
set &set.;
file out dlm='09'x;
put var1 var2 var3
%if &set. = set3 %then %do;
var4 var5
%end;
;
run;
%mend write;