我是SAS的新手,我需要将一个值写入proc sql的文件中,但是我遇到了很多麻烦。请参阅下面的代码。
data _null_;
FILE 'C:\MyFile.txt';
proc sql;
select datepart(max(DateCreated)) into :dt from epx.temp;
%put &dt date9.;
quit;
run;
我在作业的Precode和Postcode属性中的MACRO中运行此代码。
答案 0 :(得分:2)
proc sql
语句在数据步骤中无效。实际上,SAS会将proc
识别为数据步骤的结束边界,因此您的数据步骤仅包含file
语句,并且不执行任何操作。
file
语句会影响put
语句,而不会影响宏%put
语句。
不改变您的一般方法,您可以执行以下操作:
将格式化的值放入宏变量中,然后使用数据步骤将值写入文件。
proc sql;
select put(datepart(max(DateCreated)),date9.) into :dt from ext.temp;
quit;
data _null_;
FILE 'C:\MyFile.txt';
put "&dt";
run;
另一种方法是在数据步骤中完成所有操作,并避免完全使用宏变量:
data _null_;
file 'C:\MyFile.txt';
set ext.temp end=eof;
retain maxdate;
if datepart(DateCreated) gt maxdate then maxdate=datepart(DateCreated);
if eof then put maxdate date9.;
run;