SAS-如果是DDE中的then宏
我通过DDE将三个数据集输出到Excel(SAS-如果是DDE中的then宏,sas,sas-macro,Sas,Sas Macro,我通过DDE将三个数据集输出到Excel(set1、set2、set3)。数据集具有相同的变量,除了set3有两个附加变量。我已经将DDE部分包装在一个宏中,我为每个数据集调用该宏,并使用“put”写出我想要的变量。我想知道如果在set3上调用宏,如何从set3添加两个附加变量。以下是我目前的代码: filename out dde 'excel|sheet1!r2c2:r1000c5'; %macro write(set); data _null_; set &s
set1、set2、set3
)。数据集具有相同的变量,除了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代码>和%结束
帮助您更清楚地了解哪些语句是宏语句,哪些是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;
PUT
语句没有结尾分号,只用于%if
和%else
语句
我发现,如果我独立于SAS代码缩进宏代码,这有助于使代码更清晰。另外,当SAS语句占用多行以确保将终端分号放在单独的行上时
您甚至可以添加一些冗余宏%do代码>和%结束
帮助您更清楚地了解哪些语句是宏语句,哪些是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;
虽然它是宏程序,但是如果-then在数据步骤中,使用%if-%then语句是错误的。虽然它是宏程序,但是如果-then在数据步骤中,使用%if-%then语句是错误的。啊,我明白了。我认为%else
语句后面的分号将输出一个分号,从而结束%if
语句。谢谢请记住,一旦宏处理器完成,宏代码就消失了,生成的任何文本都会传递到SAS,就像您自己在程序文件中键入的一样。啊,我明白了。我认为%else
语句后面的分号将输出一个分号,从而结束%if
语句。谢谢请记住,一旦宏处理器完成,宏代码就会消失,生成的任何文本都会传递到SAS,就像您自己将其键入程序文件一样。