我的团队成员正在使用SAS,当输入文件因任何原因不正确时,他们的代码会返回“错误”,“无效”,“合并语句”,“未初始化”和“警告”语句。
运行代码后,我会使用CTRL + F定期检查输出日志中的这些关键字,并且必须相应地修改我的输入文件。
可以想象,使用CTRL + F非常费力。
如果输出中有任何上述语句,我希望代码在输出结束时自动打印。
我该怎么做?我在哪里可以找到有关如何编程的信息?
我正在使用SAS 9.1
答案 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_;
哪个匹配Uniniti
,UNINiTi
等。
代码将简单地按照日志中找到的顺序打印出感兴趣的行。您可以通过以下方式进一步改进代码:
_N_
和_infile_
- 首先测试一下,我不确定_N_
是否会映射 到行号)答案 1 :(得分:3)
如果您升级到SAS 9.4并为您的编程环境使用Enterprise Guide,它会内置一个自动日志解析器来标记错误/警告,将它们分组到底部,让您单击查找代码或记录它们发生的位置,并给你数数。
其次,如果您批量运行代码(右键单击.sas文件 - &gt;批量提交,或运行.bat文件或类似文件),那么日志将包含指向最后错误的指针,喜欢&#34;错误打印在第45,46,48,55,56页和第34页。不是警告或说明,只是错误。
最后,许多人编写并发布了在线日志解析器/分析器/阅读器。其中一些人完成了与您上述要求相似的任务。 SasCommunity有很好的列表,或者使用您选择的搜索引擎。