I have several SAS generated log files in c:\temp i.e. test1.log test2.log... I need a program that reads each log and writes to a SINGLE text file if the log contains patter ERROR:. the code I have can give me a list of log name in log window without format. Is there better way to generate a text file and format better? %let path=c:\temp;
filename dirlist pipe 'dir "c:\temp" /s';
data dirlist ;
length logname outname $100;
retain cnt;
infile dirlist length=reclen ;
input buffer $varying256. reclen ;
if index(buffer, ".log") gt 0 then do;
cnt+1;
call symput('totallog',cnt);
logname ="&path\"||strip(scan( buffer, -1, ' ' ));
s1=scan(logname, -1, '\');
outname=scan(s1, 1, '.');
output;
end;
keep logname outname;
run ;
%put &totallog;
%let cnt=&totallog;
proc sql noprint; select logname, outname into :log1-:log&cnt, :out1-:out&cnt from dirlist; quit;
%macro read;
%do i=1 %to &totallog;
data out_&&out&i;
infile "&&log&i" lrecl=40 pad;
input @1 line $;
if upcase(substr(left(line),1,6))='ERROR:' then output;
run;
proc sql noprint; select line from out_&&out&i; quit;
%if &sqlobs gt 0 %then %do;
%let all=&all. out_&&out&i;
%end;
%end;
%mend;
%let all=; %put &all;
%read;
%put ***********Error files: &all***********;
... View more