生成多个文件的proc导入日志到pdf

时间:2014-05-27 23:09:56

标签: sas sas-macro sas-ods

我编写了一个SAS宏来导入文件夹中的所有excel文件并且它可以正常工作。我接下来要做的是 - 将proc导入日志或所有excel文件的结果发送到单个pdf。我的SAS代码如下所示:

%macro readxls (copyfrom=);
---
---
---
%do i=1 %to $count_files;
ods listing close;
ods pdf file='pathname\report_import.pdf';
proc import datafile="&copyfrom.\...." out=copyto.... DBMS=xlsx replace;
getnames=yes; 
run;
ods pdf close;
ods listing;
%end;
%mend readxls;

由于某种原因,没有生成pdf文件。 SAS日志说,"注意:将ODS PDF输出写入DISK目的地" pathname \ report_import.pdf",printer" PDF"

1 个答案:

答案 0 :(得分:3)

您无法将日志直接重定向到ODS输出目标。导入过程没有发送到ODS目的地的输出。

您可以做的是使用PROC PRINTTO将日志重定向到文本文件。接下来,您可以使用PROC DOCUMENT导入文件,并使用重播功能将其写入ODS输出目的地。

filename pdflog 'pathname\report_import.pdf';
filename tmplog 'pathname\report_import.txt';

proc printto log=tmplog;run;

%macro readxls (copyfrom=);

%do i=1 %to $count_files;
proc import datafile="&copyfrom.\...." out=copyto.... DBMS=xlsx replace;
getnames=yes; 
run;
%end;

%mend readxls;

%readxls(copyfrom=...);

proc printto;run;

proc document name=pdflog(write);
   import textfile=tmplog to logfile;
run; 

ods listing close;

ods pdf file=pdflog notoc;
 replay; 
 run;
ods pdf close;

quit;

ods listing close;