Hi all! I need the following type1file macro to trigger an email when the proc import fails. It works, but it is not working when it is being called from the ' Import' macro. Any help would be greatly appreaciated as I am really struggling with this. Thanks! %macro track_err;
%global err_status;
%let err_status = %sysfunc(max(&err_status, &syserr ne 0));
%mend;
%MACRO Type2File;
%let err_status = 0;
PROC IMPORT OUT= Type1File DATAFILE= "Filename.xls"
DBMS=xls REPLACE;
SHEET="Sheet1";
GETNAMES=YES;
RUN;
%track_err;
%put &err_status;
data _null_;
if &err_status=1 then do;
filename imptfail EMAIL
to="abc@abc.com"
from="cdde@cdde.com"
subject="Import Failure"
importance="HIGH";
file imptfail;
put "Hi,";
put " ";
put "The import was unsuccessful. Please correct the errors in the file and reload.";
put "Further processing of this file would be stopped until we receive a new file.";
put "Name of the file with error:&nm.";
put " ";
put "Thank you.";
put " ";
abort abend;
end;
run;
%MEND Type2File;
%MACRO Import;
%do I=1 %to &totobs. ;
data _null_;
set directory_summary;
If obs=&i. ;
call symput('fn',"\\filepathfiles\"||trim(filename)) ;
call symput('nm',trim(filename)) ;
IF filetype=".csv" and index(upcase(filename), "ABC") THEN call execute ('%Type1File') ;
ELSE IF filetype=".xls" and index(upcase(filename), "CDE") THEN call execute ('%Type2File');
ELSE IF filetype=".xls" and index(upcase(filename), "FGH") THEN call execute ('%Type3File') ;
run;
%sysExec move "Filepath1" "Filepath2";
%end;
%MEND Import;
%Import;
... View more