Sas 如何在数据行中使用宏变量?
如何解析数据行中的宏变量?SAS不会在Sas 如何在数据行中使用宏变量?,sas,sas-macro,Sas,Sas Macro,如何解析数据行中的宏变量?SAS不会在数据行中展开宏代码。请注意,在示例程序中不需要。只需使用宏变量生成设置数据集变量所需的代码 %let stmDate = 05FEB2017; %let stmDueDate = %sysfunc(intnx(day,"&stmDate"d,20),date9.); data header; input statement_date date7. statement_due_date date7.; format
数据行中展开宏代码。请注意,在示例程序中不需要。只需使用宏变量生成设置数据集变量所需的代码
%let stmDate = 05FEB2017;
%let stmDueDate = %sysfunc(intnx(day,"&stmDate"d,20),date9.);
data header;
input statement_date date7.
statement_due_date date7.;
format statement_date date7.
statement_due_date date7.;
datalines;
&stmDate &stmDueDate
run;
data header;
statement_date = "&stmDate"d;
statement_due_date = "&stmDueDate"d ;
format statement_date statement_due_date date9.;
run;
但如果您确实想这样做,请查看PROC STREAM
,将解析的行转换为文件,然后从该文件中读取
因此,创建宏变量
%let stmDate = 05FEB2017;
%let stmDueDate = %sysfunc(intnx(day,"&stmDate"d,20),date9.);
data header;
input statement_date date7.
statement_due_date date7.;
format statement_date date7.
statement_due_date date7.;
datalines;
&stmDate &stmDueDate
run;
data header;
statement_date = "&stmDate"d;
statement_due_date = "&stmDueDate"d ;
format statement_date statement_due_date date9.;
run;
然后使用PROC STREAM将它们转换为数据文件。您甚至可以调用宏函数
%let stmDate = 05FEB2017;
%let stmDueDate = %sysfunc(intnx(day,"&stmDate"d,20),date9.);
然后从生成的文件中读取。通常,它会删除换行符,因此您可能希望在输入语句中使用@
filename text temp;
proc stream outfile=text; begin
&stmDate &stmDueDate
&stmDate %sysfunc(intnx(day,"&stmDate"d,20),date9.)
;;;;