清除正用于存储的已编译SAS宏的库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清除正用于存储的已编译SAS宏的库相关的知识,希望对你有一定的参考价值。
我有一个程序,使用以下语法在库中创建存储的编译宏:
options mstored sasmstore=MyLib;
%macro MyMac() /store source des='My Macro';
%let x=1;
%mend;
但是我之后似乎无法重新分配我的库(MyLib) - 我得到以下消息(sas 9.1.3):
ERROR: Unable to clear or re-assign the library MYLIB because it is still in use.
ERROR: Error in the LIBNAME statement.
任何人都可以建议吗?
答案
在SAS 9.3或更高版本中,您现在可以使用%SYSMSTORECLEAR Statement清除libref。
另一答案
简短的回答 - 我认为你不能在同一个SAS会话中。
您无法清除libref,因为宏目录(SASMACR)保持打开状态。它保持开放,因为它需要资源来打开和关闭目录,而SAS假设编译的宏在生产作业中速度快,并且作为权衡,失去一些动态能力。在清除libref之前必须关闭所有资源。由于SASMACR仍然在使用(并且没有关闭会话似乎不是关闭它的方法),因此无法清除libref。
以上是关于清除正用于存储的已编译SAS宏的库的主要内容,如果未能解决你的问题,请参考以下文章
如何有条件地 %include 一个定义宏的 *.sas 文件?
使用 IEFs-s-rEQ 宏的 MVS JES2 清除作业