如何避免让"日志窗口完整?#34; SAS中的以下代码中的消息?

时间:2016-05-31 04:43:38

标签: loops macros sas

如何更新以下代码,以免我的日志窗口显示为“#”;信息?在日志窗口中生成的大多数行都是由于proc corr。我尝试在代码的开头添加proc printto行,但由于某种原因,日志窗口仍然被填满。感谢。

PROC PRINTTO PRINT='C:\Users\test\auto.lst' NEW;
RUN;

%MACRO RunProgram(month, year, n);
data sourceh.group2;
set sourceh.group_&month.&year.;
int1=int;
int2 = ceil(int/2);
int3 = ceil(int/3);
int4 = ceil(int/4);
int5 = ceil(int/5);
int6 = ceil(int/15);
int7 = ceil(int/30);

proc sort data=sourceh.group2;
by symbol day month year int&n.;
run;

proc corr data=sourceh.group2; by symbol day; 
var zone ztwo;
ods output pearsoncorr=sourceh.zcorr;
run;

%MEND ;

%macro l;

%do n=1 %to 7;

%RunProgram(Dec, 2014, &n);
%RunProgram(Nov, 2014, &n);
%end;

%mend;

%l;

2 个答案:

答案 0 :(得分:4)

使用proc重定向您的日志 Printto。

Proc printto log='templog.log' new;
Run;

如果之后使用

,您可以重置
 Proc printto log=log; run;

或者,您可以设置选项nonotes on,以便除非出现错误,否则不会输出日志。这可能使调试变得困难。

 Option nonotes;

重新打开备注选项:

 Option notes;

答案 1 :(得分:1)

一般来说,我认为你应该输出你的日志,这样你就可以查看是否出了问题。 Reeza的回答解决了这种方法。但是,您也可以使用命令

清除日志
dm 'clear log';

如果将其作为RunProgram宏的第一行或最后一行插入,则日志将在每次宏的迭代中清除。只要宏的一次迭代没有填满你的日志,这就可以解决你的问题。