Для ваших обычных пользователей вы должны установить график выпуска изменений. Пользователи будут знать, что им нужно перезапустить новую сессию после выпуска релиза.
Для ваших разработчиков, которые тестируют изменения по мере их внесения, им просто нужно использовать% INCLUDE для повторной компиляции макроса. Поэтому, если вы знаете, что макрос XYZ изменен, просто запустите:
%include maclib('xyz.sas');
Или вы можете перебрать его и перекомпилировать все макросы в вашей библиотеке автоколонок.
%incldue maclib('*.sas');
Вы могли бы придумать и создать макрос, который очищает фактический каталог скомпилированных макросов. Что-то вроде:
%macro clean_autocall;
proc catalog force c=work.sasmacr;
save clean_autocall /et=macro;
quit;
options mrecall mautosource;
%mend clean_autocall;
Но если вы используете Enterprise Guide, есть две проблемы.
Сначала по какой-то причине он использует другой каталог для хранения скомпилированных макросов. (Почему?) Я думаю, что это WORK.SASMAC1 вместо WORK.SASMACR.
Второй EG вручную скомпилирует кучу вспомогательных макросов, в которых он нуждается. Я не уверен, есть ли официальный источник для полного списка этих макросов? Вы можете попробовать добавить код в ваш проект, чтобы автоматически создавать список на основе того, какие записи находятся в каталоге при запуске вашего проекта. Вот список, который я сделал 10+ лет назад, когда пытался использовать EG в производственной среде. Но я уверен, что это устарело.
%let s_eg_save= checkfmt checkhotfix
eclibassign eclibunassign enterpriseguide gaccessible
_eg_conditional_dropds
;