끄적이는 프로그래밍/SAS 프로그래밍

SAS를 이용한 매크로 카탈로그 (Macro Catalog) 구성

요맘때10 2022. 9. 5. 13:54
반응형

목적

임상시험 진행 중 의뢰사로부터 프로그램 코드를 요청받는 일이 종종 있다. 보내주면 그만이라는 생각을 할 수 있지만, 대부분 통계분석 시 매크로를 이용하여 프로그램하므로 프로그램 코드를 보내줄 수 없는 경우가 많다. 이 때문에 프로그램 코드를 공개용 / 비공개용 모두 만드는 경우도 있는데 매우 비효율적이다. 만약 매크로 카탈로그를 구성하여 이를 의뢰사에 보낸다면 프로그램 코드 공개 없이 해당 매크로를 이용할 수 있어 매우 유용하다. 오늘은 SAS 프로그램을 이용하여 매크로 카탈로그를 구성하는 방법에 대해 알아보자. Sample data는 sashelp.class를 이용할 것이다.


1. Set up

먼저 매크로 카탈로그를 구성할 라이브러리 및 경로를 설정한다.

libname catalog "C:\Macros";

그 다음 SAS Option을 이용하여 매크로가 저장될 라이브러리를 미리 설정한 라이브러리로 지정하여 매크로 카탈로그를 연다.

option mstored sasmstore=catalog;

한 번 지정한다면 SAS 세션이 끝날 때까지 매크로 카탈로그가 열림상태로 유지되므로 만약 닫고 싶다면 아래 코드를 이용하여 닫는다.

libname catalog clear;

2. 매크로 저장 (Macro save)

SAS Option을 이용하여 매크로 카탈로그를 열었다면 아래 예제인 Means 매크로를 카탈로그로 저장해본다

%Macro Means(data=, var=);
  proc means data=&data.;
    var &var.;
  run;
%Mend Means;

위 코드는 일반적인 Macro 형태인데, /store 옵션을 이용하여 매크로 코드를 카탈로그로 저장한다.

%Macro Means(data=, var=) / store;
  proc means data=&data.;
    var &var.;
  run;
%Mend Means;

카탈로그가 구성된 것을 알 수 있다.



3. 카탈로그 (Catalog) 실행

SAS 종료 후 생성해 놓은 매크로 카탈로그를 실행하고 싶다면

libname catalog "C:\Macros";
option mstored sasmstore=catalog;

매크로를 실행해 보면

%Means(data=sashelp.class, var=age);

매크로가 잘 실행되는 것을 알 수 있다.

%

4. 카탈로그 (Catalog)에 소스 코드 저장

만약 매크로 카탈로그에 소스 코드까지 저장하고 싶다면 /Source 옵션을 이용하여 매크로 코드를 카탈로그로 저장한다.

%Macro Means(data=, var=) / store source;
  proc means data=&data.;
    var &var.;
  run;
%Mend Means;

저장된 소스코드를 읽으려면 %copy 매크로명 / source;

%copy Means / source;

프로그램 로그에 매크로 소스코드를 출력하는 것을 알 수 있다.

 

SAS Macro Catalog에 대한 더 많은 정보를 확인하려면 아래 링크 Click

SAS Help Center: Saving Macros Using the Stored Compiled Macro Facility

 

반응형