查看SAS代码的输出日志

时间:2014-10-31 12:58:49

标签: logging sas output

我的团队成员正在使用SAS,当输入文件因任何原因不正确时,他们的代码会返回“错误”,“无效”,“合并语句”,“未初始化”和“警告”语句。

运行代码后,我会使用CTRL + F定期检查输出日志中的这些关键字,并且必须相应地修改我的输入文件。

可以想象,使用CTRL + F非常费力。

如果输出中有任何上述语句,我希望代码在输出结束时自动打印。

我该怎么做?我在哪里可以找到有关如何编程的信息?

我正在使用SAS 9.1

2 个答案:

答案 0 :(得分:4)

考虑使用PROC PRINTTO将日志重定向到文件。从那里运行此代码以查找您提到的任何字符串:

filename logfl "<insert log filename here>" lrecl=32767;
/* Lrecl set high to ensure long lines are captured */

data _NULL_;
  infile logfl;
  input;
  if index (_infile_,'ERROR:') then put _infile_;
  else if index(_infile_,'WARNING') then put _infile_;
  else if index(_infile_,'uninitialized') then put _infile_;
  else if index(_infile_,'Merge statements') then put _infile_;
run;

请确保匹配您正在寻找的字符串的大小写,或者只是使用UPCASE()来恢复大写字母,例如

if index(upcase(_infile_),'UNINITI') then put _infile_;

哪个匹配UninitiUNINiTi等。

代码将简单地按照日志中找到的顺序打印出感兴趣的行。您可以通过以下方式进一步改进代码:

  • 将字符串放入单独的数据集或平面文件中(如果您发现了更多您想查找并希望使代码更易于维护的内容)
  • 打印找到字符串的行号(输出_N__infile_ - 首先测试一下,我不确定_N_是否会映射 到行号)

答案 1 :(得分:3)

如果您升级到SAS 9.4并为您的编程环境使用Enterprise Guide,它会内置一个自动日志解析器来标记错误/警告,将它们分组到底部,让您单击查找代码或记录它们发生的位置,并给你数数。

其次,如果您批量运行代码(右键单击.sas文件 - &gt;批量提交,或运行.bat文件或类似文件),那么日志将包含指向最后错误的指针,喜欢&#34;错误打印在第45,46,48,55,56页和第34页。不是警告或说明,只是错误。

最后,许多人编写并发布了在线日志解析器/分析器/阅读器。其中一些人完成了与您上述要求相似的任务。 SasCommunity有很好的列表,或者使用您选择的搜索引擎。