SAS - DDE 中的 If-then 宏
SAS - If-then macros in DDE
我正在通过 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 语句,代码可以正常工作。任何想法如何去做这个?谢谢!
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;
我正在通过 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 语句,代码可以正常工作。任何想法如何去做这个?谢谢!
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;