취미생활/프로그래밍

SAS 9.4에서 여러 개의 SAS 파일 자동 실행하는 방법

내가그리는인생 2025. 7. 5. 16:31
반응형

SAS 9.4 환경에서 배치 파일, 매크로, 스케줄러를 활용해 여러 개의 SAS 프로그램을 자동 실행하는 방법을 알아봅시다.

 

SAS 9.4 환경에서 업무를 하다 보면 여러 개의 .sas 프로그램을 순차적으로 실행해야 하는 경우가 많습니다. 예를 들어, 전처리 → 분석 → 리포트 생성의 흐름이 각각 개별 프로그램으로 나뉘어 있을 수 있죠. 이를 매번 수동으로 실행한다면 시간 낭비는 물론 실수 가능성도 높아집니다. 이번 글에서는 SAS 9.4에서 여러 개의 SAS 프로그램을 자동으로 실행하는 방법을 체계적으로 정리해드립니다.


SAS 9.4에서 여러 개의 SAS 파일을 자동으로 실행해야 하는 이유

  • 업무 자동화: 반복적인 작업을 자동화해 생산성을 높일 수 있습니다.
  • 실수 방지: 수작업 실행 중 발생할 수 있는 누락, 순서 오류를 방지합니다.
  • 야간 배치 작업 가능: 퇴근 후 자동 실행으로 시간 자원을 효율적으로 활용할 수 있습니다.

방법 1 – 윈도우 배치 파일(.bat) 활용하기

실행 원리

SAS는 명령줄(Command line)에서 실행이 가능합니다. 이점만 잘 활용하면 배치(.bat) 파일을 통해 여러 개의 SAS 프로그램을 순서대로 실행할 수 있습니다.

배치 파일 작성 예제

@echo off
sas.exe -sysin "C:\SAS_Projects\step1.sas"
sas.exe -sysin "C:\SAS_Projects\step2.sas"
sas.exe -sysin "C:\SAS_Projects\step3.sas"
  • sas.exe 경로는 C:\Program Files\SASHome\SASFoundation\9.4\sas.exe 등으로 환경에 따라 다를 수 있습니다.
  • 위 코드를 메모장에 작성한 후 .bat 확장자로 저장하고 실행하면 됩니다.

방법 2 – SAS 내부 매크로로 여러 개의 파일 실행하기

%INCLUDE 활용법

SAS 내장 기능인 %INCLUDE를 사용하면, 여러 개의 .sas 파일을 하나의 드라이버 프로그램에서 순차적으로 실행할 수 있습니다.

%include 'C:\SAS_Projects\step1.sas';
%include 'C:\SAS_Projects\step2.sas';
%include 'C:\SAS_Projects\step3.sas';

반복 실행 매크로 예제

%macro run_all;
  %let path=C:\SAS_Projects;
  %let files=step1 step2 step3;

  %do i=1 %to 3;
    %let file=%scan(&files, &i);
    %include "&path\&file..sas";
  %end;
%mend;

%run_all;

폴더 내 모든 .sas 파일 자동 실행 예제

/* 파일 목록 읽기 - Windows 환경 */
filename filelist pipe 'dir "C:\SAS_Projects" /b *.sas';

/* 데이터셋으로 변환 */
data file_list;
  infile filelist truncover;
  input filename $100.;
run;

/* 매크로로 반복 실행 */
data _null_;
  set file_list;
  call execute('%include "C:\SAS_Projects\' || strip(filename) || '";');
run;
  • 위 코드는 해당 디렉토리 내의 모든 .sas 파일을 자동으로 불러와 순차적으로 실행합니다.
  • 파일명 순서는 Windows 디렉토리 출력 순서를 따릅니다.

방법 3 – 윈도우 작업 스케줄러(Task Scheduler)와 연동하기

  • .bat 파일 또는 .sas 파일을 스케줄에 등록하여 지정된 시간에 자동 실행이 가능
  • 매일/매주 반복 실행이 필요한 경우 유용
  • 로그 관리 및 오류 알림 설정도 가능

SAS에서 폴더가 존재하지 않으면 자동으로 생성하는 방법

X 명령어와 mkdir 활용

%let folder=C:\SAS_Projects\output;

x "if not exist &folder mkdir &folder";
  • x 명령어는 SAS 외부 명령 실행을 가능하게 합니다.
  • 위 코드는 해당 경로에 폴더가 없으면 자동으로 생성합니다.
  • mkdir 외에도 다양한 DOS 명령어를 활용할 수 있으며 예를 들어 여러 폴더를 한 번에 생성하거나 로그 기록도 가능합니다.
/* 하위 폴더까지 한번에 생성 */
%let newpath=C:\SAS_Projects\2025\07\output;
x "mkdir &newpath";

/* 생성 후 결과 로그 확인 */
x "echo 폴더 생성 완료 >> C:\SAS_Projects\log\create_log.txt";

매크로로 조건부 폴더 생성

%macro create_dir(dir);
  options noxwait;
  x "if not exist &dir mkdir &dir";
%mend;

%create_dir(C:\SAS_Projects\output);

주의사항 및 팁

  • 경로는 항상 큰따옴표로 감쌀 것 (공백 포함 시 오류 방지)
  • x 명령어는 일부 환경(SAS EG 등)에서 비활성화되어 있을 수 있음 → 권한 확인 필요
  • 로그 파일 별도 저장 시, -log 옵션 활용 가능

결론

여러 개의 SAS 파일을 수작업으로 실행이 가능합니다. 배치 파일, %INCLUDE, 매크로, 스케줄러, 폴더 자동 생성 등의 기법을 적절히 활용하면 반복 업무를 효율적으로 자동화할 수 있습니다. SAS 9.4의 기본 기능만 잘 활용해도 업무의 질과 속도를 동시에 높일 수 있죠.


FAQ

Q1. SAS EG에서도 배치 실행이 가능한가요? → 네, SAS EG 프로젝트를 .egp 파일로 저장한 뒤 SASEGuide.exe와 매개변수 옵션을 사용하면 가능합니다.

Q2. 폴더 생성 명령어가 먹히지 않아요.options noxwait noxsync; 설정이 필요하며, 일부 보안 환경에서는 관리자 권한이 필요할 수 있습니다.

Q3. .sas 파일을 동시에 실행할 수도 있나요? → 가능합니다. 단, 리소스 충돌 방지를 위해 권장되지는 않으며 병렬 처리 시 로그 분리 및 충돌 방지 설정 필요

반응형