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.
Чуть не забыл - не забывайте кликать на ссылки соцсетей, если статья Вам понравилась.

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

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




Ярлыки: , , ,