环路SAS中的ODS输出

时间:2018-05-30 14:56:15

标签: macros sas

我正在尝试将比较结果输出到excel或pdf以获取库中的所有输出。这是我写的

%DO  I = 1 %TO &coun; 
%LET DT = %SCAN (&DS_LIST., &I., ~); 

ods excel file="D:\test.xlsx";

PROC COMPARE BASE = BASE.&DT. COMPARE = COMPARE.&DT. OUTNOEQUAL OUTBASE
 OUTCOMP OUT = COMPAREOUT; 
RUN
;  
ods excel close; 

然而它只给我最后一个数据集输出..这里有什么问题?

2 个答案:

答案 0 :(得分:3)

您尚未显示%END循环的%DO。我认为你在循环中打开和关闭ODS EXCEL目的地。 ODS EXCEL不会附加到现有文件,因此您只能获取列表中最后一个数据集的比较输出。试试这个

* open ODS destination;
ods excel file="D:\test.xlsx";

* loop over data sets in DS_LIST, get compare report for each;
%DO  I = 1 %TO &coun;
  %LET DT = %SCAN (&DS_LIST., &I., ~); 

  PROC COMPARE BASE = BASE.&DT. COMPARE = COMPARE.&DT. OUTNOEQUAL OUTBASE
   OUTCOMP OUT = COMPAREOUT; 
  RUN;  
%END;

* close the ODS destination that contains the output from &coun comparisons;
ods excel close; 

答案 1 :(得分:-1)

您是否尝试过将Excel文件作为库加载?这样你就可以直接使用proc比较......

LIBNAME xdbsss EXCEL PATH="<path and file>.XLSX" SCAN_TEXT=NO;