포스팅 목차
o %INCLUDE 구문
1. 목 적
%INCLUDE 구문은 현재 실행중인 SAS 프로그램에서 다른 SAS 프로그래밍 문장, 데이터 라인 또는 양쪽 모두를 호출하여 실행한다.
2. 문 법
%INCLUDE source(s) </<SOURCE2> <S2=length><operating-environment-options>>; |
1) Source(s)
%INCLUDE 구문을 사용하여 접근하기 원하는 소스의 위치를 지정한다. 다음은 사용 가능한 3가지 소스이다.
Source | 정의 |
file-specification | 외부파일을 지정한다. |
internal-lines | 동일 SAS 작업 또는 세션에서 이전에 입력한 라인을 지정한다. |
keyboard-entry | 구문 또는 데이터 라인을 키보드에서 직접 입력하도록 지정한다. |
- (1) File-specification
프로그램으로 호출하기 원하는 외부 파일을 지정한다.
제한 : | 외부파일에서 라인을 선택하여 가져올 수는 없다. |
Tip : | 다음의 SAS 처리 방식에서 외부 소스를 호출하여 사용하는 방식은 매우 유용하다: (Batch, Windowing, Interactive line, noninteractive) |
운연환경정보 : | 파일 이름에 허용되는 문자 길이(Length)는 운영 환경 특성을 따른다. |
File-specification 은 다음 중에 하나의 형태를 지정 할 수 있다.
- ‘external-file’
인용부호 안에 외부 파일의 물리적 이름을 지정한다. 물리적 이름은 운영 환경이 인식하는 파일이름이다.
- Fileref
사전에 외부 파일과의 관계를 지정한 파일참조자(fileref)를 지정한다.
Tip : | 파일참조자와 외부 파일과의 관계를 지정하기 위하여 FILENAME 구문, 함수, 운영 환경 명령어 등을 사용 할 수 있다 |
- Fileref(filename-1<,”filename-2.xxx”, … filename-n>)
사전에 병합저장소(Aggregate storage location)와의 관계를 할당한 파일참조자 (fileref)를 지정하고, 파일참조자 바로 뒤에는 병합저장소 내부에 존재하는 하나 이상의 파일 이름을 작성하라. 파일 이름은 괄호 안에 작성하고, 다수의 파일 이름을 작성하는 경우에는 쉼표 또는 공백으로 분리하여 작성하라.
다음 예제는 “testcode1.sas”, “testcode2.sas”, “testcode3.txt” 파일을 호출한다. 이 파일들은 병합저장소“mylib” 내부에 위치하고, 기본 확장자가 .SAS 이기 때문에 testcode1과 testcode2에 대하여 파일 확장자를 따로 지정할 필요가 없고, Testcode3은 .SAS와 다른 확장자를 가지고 있기 때문에 인용 부호 안에 전체 파일 이름을 작성해야 한다.
%include mylib(testcode1, testcode2, "testcode3.txt");
참고 : | 파일이 병합저장소 내부에 존재하거나 유효하지 않은 SAS 이름으로 구성된 경우에는 인용부호 안에 파일 이름을 작성해야 한다. |
Tip : | 파일참조자(fileref)와 외부 파일과의 관계를 지정하기 위하여 FILENAME 구문, 함수, 운영 환경 명령어들을 사용 할 수 있다. |
운영환경정보 : | 운영 환경에 따라 서로 다른 이름(디렉토리, MACLIB, 파티션 데이터 세트 등)을 사용하여 파일 그룹을 호출한다. 서로 다른 형태의 파일을 포함하고 있는 storage에서 파일을 접근하기 위하여는 SAS 도움말을 참조하라. |
Tip : | 만약 ERRORCHECK옵션이 STRICT로 설정되어 있으면, SYSERR 매크로 변수를 사용하여 file-specification의 존재 여부를 확인 할 수 있다. |
- (2) Internal-lines
이전에 동일한 SAS job 또는 세션에서 입력된 라인을 포함한다.
내부에서 입력된 라인을 사용하기 위하여, 다음 항목을 사용한다.
- n : 라인 n을 포함한다.
- n-m 또는 n:m : n~m 라인을 포함한다.
Tip : | 내부 라인을 포함하는 방식은 대화식 라인(Interactive line) 모드에서 사용 가능하다. |
Tip : | 포함하기 원하는 라인 번호를 정의하기 위하여 %LIST 구문을 사용하라. |
Tip : | 윈도우 환경에서 SAS를 실행하는 경우에 이전에 실행된 라인을 접근하기 위하여 %INCLUDE 구문의 사용이 가능하지만, 프로그램 편집기(Program Editor)에서는 RECALL명령어를 실행하여 라인을 재호출하여 실행하는 것이 일반적인 방법이다. |
참고 : | SPOOL 시스템 옵션은 대화식라인 모드, 비대화식 모드, 배치 모드에서 SAS를 실행하는 경우에 이전에 실행된 라인에 대한 내부 접근을 관리한다. 기본적으로 SPOOL 시스템 옵션은 NOSPOOL로 설정된다. 내부 라인 참조(Internal-lines) 방식으로 %INCLUDE 구문을 사용하기 위하여 SPOOL 시스템 옵션을 적용해야 한다. 시스템에서 SPOOL 시스템 옵션에 대한 현재 설정을 정의하기 위하여 OPTIONS 프로시져를 사용하라. |
- (3) Keyboard-entry
프로그램에서 현재 실행중인 프로그램을 잠시 중지하고, 키보드를 사용하여 SAS 문장 또는 데이터 라인을 입력한 후에 다시 프로그램 처리를 다시 시작하도록 지시하는 방법이다.
Tip : | 비대화식 또는 대화식 라인 모드에서 SAS를 실행하는 경우에 이 방법을 사용하라. SAS는 잠시 현재 실행중인 처리를 중지하고, 키보드에서 문장을 입력하도록 한다. |
Tip : | 키보드를 사용하여서 소스를 입력하기 위하여 다음 인수를 사용하라. |
- *
: 키보드에서 데이터를 입력하도록 메시지를 생성한다. 코드에서 %INCLUDE 구문 뒤에 별표(*)를 작성하라.
proc print;
%include *;
run;
원래 소스 프로그램 처리를 다시 시작하도록 하기 위하여, 키보드에 %RUN 구문을 입력하라.
제한사항 : | Microsoft 윈도우 운영 환경에서 확장 편집기를 사용하는 경우에 별표(*)를 사용하여 키보드 엔트리 방식을 수행 할 수 없다. |
Tip : | 키보드 입력 방식과 다르게 %INCLUDE 구문을 포함한 파일을 fileref SASTERM으로 생성하여 배치 작업에서 %INCLUDE * 구문을 사용 할 수 있다. $INCLUDE * 구문은 SASTERM에 의하여 참조되는 파일에서 프로그램을 읽는다. SASTERM에 의해 참조되는 파일에서 프로그램 읽기를 마치고 원본 소스에서 데이터 읽기를 다시 시작하기 위하여 %RUN 구문을 삽입하라. |
참고 : | fileref SASTERM은 FILENAEM 구문, 함수, 운영환경 명령어 등을 사용하여 이전에 참조되는 외부 파일을 지정해야 한다. |
2) SOURCE2
SAS프로그램으로 호출되어 실행되는 소스 문장을 SAS로그에 출력한다.
Tip : | 파일참조자, 소스의 파일이름, 중첩 수준 등을 로그에 출력한다. |
Tip : | SAS 시스템 옵션 SOURCE2는 동일한 결과를 산출한다. %INCLUDE 구문에서 SOURCE2를 지정하는 경우에는, 호출된 프로그램을 실행하는 동안에는 SOURCE2 시스템 옵션의 설정을 제어한다. |
3) S2=length
입력을 위하여 사용되는 레코드의 길이를 지정한다. 길이는 다음과 같은 값을 가질 수 있다.
- S : S= SAS 시스템 옵션의 현재 설정과 같도록 S2를 설정한다.
- 0 : 라인이 순차(sequence) 필드를 포함하고 있는지 여부를 정의하기 위하여 SEQ= 시스템 옵션의 설정을 사용하도록 한다. 라인이 순차 필드를 포함하면, SAS는 전체 길이에서 순차 필드를 배제하고 라인 길이를 정의한다.
- n : 파일이 고정길이(fixed-length) 레코드로 구성된 경우에는 데이터를 읽기 위한 라인의 길이로 0보다 큰 숫자를 지정한다. 파일이 가변길이(variable-length) 레코드로 구성된 경우에는 데이터를 읽기 시작하는 컬럼을 n으로 지정한다.
Tip : | %INCLUDE 구문에서 텍스트를 입력하기 위하여 고정 또는 가변 길이를 사용 할 수 있다. - 고정 길이 레코드는 개별 레코드의 끝 부분에서 비순차(unsequenced) 또는 순차(sequenced) 상태를 결정한다. 고정 길이 레코드에서 S2=에 주어진 값이 데이터의 마지막 열이 된다. - 가변 길이 레코드는 개별 레코드의 시작 부분에서 비순차 또는 순차 상태를 결정한다. 가변 길이 레코드에서 S2=에 주어진 값이 데이터의 시작 열이 된다. |
영향 : | S2=시스템 옵션은 %INCLUDE 구문에 의해 호출되는 2차 소스 문장의 길이를 지정하며, SAS 세션이 유지되는 동안에 유효하다. %INCLUDE 구문의 S2= 옵션은 현재 호출된 작업에만 유효하다. %INCLUDE 구문에서 옵션을 지정하면, 호출된 작업이 진행하는 동안에 시스템 옵션 설정을 제어한다. |
관련사항 | 고정길이와 가변길이의 입력 레코드에 대한 상세한 내용은S= 와 S2= 시스템 옵션을 참조 |
운영 환경 정보 : 운영 환경은 %INCLUDE 구문에 대한 다양한 옵션을 지원한다.
3. 범 주
프로그램 제어
4. 상세 설명
%INCLUDE 구문의 역할
%INCLUDE 구문을 포함하고 있는 프로그램을 실행할 때에, SAS는 %INCLUDE 구문을 사용하여 SAS구문 또는 데이터 라인을 포함하고 있는 SAS 코드를 프로그램으로 호출하여 실행한다.
운영환경정보 : | %INCLUDE 구문의 사용 방식은 운영 환경에 따라 차이가 있다. |
데이터의 3가지 소스
%INCLUDE 구문은 SAS 구문이나 데이터 라인을 호출하기 위한 3가지 방식이 존재한다.
- 외부 파일
- 동일한 SAS Job 또는 세션에서 이전에 입력된 라인
- 키보드에서 입력된 라인
사용 시기
%INCLUDE 구문은 대화식 라인(Interactive line) 모드, 비대화식(Noninteractive) 모드, 배치 모드에서 SAS를 실행하는 경우에 유용하다. 윈도우에서 SAS를 실행하는 경우에도
%INCLUDE 구문을 사용 할 수 있지만, 데이터 라인과 프로그램 문장을 접근하고 해당 라인을 재실행하기 위하여 INCLUDE와 RECALL 명령어(F4)를 사용하는 것이 더 효율적이다.
%INCLUDE 사용 규칙
- - %INCLUDE 구문에서 다수의 소스를 지정 할 수 있으며, 호출되는 여러 소스 유형을 함께 지정 할 수 있다. 하나의 %INCLUDE 구문에서 다중 소스를 지정 할 수 있지만, 개별 소스에 대하여 개별적으로 %INCLUDE 구문을 작성하는 것이 프로그램을 이해하는데 더 효율적이다.
- - %INCLUDE 구문은 구문 경계에서 실행되어야 한다. 즉, SAS 작업의 처음에서 시작하거나, 세미콜론으로 끝나는 다른 문장 바로 뒤에서 시작해야 한다. %INCLUDE 구문은 DATALINES, DATALINES4, CARDS, CARDS4 구문 바로 뒤에 위치할 수 없다. 그러나, 다음 방법 중에 하나를 사용하여 %INCLUDE 구문과 데이터 라인을 호출 할 수 있다.
- 데이터를 포함하는 파일에서 DATALINES, DATALINES4, CARDS, CARDS4 구문을 처음 라인에 작성하라.
- 하나의 파일에는 DATALINES, DATALINES4, CARDS, CARDS4를 작성하고, 다른 파일에 데이터 라인을 작성한다. 그리고, 하나의 %INCLUDE 구문에서 양쪽 소스를 호출하라.
- %INCLUDE 구문으로 호출되는 파일 안에 다른 %INCLUDE 구문이 사용 될 수 있다. 중첩되는 %INCLUDE 구문의 최대 개수는 운영 환경에 따라 달라진다.(메모리 또는 동시에 열릴 수 있는 파일의 수 등)
- %INCLUDE는 전역 문장이고, 전역 문장은 실행문이 아니므로 %INCLUDE 구문은 조건 로직에 사용 될 수 없다.
- 최대 라인의 길이는 32K 바이트이다.
5. 비교 사항
- %INCLUDE 구문은 호출한 문장을 바로 실행한다. INCLUDE명령어는 프로그램 Editor 윈도우에 포함된 라인을 가져오지만, 그것들을 실행 할 수 없다. 실행을 위해서는 SUBMIT명령어를 사용해야 한다.
6. 관련 구문
함수명 | 함수내용 |
%INCLUDE 구문 | 현재 실행중인 SAS 프로그램에서 다른 SAS 프로그래밍 문장, 데이터 라인 또는 양쪽 모두를 호출하여 실행한다. |
%LIST 구문 | 현재 세션에서 입력된 프로그램 라인중에서 특정 라인을 지정하여 출력한다. |
%RUN 구문 | %INCLUDE * 구문 이후의 소스 문장을 종료한다. |
7. 예 제
예제1 : 외부 파일 포함
- 다음 예제는 파일에 프로그램 영역을 저장하고, 나중에 작성하는 프로그램에서 호출하여 사용한다. 먼저 다음 프로그램을 외부(MYFILE)파일에 저장한다.
SAS Statements |
data monthly;
input x y month $;
datalines;
1 1 January
2 2 February
3 3 March
4 4 April
;
다음 프로그램은 외부 파일 MYFILE을 호출하여서, PROC PRINT 구문을 실행하기 전에 데이터 스텝을 실행한다.
SAS Statements |
%include 'MYFILE';
proc print;
run;
- 실제 파일 이름을 직접 작성하기보다는 파일참조자(fileref)를 통하여 파일을 참조하기 위하여, FILENAME 구문(또는 운영환경에 의해 인식되는 명령어)을 사용하여 파일참조자를 할당 할 수 있다.
SAS Statements |
filename in1 'MYFILE';
파일참조자(Fileref) IN1을 사용하여 이후에 MYFILE를 접근 할 수 있다.
SAS Statements |
%inc in1;
- PDS 또는 MACLIB와 같은 디렉토리에 저장되어 있는 파일을 사용하기 원하면, 기억장치를 파일참조자로 할당하고, 파일참조자를 지정하여 사용 할 수 있다. 예를 들어, 다음 FILENAME 구문은 병합저장소에 파일참조자 STORAGE를 할당한다.
SAS Statements |
filename storage
'aggregate-storage-location';
다음 구문을 사용하여 이후에 파일을 호출 할 수 있다.
SAS Statements |
%inc storage(MYFILE);
- 단일 %INCLUDE 구문에서 파일참조자 뒤의 괄호 안에 병합저장소에 저장되어 있는 여러 파일 또는 구성원을 지정하여 접근 할 수 있다. Comma 또는 공백을 사용하여 파일 이름을 구분한다. 다음 %INCLUDE 구문을 참조하라.
SAS Statements |
%inc storage(file-1,file-2,file-3);
- 파일 확장자가 기본 확장자 .SAS가 아닌 경우에, 완전한 파일이름을 인용 부호 안에 작성하라.
SAS Statements |
%inc storage("file-1.txt","file-2.dat","file-3.cat");
예제2 : 이전에 실행된 라인 호출
%INCLUDE 구문은 키보드를 사용하여 다시 입력하는 것과 동일하게 라인 1,5,9~12, 13~16 라인을 다시 실행하도록 한다.
SAS Statements |
%include 1 5 9-12 13:16;
예제3 : 키보드로를 사용하여 입력 문장 추가 작성하기
다음 예제는 SAS 비대화식 모드 또는 대화식 라인모드에서 실행되는 경우에 유효하다
제한사항 : | Microsoft 윈도우 운영 환경에서 확장 편집기를 사용하면, 키보드 엔트리 방식을 사용할 수 없다. |
다음 예제는 PROC PRINT 를 실행하는 경우에 TITLE 구문을 추가로 작성하기 위하여 %INCLUDE 구문을 사용한다.
SAS Statements |
data report;
infile file-specification;
input month $ salesamt $;
run;
proc print;
%include *;
run;
DATA 스텝이 실행되는 경우에, 별표와 함께 사용한 %INCLUDE 은 키보드를 사용하여 추가로 SAS 문장을 입력할 수 있도록 한다. 메시지 창에 다음 내용을 입력하자.
SAS Statements |
where month= 'January';
title 'Data for month of January';
문장을 입력한 후에 이전의 처리를 다시 시작하도록 하기 위하여 %RUN 구문을 사용하라.
%run;
%RUN 구문은 키보드 엔트리(keyboard-entry) 모드를 중지하고, 원래의 프로그램에서 나머지 SAS문장을 실행하도록 한다.
예제4 : 단일 카탈로그에서 %INCLUDE를 사용하여 다수의 엔트리 접근하기
다음 예제는 카탈로그 MYLIB.INCLUDE에 저장되어 있는 3개의 엔트리에서 소스 코드 실행한다. 엔트리 타입이 지정되지 않은 경우에 기본 유형은 CATAMS이다.
SAS Statements |
filename dir catalog 'mylib.include';
%include dir(mem1);
%include dir(mem2);
%include dir(mem3);
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 %RUN 구문 (0) | 2023.05.28 |
---|---|
【SAS Statement】 PUT 구문, 변수이름 지정 출력 방식 (0) | 2023.05.27 |
【SAS Statement】 DO UNTIL 구문 (1) | 2023.05.21 |
【SAS Statement】 X 구문 (0) | 2022.02.08 |
【SAS Statement】 WINDOW 구문 (0) | 2022.02.08 |
댓글