2012-02-27 33 views
5

我正在使用宏來阻止我的SAS程序發生錯誤,但它始終與服務器斷開連接,然後我無法恢復臨時數據集。錯誤地停止SAS程序

我曾嘗試:

OPTIONS ERRORABEND; 

這裏是我曾嘗試宏:

%macro errchk; 
%if &syserr >0 and &syserr ne 4 %then %abort; 
%mend errchk; 

這一個保持到達錯誤後處理下面的數據的步驟。

我不知道如何停止運行程序的其餘部分,但不要從SAS服務器斷開連接。有任何想法嗎?

+0

所以你遠程連接到服務器來運行你的程序? – 2012-02-27 18:56:27

+0

我正在連接工作,所以我認爲如此 – 2012-02-27 19:04:06

+0

也許這將有助於,如果你設置了一些goto開關,讓處理在檢測到錯誤後到達代碼末尾? – 2012-02-27 20:04:17

回答

1

您是否嘗試過使用%goto?您可以將您的宏重定向到一個退出點,並在日誌中打印某些內容以指示哪部分代碼失敗,而不是觸發中止。

語法的例子這裏給出:

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000209058.htm

我覺得上面%errchk的問題可能是,中止%陳述僅適用於%errchk本身。如果您在宏代碼中間放置了%abort調用,而未將它們包裝在另一個宏中,那麼您可能會使用該方法獲得更多成功。或者你可以做一些事情來延遲%abort的執行,直到%errchk已經完成 - 也許把它放在%nrstr()中?讓我知道這是否有效 - 明天我可以測試它。