* 출처 : http://cafe.daum.net/statsas/3F8j/310
libname back 'D:\SAS\SAS TIP\매크로 에러';
* option mlogic mprint;
* 배치 작업 내에서 매크로에 의한 반복 작업을 수행 중에 에러 발생 시 현재 반복중인 작업 이외의 반복문을 계속 실행하는 방법;
* 윈도우에서는 에러 발생 이후 문장에 대하여는 정상적으로 처리를 하지만,
* 배치(Bathc) 작업에서는 에러를 발생하는 경우 이후 프로그램을 비정상적으로 처리를 하는데,
* Bathc 작업에서 에러 발생 이후의 프로그램을 실행을 위해서는 options 구문에서 데이터를 처리를 정상적으로 실행하도록 옵션을 변경하여서 처리해야 한다.
* 시스템 중지 : %if &syserr >0 %then %abort;
* 이후 매크로 작업 계속 실행 : %if &syserr >0 %then options obs= max replace nosyntaxcheck;
/*
배치파일(.Bat) 파일 내용
: "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome\SASFoundation\9.4
ls\ko\sasv9.cfg" -sysin "D:\SAS\SAS TIP\매크로 에러\매크로 배치에러 테스트.sas" -log "D:\SAS\SAS TIP\매크로 에러\매크로 배치에러 테스트.log"
*/
%macro back();
%do i=1 %to 3;
%put "에러0 : " &syserr;
%if &i = 1 %then %do;
data NULL;
set doesnotexist;
run;
/* 아래 하단의 프로그램을 제거한 경우 windows 일반 대화식 모드에서는 위의 "doesnotexist" 데이터세트가 존재하지 않는다는 에러 발생 후
_1,_2,_3,back 데이터 세트가 정상적으로 생성이 되나,
: ERROR: 파일 'WORK.DOESNOTEXIST.DATA'이(가) 존재하지 않습니다.
Batch 작업을 실행한 경우에는 _1,_2,_3,back 데이터 세트가 비정상적(내부에 데이터 없이)생성이 된다.
Bathc 작업에서 에러 발생 이후의 프로그램을 실행을 위해서는 options 구문에서 데이터를 처리를 정상적으로 실행하도록 옵션을 변경해주어야 한다.
*/
%if &syserr >0 %then %do;
options obs= max replace nosyntaxcheck;
data _null_;
put;
put 'ERROR';
put "&syserrortext";
put 'check a log';
run;
/* %abort cancel; */ /* 매크로 작업 중지를 원하는 경우 삽입 */
%end;
data back._&i;
var = "&i";
run;
%end;
%else %do;
data back._&i;
var = "&i";
run;
%end;
%end;
%mend;
%back();
data back.back;
var=1;
run;
*********************************************************
- 통계분석연구회
- 카페 : http://cafe.daum.net/statsas
- 통계분석연구회(Statistics Analysis Study) 그룹 :https://www.facebook.com/groups/statsas
* 친구 호출 : 답글에서 @다음에 친구 이름이나 페이지명 작성 후 친구 선택
(예 : @통계분석연구회)
#통계 #빅데이터 #통계분석연구회 #데이터과학자 #bigdata #dataviz #statistics #Analytics
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.