Всем добрый день.
Сегодня урок будет посвящен неправильной работе с функций
INTNX, а именно использование ее совместно с
%SYSFUNC.
Дело в том, что случай с которым столкнулся неприятен тем, что в логе
SAS выдается
Warning, т.е. ошибка как таковая не возникает, вследствие чего процесс бежит дальше, хотя он уже неправильный. Таким образом если у нас есть некие мониторы, которые настроены на отлавливание ошибок, то они не сработают в нашем случае.
Итак, обычная работа с функцией
INTNX (выведем первое число текущего месяца):
Мы видим, что параметр
month и
beginning находятся в кавычках.
Теперь попробуем туже схему выполнить через
%SYSFUNC:
Мы получили ошибку из заголовка:
WARNING: An argument to the function INTNX referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.
Помимо этого значение макро переменной x оказалось пустым.
Обратите внимание, что параметры
month и
beginnign также стоят в кавычках.
Данная проблема решается тем, что мы убираем с перечисленных параметров кавычки:
В этом же варианте все хорошо.
Еще раз хочу сказать, что коварность данной проблемы состоит в том, что вылезает просто Warning, а не ошибка!
До скорых встреч!
Николай.