У меня есть библиотека сохраненных скомпилированных макросов, то есть макросов, которые я определяю так:
options mstored sasmstore=MYLIB;
%macro say_something(txt) / STORE SOURCE;
%put &txt;
%mend;
Я часто получаю это сообщение об ошибке:
ПРИМЕЧАНИЕ.Системе SAS не удалось открыть библиотеку макросов, на которую ссылается SASMSTORE = libref MYLIB.
ОШИБКА: блокировка недоступна для MYLIB.SASMACR.CATALOG.
ОШИБКА: блокировка удерживается процессом 4653302.
ОШИБКА: будет скомпилирован фиктивный макрос.
Это происходит, когда я пытаюсь определить макрос (например, выполнить код выше), и я считаю, что это происходит в 2 обстоятельствах:
Открыт другой сеанс, где макрос уже определен.
Открыт другой сеанс, где в данный момент выполняется процесс, используя макрос измоя библиотека
(мне все еще не ясно)
Могу ли я избежать этого?
В первом случае я хотел бы датьдо прав на запись, чтобы другой сеанс мог взять их.В настоящее время я делаю это, закрывая файл и открывая его снова, что утомительно и очень раздражает, если по ошибке я запустил длинный процесс над этим файлом, прежде чем «перезагрузить» его.
Во втором случае я не оченьпонять, почему произойдет блокировка, так как я едва использую макрос, ничего не записывая в библиотеку.Поскольку моей библиотекой будет пользоваться все больше людей, мне нужно будет найти «правильное время» для фиксации, что на самом деле не является чистым рабочим процессом, который я ищу.