当输入文件不正确时,我的团队中的成员正在使用SAS,它们的代码返回“错误”,“无效”,“合并语句”,“未初始化”和“警告”无论原因。查看SAS代码的输出日志
运行代码后,我会使用CTRL + F常规检查这些关键字的输出日志,并且必须相应地修改我的输入文件。
正如你所想象的,使用CTRL + F非常费力。
我希望代码能够在输出结束时自动打印输出结果中是否有上述任何一个语句。
我该怎么做?我在哪里可以找到关于如何编程的信息?
我使用的是SAS 9.1
当输入文件不正确时,我的团队中的成员正在使用SAS,它们的代码返回“错误”,“无效”,“合并语句”,“未初始化”和“警告”无论原因。查看SAS代码的输出日志
运行代码后,我会使用CTRL + F常规检查这些关键字的输出日志,并且必须相应地修改我的输入文件。
正如你所想象的,使用CTRL + F非常费力。
我希望代码能够在输出结束时自动打印输出结果中是否有上述任何一个语句。
我该怎么做?我在哪里可以找到关于如何编程的信息?
我使用的是SAS 9.1
如果升级到SAS 9.4和为您的编程环境使用Enterprise Guide t,它内置了一个自动日志解析器,标记错误/警告,将它们分组在底部,让您单击以查找代码或记录它们出现的位置,并为您提供计数。其次,如果你批量运行你的代码(右键单击.sas文件 - >批量提交,或通过.bat文件或类似文件运行),那么日志将包含指向最后错误的指针,如“错误在页面45,46,48,55,56上打印”。不是警告或注释,只是错误。
最后,很多人编写并发布了在线日志解析器/分析器/阅读器。其中一些人执行与上述要求类似的任务。 SasCommunity有一个很好的名单,或使用您所选择的搜索引擎。
考虑您的日志重定向到使用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_
究竟映射的行号)
我强烈建议升级到更新的版本,或要求您的网站升级。 9.1大约十岁,甚至比9.2还缺少一些显着特征,更不用说9.3或9.4。 – Joe 2014-10-31 16:52:21