我想在proc sql statment的开头和结尾追加一个文本文件,我试过如下
libname DXZ 'libpath';
%macro processlogger(msg);
filename logfile '../Processlog/processlog.txt';
data _null_;
file logfile;
put "%superq(message)";
run;
%mend;
%processlogger ('Begin');
proc sql;
select * from DZ.NoofDaysin_Reje /* Mispelled name */
run;
%processlogger('End');
我似乎搞乱了宏变量,还有其他方法可以做到这一点,谢谢
答案 0 :(得分:2)
如果您想使用数据步骤附加到文本文件,则需要将MOD
关键字添加到FILE
语句中。
如果要在数据步骤中打印可能包含引号和其他奇怪字符的宏变量的值,则最好使用symget()
将值检索到datastep变量并打印出来。
确保引用您创建的宏变量msg
而不是其他宏变量message
。
如果您不希望将引号包含在宏变量的值中,请不要添加它们。
%macro processlogger(msg);
data _null_;
file '../Processlog/processlog.txt' mod;
length message $32767 ;
message=symget('msg');
put message ;
run;
%mend;
%processlogger(Starting at %sysfunc(datetime(),datetime24.3));
%processlogger(Ending at %sysfunc(datetime(),datetime24.3));
答案 1 :(得分:1)