since a couple of days we are facing some autoexec-issues: we %include the source code for our macros in the appserver_autoexec.sas which was very fine until recently.
Now we get the below error message more and more often and we have no idea what could be the reason...of course the problem here is that then our batch-job will fail to run.
Here's the log-excerpt (we are using SAS 9.1.3. SP4 on Windows Server 2003): ERROR: A lock is not available for WORK.SASMACR.CATALOG, lock held by another process.
ERROR: A dummy macro will be compiled.
It could be a misuse of some macro. Say some "weird" parameter value passed to the macro that is messing with the macro code. Not easy to diagnose.
One thing is sure, If everything was alright a couple of days before, something changed and provoked this behavior. I suggest you start from there, and try to identify what scripts have been modified recently.
for another approach:
as you use %include of common code, I assume you normally include the same collection of macros. Have you tried pre-compiling the macros with the mSTORED option?
It should be straight forward to prepare the catalog and move into the server on a one-off basis. In the server, place it somewhere that can be addressed by your users on a read-only basis. That should stop the contention lock.
For every session SAS creates/allocates a newly WORK lib with a randomly choosen directory name under the global WORK path (check fort hte -WORK option in your CFG file for the global WORK path). So it is virtually impossible to have two sessions sharing the same physical WORK lib.
I would bet in some missing %mend or quote, or parameter misuse that is messing with the macro compiler and locking the catalog.