I have a library of stored compiled macros, i.e. macros that I define like this :
options mstored sasmstore=MYLIB;
%macro say_something(txt) / STORE SOURCE;
%put &txt;
%mend;
I'm often getting this error message :
NOTE: The SAS System was unable to open the macro library referenced by the SASMSTORE = libref MYLIB.
ERROR: A lock is not available for MYLIB.SASMACR.CATALOG.
ERROR: Lock held by process 4653302.
ERROR: A dummy macro will be compiled.
It happens when I try to define a macro (e.g. execute above code) and I believe it happens in 2 circumstances:
Another session is opened where a macro has already been defined.
Another session is opened where a process is currently running, using a macro from my library
(It's not all clear to me though)
Can I avoid this ?
In the first case I'd like to give up the writing rights so another session can take them. I currently do it by closing the file and reopening it, which is tedious and very annoying if by mistake I started a long process on this file before "rebooting" it.
In the 2nd case I don't really get why the lock would happen as I'm barely using a macro, not writing anything to the library. As my library will be used by more people I'll need to find the "right time" to commit, which is really not the clean workflow I'm looking for.