2009-10-27 5 views
3
내가 구문을 사용하여 라이브러리에 저장된 컴파일 된 매크로를 만드는 프로그램이있다

:컴파일되어 저장에 사용되는 라이브러리를 삭제 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. 

누구든지 조언을 줄 수 있습니까?

답변

4

짧은 대답 - 난 당신 같은 SAS 세션에 수 있다고 생각하지 않습니다. 매크로 카탈로그 (SASMACR)이 열려 있기 때문에

당신은 libref을 지울 수 없습니다. 카탈로그를 열거 나 닫는 데 리소스가 필요하므로 SAS는 컴파일 된 매크로가 프로덕션 작업에서 속도를 높이고 트레이드 오프로 인해 동적 인 기능을 잃는 것으로 간주하므로 개방 상태를 유지합니다. libref를 지우기 전에 모든 자원을 닫아야합니다. SASMACR은 계속 사용 중이므로 (세션을 닫지 않으면 세션을 닫을 수없는 것 같습니다) libref를 지우는 방법은 없습니다.