将SAS语句分配给宏变量
我有一个数据集,其中包含要为宏中的数据集定义的变量的名称和属性。例如:将SAS语句分配给宏变量,sas,sas-macro,Sas,Sas Macro,我有一个数据集,其中包含要为宏中的数据集定义的变量的名称和属性。例如: variable_name = "filedate" variable_length = 8 variable_label = "Date file was loaded" variable_format = "date9." variable_derivation = "filedate = today()" 宏执行如下操作: %macro create_ds; data _null_;
variable_name = "filedate"
variable_length = 8
variable_label = "Date file was loaded"
variable_format = "date9."
variable_derivation = "filedate = today()"
宏执行如下操作:
%macro create_ds;
data _null_;
set variable_definitions;
call symputx('varname', variable_name);
call symputx('varlength', variable_length);
call symputx('varlabel', variable_label);
call symputx('varformat', variable_format);
call symputx('varderive', variable_definition);
run;
data newds;
attrib &varname length=&varlength label="&varlabel" format=&varformat;
&varderive;
run;
%mend create_ds;
我希望datastep看起来是这样的:
data newds;
attrib filedate length=8 label="Date file was loaded" format=date9.;
filedate = today();
run;
我实际上得到的是:
data newds;
attrib filedate length=8 label="Date file was loaded" format=date9.;
.;
run;
然后它抛出一个错误,因为“.”不是有效语句
是否有方法将datastep语句分配给宏变量并实际执行它?键入错误,variable\u derivation=“filedate=today()”但随后调用symputx('varderivate',variable\u definition);派生vs定义。是的。你有一个好主意。因为这是在分配missing,否则就可以了。@Reese和Joe,既然你们两个有效地回答了这个问题,我建议你们发布一个答案。:)