Остановить программу SAS при ошибке - PullRequest
5 голосов
/ 27 февраля 2012

Я использую макрос, чтобы остановить мою SAS-программу из-за ошибки, но она всегда отключается от сервера, и я больше не могу вернуть свои временные наборы данных.

Я пытался:

OPTIONS ERRORABEND;

Вот макрос, который я пробовал:

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

Этот код продолжает обрабатывать следующие шаги данных после достижения ошибки.

Я не могу понять, как остановить остальныепрограммы, но не отключается от сервера SAS.Есть идеи?

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Я не могу проверить это, так как не подключаюсь удаленно, но %ABORT имеет несколько необязательных параметров.Обычно я использую %ABORT cancel;, когда использую его.Попробуйте каждый из дополнительных параметров и посмотрите, работает ли какой-либо из них.

Ссылка на документацию %ABORT:

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

1 голос
/ 27 февраля 2012

Вы пробовали использовать% goto? Вместо того, чтобы вызывать прерывание, вы можете перенаправить ваш макрос в точку выхода и распечатать что-то в журнале, чтобы указать, какая часть вашего кода потерпела неудачу.

Пример синтаксиса приведен здесь:

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

Я думаю, что проблема с% errchk выше, вероятно, в том, что оператор% abort применяется только к самому% errchk. Если вы поместили% abort вызовов в середину кода макроса, не заключая их в другой макрос, вы могли бы добиться большего успеха при таком подходе. Или вы можете сделать что-то, чтобы отложить выполнение% abort до тех пор, пока% errchk уже не завершится - возможно, заключив его в% nrstr ()? Дайте мне знать, если это сработает - я смогу проверить это завтра.

...