Всем привет!
Я прошу прощения, что некоторое время не писал, так как проходил тренинг в
Московском Тренинговом Центре. Если у Вас есть вопросы по поводу тренинга, то пишите: я всегда рад поделиться!
В данной статье я опишу достаточно простой способ обработки ошибок в SAS.
Недавно я столкнулся с задачей, где требовалось обрабатывать ошибку связанную с неправильной работой БД Oracle. То есть, например, необходимо было записать что-то, а база недоступна.
Начну по порядку. Ошибки записываются в стандартные автоматические макропеременные:
&SYSERR
&SYSERRORTEXT
&SYSWARNINGTEXT
Для того, чтобы код отработал после ошибки (которая по идее прекращает работу программы) необходимо создать макрос и поместить его в конец программы.
На официальном сайте очень подробно расписано какие значения может принимать макропеременная
SYSERR. Данная переменная содержит коды по
ТИПАМ ошибок. И используя, например, следующий код можно проверить условие на то, что есть ошибка или нет:
%MACRO ERROR_CHECK1();
%IF &SYSERR NE 0 %THEN
%DO;
%PUT %SYSERR;
* <В ДАННОЕ МЕСТО МОЖНО ВСТАВИТЬ НЕОБХОДИМЫЙ КОД!> ;
%END:
%MEND;
%ERROR_CHECK1;
К сожалению, не всегда и не во всех приложениях SAS можно использовать данную переменную. Особенно это заметно, когда «проваливаешься» на стороннюю БД.
В этом случае приходят на помощь
SYSERRORTEXT и
SYSWARNINGTEXT. На официальном сайте есть несколько примеров по работе с ними. Данные переменные содержат тексты ошибок и предупреждений, даже если &SYSERR = 0. В качестве примера можно использовать следующий код, которые обрабатывает оракловые ошибки:
%MACRO ERROR_CHECK2();
%IF %SYSFUNC(FIND(&SYSERRORTEXT, ‘ORACLE EXECUTE ERROR’,1)) %THEN
%DO;
%PUT %SYSERRORTEXT;
* <В ДАННОЕ МЕСТО МОЖНО ВСТАВИТЬ НЕОБХОДИМЫЙ КОД!> ;
%END:
%MEND;
%ERROR_CHECK2;
Также есть интересные примеры на сайте support.sas.com, связанные с обработкой ошибок.
google.com в данном случае поможет =)
В некоторых приложениях SAS существуют дополнительные макропеременные. Например, в SAS Customer Intelligence Studio можно выделить две: MAError и MAMsg. Принцип работы примерно такой-же, как и для стандартных ошибок, описанных выше.
На этом всё!
До скорых встреч!