MPRINT, MLOGIC, SYMBOLGEN. Или как понять что происходит при выполнение макросов.

Всем привет!

Сегодня коснемся темы DEBUGGING макросов. А именно иструментов, которые нам помогут если что понять на каком этапе выполнения макроса случилась ошибка. 
А помогут нам в этом следующие опции: MPRINT, MLOGIC, SYMBOLGEN.

MPRINT — Отображает выполняемый код макроса в логах.

Пример:  напишем простенький макрос:

Теперь запустим его без включенной опции mprint:

А теперь подключим опцию mprint:

Мы видим, что появились дополнительные записи начинающиеся с MPRINT(TST).

MLOGIC— Полезная опция для вложенных макросов. Отображает логику выполнения макроса. Т.е. елси будут макросы %DO ,  %IF-%THEN,  данная опция покажет по какой логике идет выполения макроса.

Давайте прассмотрим пример: запусти выполение предыдущего макроса с включенной опцией mlogic:

Мы видим в логах, как изменялось значение параметра I в цикле, а также завершение выполнения макроса.

Ну теперь давайте включим сразу две опции mlogic и mprint:

В данном логе прекрасно видно как эти опции работают совместно и дают довольно полуную информацию о том что делает макрос.

SYMBOLGEN — С помощью данной опции мы можем узнать во что превращаются макропеременные.

Дастаточно хорошо данная опцию уже рассматривалась мною в статье: SAS Macro variable and ampersands.

P.S.
На последок хотел бы сказать: «Не забывайте отключать эти опции, когда программа уже отлажена, т.к. они очень сильно могут раздувать файлы логов».

Для того чтобы отключить данные опции можно выполнить команду:

options nomprint nomlogic nosymbolgen;

P.P.S.
Чуть не забыл — не забывайте кликать на ссылки соцсетей, если статья Вам понравилась.

До скрорых встреч.

С уважением,
Николай.

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

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

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

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