SAS %errmail макрос

Хотя у меня есть обработка ошибок:

filename myfile email                                                                                                                   
to=&e_mail.                                                                                                               
subject= "Error: &number."                                                                                                              
type="text/plain";  

%macro errmail;                                                                                                                         
 %if &syserr ne 0 %then %do;  
 options obs= max replace nosyntaxcheck; 
  data _null_;        
   file myfile;                                                                                                                                                                                               
   put;                                                                                                                                 
   put 'ERROR';                                                                                                                    
   put "&syserrortext";                                                                                                                 
   put 'check a log'
  run;       
 %abort cancel;  
 %end;                                                                                                                                  
%mend errmail;

когда у меня ошибка в proc export: (&number. это таблица в работе)

proc export data=&number.
outfile="/usr/local/backup/&number./&number._%SYSFUNC(TODAY(),DATE9.).txt"
replace
dbms=dlm; 
delimiter=';';
 run;
 %errmail;

ERROR: Physical file does not exist, /usr/local/backup/2116/2116_13MAY2016.txt.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 1 observations read from the data set WORK.2116.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

SAS не проверяет макрос и не отправляет электронное письмо. У меня ошибка в пути, поэтому я понимаю ошибку, но мне нужно электронное письмо об этом, и я хочу, чтобы SAS прекратил обработку из-за макроса. Добавление некоторых опций в макрос может это исправить?


person aola    schedule 13.05.2016    source источник
comment
Что произойдет, если вы добавите %PUT после шага PROC EXPORT? Я предполагаю, что он не устанавливает для &syserr ненулевое значение.   -  person Quentin    schedule 13.05.2016
comment
Я согласен. PROC IMPORT и PROC EXPORT есть проблемы с правильной настройкой &SYSERR. Вместо этого, возможно, полагайтесь на &SYSERRTEXT (который устанавливается правильно).   -  person Joe    schedule 13.05.2016
comment
Должен ли я изменить &syserr ne 0? для системного текста? Но если &syserr=0 для экспорта proc, почему SAS останавливается, хотя у меня есть опция nosyntaxcheck?   -  person aola    schedule 13.05.2016
comment
Если вам интересно, существуют альтернативные способы отправки электронных писем при возникновении ошибок в SAS. См. этот вопрос: stackoverflow.com/questions /9535843/sas-email-if-errors-occur/   -  person Robert Penridge    schedule 13.05.2016


Ответы (1)


вот как я отправляю свою электронную почту из SAS

не требуется создавать файл в системе

filename outbox email "[email protected]"; 
data _null_;    
file outbox    
to=("[email protected]")     
cc=("[email protected]")    
subject="SUBJECT OF EMAIL "    
/* attach=("C:\sas\results.out" "C:\sas\code.sas")  */    ; /* incase you need to attach a file */    
put 'Hello! ';    
put ' '; 
put 'Thank you & let me know if there is anything,';
put "&macrovar.";   /*in case you need to put some detail in the email from macro variables   make sure to use double quote for that */
put 'SIGNATURE ME'; 
run;
person Wired604    schedule 06.12.2018