SAS — ошибка записи в журнал, если переменная отсутствует во входном наборе данных

#error-handling #sas #sas-macro

#обработка ошибок #sas #sas-макрос

Вопрос:

Я хотел бы записать сообщение об ошибке в журнал SAS, если переменная во входном наборе данных не существует. Мы используем макрос, который дифференциально присваивает переменной (datex) значение на основе значения другой переменной (var = site). Если сайт отсутствует во входном наборе данных, в журнал будет добавлена заметка (я думаю?) но я хочу написать большое красное сообщение об ошибке, чтобы пользователи знали, что в их входном наборе данных отсутствует переменная ‘site’. Есть идеи? Спасибо за помощь!

бывший:

 data want;
 set have; 
 %macro_to_create_datex;
run;
 

если переменной site нет в наборе данных have, затем напечатайте ошибку в журнале. Макрос ‘macro_to_create_datex’ использует значение ‘site’ для присвоения datex.

Комментарии:

1. Обычно вы проверяете это не на шаге обработки данных, а в макросе. SASHELP.vcolumn содержит список переменных во всех наборах данных и может использоваться для проверки переменных, или содержимое процедуры может передавать список в набор данных для немного более быстрой проверки.

Ответ №1:

По умолчанию put оператор записывает в журнал.

Просто начните свое сообщение с ERROR: или WARNING: , и оно будет выделено соответствующим образом.

Предполагая, что вы идентифицируете свои данные с помощью переменной с именем key :

 data want;
    set have; 
    if missing(site) then put "ERROR: missing site for observation " _N_ key=;
    %macro_to_create_datex;
run;