0

我们正在使用 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 导入代码的任何想法?

谢谢

4

3 回答 3

3

错误检查日志时,我只考虑行首的 ERROR 或 WARNING,例如

if index(_infile_, 'ERROR') = 1 ....

我们还有一个允许的错误消息列表。

如果不是这样,您似乎可以使用 NOSOURCE 选项隐藏 IMPORT 生成的内容,但这不是很好。

options nosource;
proc import file='E:\test.csv' out=test replace;
run;
options source;
于 2013-08-30T19:36:24.637 回答
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 行...

于 2020-10-22T16:58:00.403 回答
0

我已经看到一些帖子建议使用“options nosource”来抑制 proc 导入或 proc 导出的过量输出,但我实际上并没有看到它起作用。SAS网站上发布了一个示例,表明它无法正常工作。该页面是http://documentation.sas.com,但如果该链接不起作用,请搜索“sas proc export nosource 02sep16”。请注意,即使在选项中指定了 nosource,编号行也包含不需要的打印输出。

于 2019-08-29T20:44:15.900 回答