我们使用SAS生成大量报告并将日志保存在文件中。到目前为止一切顺利,除了一件事,一切都很好。
我们有一个宏检查日志文件中的单词警告和错误,如果找到这些单词,则将文件放在错误文件夹中。我们遇到的问题是当我们导入带有proc import的CSV文件时,它会自动将它放在日志文件中:
proc import datafile=XXXXXXXXXX
out=XXXXXXXXXX
dbms=dlm
replace;
delimiter=',';
getnames=yes;
datarow=2;
GUESSINGROWS=1000;
run;
/**********************************************************************
* PRODUCT: SAS
* VERSION: 9.1
* CREATOR: External File Interface
* DATE: 30AUG13
* DESC: Generated SAS Datastep Code
* TEMPLATE SOURCE: (None Specified.)
***********************************************************************/
data XXXXXXXX;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */
infile XXXXXXXX delimiter = ',' MISSOVER DSD firstobs=2 ;
informat XXXXXXXX $5. ;
... code continue
format XXXXXXXX $5. ;
... code continue
input
XXXXXXXX $
... code continue
;
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
run;
因此,我们留下了一堆标记有错误的文件但不应标记它们。我们可以做些什么来隐藏日志文件中的proc导入代码?
由于
答案 0 :(得分:3)
当错误检查日志时,我只在行的开头考虑ERROR或WARNING,例如
if index(_infile_, 'ERROR') = 1 ....
我们还有一个允许的错误消息列表。
如果不是这样,看起来你可以隐藏IMPORT使用NOSOURCE选项生成的内容,但它不是很好。
options nosource;
proc import file='E:\test.csv' out=test replace;
run;
options source;
答案 1 :(得分:0)
我已经看到一些帖子建议使用“ options nosource”来抑制proc导入或proc导出的多余输出,但是实际上我没有看到它起作用。 SAS网站上发布了一个示例,显示它无法正常工作。页面为http://documentation.sas.com,但是如果该链接不起作用,请搜索“ sas proc export nosource 02sep16”。请注意,即使未在选项中指定任何来源,带编号的行仍包含不需要的打印输出。
答案 2 :(得分:0)
我也是这样。我grep错误,不希望它出现! 使用proc输入时我看到ERROR,所以对我来说,这就是解决问题的方法。
使用proc输入,然后复制日志文件并根据需要进行编辑。
proc import datafile="file.out"
out=shoes
dbms=csv
replace;
产生此结果的
28 data WORK.SHOES ;
29 %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
30 infile 'file.out' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
31 informat QUEUE_ID $8. ;
56 format VAR13 best12. ;
57 input
58 QUEUE_ID $
69 AUTOMATION_STATUS $
70 VAR13
71 ;
72 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
73 run;
我只使用该代码而不是proc输入并删除第29,72行...