Обработка ошибок через SAS Macro

Всем привет!
Я прошу прощения, что некоторое время не писал, так как проходил тренинг в Московском Тренинговом Центре. Если у Вас есть вопросы по поводу тренинга, то пишите: я всегда рад поделиться!
В данной статье я опишу достаточно простой способ обработки ошибок в 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. Принцип работы примерно такой-же, как и для стандартных ошибок, описанных выше.
На этом всё!
До скорых встреч!

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.