무엇이 문제입니까?
먼저 모든 자동 호출 매크로를 컴파일하십시오. 소스 코드가있는 디렉토리를 가리키는 MYMACS라는 파일 참조가 있다고 가정 해보십시오.
%include mymacs(macro1,macro2,.....);
% include 문 생성을 자동화 할 수 있도록 프로그램을 사용하여 모든 소스 파일을 검색 할 수 있습니다. 또는 데이터 저장을 사용하여 모든 소스 파일을 하나의 임시 파일로 복사하고이를 포함 할 수 있습니다.
filename src temp;
data _null_;
infile "&inpath\*.sas" ;
file src ;
input;
put _infile_;
run;
%inc src ;
그런 다음 WORK 카탈로그를 새 위치로 복사하십시오. 응용 프로그램 서버에서 SAS를 실행하는 경우 이름이 다릅니다. 이 경우 WORK.SASMACR
대신 WORK.SASMAC1
에서 복사 해보십시오.
libname out base "&path";
proc catalog cat=work.sasmacr et=macro ;
copy out=out.sasmacr ;
run;
quit;
는 현재 작업 매크로 카탈로그를 해제하여 일 경우 SAS가 매크로를 발견하고, 컴파일 된 매크로의 새 카탈로그를 가리 키도록 옵션을 설정하지 않습니다 알 수 있도록 당신은, 테스트 할 수 있습니다.
proc catalog cat=work.sasmacr kill force ;
quit;
options mrecall mstored sasmstore=out ;
그런 다음 복사 된 매크로 중 하나를 실행하려고합니다.
이제 새 세션을 시작하고 해당 세션에서 컴파일 된 매크로를 사용해보십시오.
출처
2017-11-13 04:23:18
Tom
이 작업에 대한 동기는 무엇입니까? 매크로를 컴파일하는 오버 헤드는 대개 작습니다. – user667489
이것은 성능이며, 프로세스 내에서'dosubl'과'run_macro'를 사용하기 때문에 여러 번 재 컴파일 될 것으로 생각되는 큰 매크로 때문에 발생합니다. 43 초 (평균) 세션으로 약 1.5 초에서 2 초 정도의 시간을 절약합니다. –
나는 고쳐서 결국 시간을 절약 할 수 있었다. 아마도'run_macro'의 사전 사용 이었지만, 지금은'dosubl'을 사용하는 경향이 있습니다 (실제로 지난 번 측정했을 때 더 큰 영향이있었습니다). –