[英]SAS: How to Prevent ABORT on Error
我有&syserr.
的預期錯誤&syserr.
1020
遇到錯誤時,程序將終止,並顯示以下消息:
FATAL: Unrecoverable I/O error detected in the execution of the DATA step program.
Aborted during the EXECUTION phase.
我知道問題出在哪里,沒有解決方案。 但是,由於我知道導致問題的原因,所以我想在程序終止之前提醒用戶如何解決問題。
也就是說,在發生錯誤和程序中止之間,我要執行一些代碼。
我搜尋了互聯網,卻找不到任何無法完成的信息。 實際上,關於SO的許多答案都暗示可以做到。 但是我不知道如何。
由於您知道已設置&syserr,因此一種選擇是編寫自己的%OnError宏,例如:
%macro OnError(debug=0);
%if &syserr ne 0 %then %do;
%*blah blah blah;
%end;
%mend OnError;
因此您的代碼如下所示:
data want;
set have;
oops;
run;
%OnError()
請注意,在每個步驟邊界之后都會重置&syserr,因此您需要在可疑步驟之后立即對其進行測試。 還有其他宏變量,它們的返回碼仍然存在。
如果錯誤嚴重到足以使SAS進入語法檢查模式(將obs = 0設置為noreplace),那么您將不得不做更多的工作來恢復。 但是我認為在交互式SAS中默認情況下禁用此功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.