3

次の構文を使用して、ライブラリに保存されたコンパイル済みマクロを作成するプログラムがあります。

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.

誰かアドバイスできますか?

4

2 に答える 2

5

SAS 9.3以降では、 %SYSMSTORECLEARステートメントを使用してlibrefをクリアできるようになりました。

于 2018-03-27T12:50:40.557 に答える
4

簡単な答え-同じSASセッションではできないと思います。

マクロカタログ(SASMACR)が開いたままになっているため、librefをクリアできません。カタログを開いたり閉じたりするのにリソースが必要であり、SASは、コンパイルされたマクロが本番ジョブの速度を上げ、トレードオフとしていくつかの動的機能を失うと想定しているため、開いたままになります。librefをクリアする前に、すべてのリソースを閉じる必要があります。SASMACRは引き続き使用されているため(セッションを閉じる以外の方法はセッションを閉じる方法ではないようです)、librefをクリアする方法はありません。

于 2009-10-27T13:05:50.277 に答える