Error handling 如果遇到错误,请停止SAS EG项目

Error handling 如果遇到错误,请停止SAS EG项目,error-handling,sas,Error Handling,Sas,我尝试将其放在所有程序之前(使用在预处理中包含代码的选项): 选项错误结束 它确实会触发一个警告弹出窗口,但下一个文件确实会被执行。例如: A-…>B->C->D 如果A有错误,我将得到一个弹出窗口,说明发生了错误,服务器已断开连接,但是B、C和D也将运行。我希望项目的执行在A点停止 我有几个旧项目,有几十个,如果不是几百个程序,因此我不考虑使用宏(),同时也检查错误作为一个选项。 可以做些什么 谢谢大家! 编辑:这是为SAS Enterprise Guide 7.1编写的,我认为最好的方法是用

我尝试将其放在所有程序之前(使用在预处理中包含代码的选项):

选项错误结束

它确实会触发一个警告弹出窗口,但下一个文件确实会被执行。例如:

A-…>B->C->D

如果A有错误,我将得到一个弹出窗口,说明发生了错误,服务器已断开连接,但是B、C和D也将运行。我希望项目的执行在A点停止

我有几个旧项目,有几十个,如果不是几百个程序,因此我不考虑使用宏(),同时也检查错误作为一个选项。 可以做些什么

谢谢大家!


编辑:这是为SAS Enterprise Guide 7.1编写的,我认为最好的方法是用宏编写,如:

%Macro error_check;
   'your process for A';
   %if &syserr > 0 %then %do;
        %goto exit;  
   %end; /* if your systemerror value is greater than zero, then go to exit directly */
    'your process for B';
    'your process for C';
    'your process for D';
%exit:  /* be careful, it is not semicolon*/
%Mend;

不要将%if&syserr循环放在“数据运行语句”中。我试着这么做,结果事情变得很复杂。

我认为最好的方法是用宏编写,比如:

%Macro error_check;
   'your process for A';
   %if &syserr > 0 %then %do;
        %goto exit;  
   %end; /* if your systemerror value is greater than zero, then go to exit directly */
    'your process for B';
    'your process for C';
    'your process for D';
%exit:  /* be careful, it is not semicolon*/
%Mend;

不要将%if&syserr循环放在“数据运行语句”中。我试着这么做,但事情变得复杂起来。

这似乎很有意义:谢谢你的链接。我已经看过了这个网站,并从弗雷德里克的回复中得到了灵感。如前所述,它不能像我所希望的那样工作。此外,它们建议使用宏,但如上所述,宏(和条件流)并不是一个很好的选择。对我来说,理想的情况是,一旦发生错误,ENDSAS就会被调用。您是如何执行您的一系列程序的?这是在《企业指南》中偶然出现的吗?是的!对不起,我应该提出来的,傻我。我将把它添加到主帖子中。这似乎是相关的:谢谢你的链接。我已经看过了这个网站,并从弗雷德里克的回复中得到了灵感。如前所述,它不能像我所希望的那样工作。此外,它们建议使用宏,但如上所述,宏(和条件流)并不是一个很好的选择。对我来说,理想的情况是,一旦发生错误,ENDSAS就会被调用。您是如何执行您的一系列程序的?这是在《企业指南》中偶然出现的吗?是的!对不起,我应该提出来的,傻我。我将把它添加到主帖子中。