포스팅 목차
o FILENAME 구문
1. 목 적
FILENAME 구문은 SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. 외부 파일에 저장되어 있는 데이터를 읽거나 외부 파일에 출력물을 작성하기 위한 목적으로 운영 환경에서 생성되고 관리되는 외부 파일을 지정한다.
2. 문 법
FILENAME fileref <device-type> 'external-file' <ENCODING='encoding-value'> <options><operating-environment-options>; FILENAME fileref <device-type> <operating-environment-options>; FILENAME fileref CLEAR | _ALL_ CLEAR; FILENAME fileref LIST | _ALL_ LIST; |
1) Fileref
(파일 참조자) 외부 파일을 간단하게 참조하기 위하여 지정한 약칭 참조자이다. 파일 참조자에 외부 파일의 이름을 지정한 후에, SAS 프로그래밍 구문(INFILE, FILE, %INCLUE)이나 외부 파일에 접근하기 위한 다른 명령어 등에서 외부 파일의 위치와 이름을 모두 지정할 필요 없이 간단하게 파일 참조자(Fileref)를 지정하여서 사용할 수 있다.
새로운 파일참조자를 지정하는 경우에는 사용하기 위한 파일 참조자 이름을 지정하고, 현재 지정되어 있는 파일 참조자를 해제하거나 FILENAME 구문을 사용하여 파일 속성을 출력하기 위해서는 FILENAME 구문 또는 운영 환경 명령어를 사용하여서 사전에 할당된 파일 참조자의 이름을 지정하라.
Tip : | 파일참조자와 외부파일 사이의 관계는 SAS 세션이 연결되고 있는 동안이나 또는 다른 FILENAME 구문을 사용하여 관계를 변경하거나 해제 할 때까지 유지된다. 원하는 경우에 수시로 파일에 대한 파일참조자를 변경 할 수 있다. |
2) ‘external-file’
외부파일의 물리적 이름을 지정한다. 파일 참조자에는 하나의 파일을 직접 연결하거나 또는 파일이 저장되어 있는 병합 저장소 (aggregate file storage) 위치를 연결할 수 있다.
운영환경정보 : | 외부 파일의 물리적 이름 지정에 대한 상세한 사항은 운영 환경에 대한 SAS 도움말을 참조하라. |
Tip : | 외부 파일에 파일참조자를 할당하는 경우에 external-file을 지정하라. |
Tip : | 파일참조자에는 하나의 파일 또는 파일이 저장되어 있는 병합저장소 (aggregate file storage) 위치를 연결 할 수 있다. |
3) ENCODING=’encoding-value’
SAS가 외부파일을 읽거나 외부 파일에 작성 하는 경우에 사용하기 위한 인코딩을 지정하라. ENCODING=에 값을 지정하는 것은 외부 파일이 현재 세션 인코딩과는 다른 인코딩으로 구성되어 있다는 것을 표시한다.
외부 파일에서 데이터를 읽는 경우에 SAS는 지정된 인코딩에서 세션 인코딩으로 데이터를 전환한다. 외부 파일에 데이터를 작성 할 경우에는 세션 인코딩에서 지정된 인코딩으로 데이터를 전환한다.
기본값 : | 일반적으로 외부 파일이 세션 인코딩과 같은 인코딩이라고 가정한다. |
주요기능 : | 예제5 : 외부 파일을 읽는 경우에 인코딩 지정하기 예제6 : 데이터를 외부 파일에 작성되는 경우에 인코딩 지정하기 |
4) Device-type
파일참조자가 입력/출력 장치 또는 물리적 파일이 존재하지 않는 위치를 지정하는 경우에 사용되는 디바이스 또는 접근 방법의 유형을 지정한다.
운영환경정보 : | 일부 디바이스를 지정 할 때, 추가 지정자가 필요 할 수 있다. DISK이외의 값을 지정하기 전에 운영 환경에 대한 SAS도움말을 참조하자. 여기서 리스트 것 이외의 추가적인 값이 일부 운영 환경에서 사용 될 수 있다. |
(1) CATALOG
카탈로그 접근 방법을 지정.(FILENAME 구문, CATALOG 접근 방법을 참조)
(2) DISK
장치 유형으로 디스크 드라이브를 지정. 디스크에 존재하는 파일을 파일 참조자로 지정하는 경우에 DISK 옵션이 기본으로 사용된다.
Tip : | 디스크에 존재하는 파일에 대하여 파일참조자를 지정하는 경우에 DISK를 추가로 지정할 필요는 없다. |
(3) DUMMY
실제 디바이스에 대한 읽고 쓰기 작업을 수행하지 않고, 테스트 작업을 수행하는 경우에 사용한다. 디버깅 작업 종료 후 다른 디바이스 유형으로 변경한다.
Tip : | DUMMY는 디버깅 작업 및 테스트 작업에 유용하다. |
(4) EMAIL
이메일을 보낼 수 있는 이메일 시스템 접근 방법을 지정. (FILENAME 구문, EMAIL (SMTP) 접근 방법을 참조)
(5) FTP
FTP 프로토콜에 존재하는 원격 파일 접근 방법을 지정. (FILENAME 구문, FTP 접근 방법을 참조)
(6) PIPE
이름이 지정되지 않은 파이프를 지정한다.
참고 : | 일부 운영 환경에서는 지원되지 않는다. |
(7) TEMP
파일참조자가 지정된 동안에만 존재하는 임시 파일을 생성한다. 임시 파일은 논리적 이름을 통하여 접근할 수 있고, 논리적 이름이 존재하는 동안에만 사용된다. 이 경우에 물리적 경로를 지정하면 에러가 발생한다.
제한사항 : | 일부 운영 환경에서는 지원되지 않는다. 물리적 경로명을 지정하면 안되고, 만약 물리적 경로명을 지정하면 SAS는 에러를 생성한다. |
Tip : | TEMP 디바이스에 의해 처리되는 파일들은 동일한 속성을 가지며, DISK 파일과 동일하게 작동한다. |
(8) TERMINAL
사용자의 터미널을 지정
5) CLEAR
현재 할당되어 있는 하나 이상의 파일참조자(fileref)의 연결을 취소한다. 하나의 파일 참조자의 연결을 취소하기 위해서는 해당 파일 참조자의 이름(fileref)과 CLEAR 옵션을 지정하고, 현재 세션에 존재하는 모든 파일 참조자의 연결을 해제하기 위해서는 _ALL_과 CLEAR옵션을 함께 지정하라.
Tip : | 하나의 파일참조자를 해제하기 위하여 파일참조자 이름을 지정하라. 현재 세션에서 존재하는 모든 파일참조자를 해제하기 위하여 _ALL_를 지정하라. |
6) _ALL_
현재 할당되어 있는 모든 파일참조자의 연결에 대하여 CLEAR 또는 LIST 인수가 적용되도록 지정한다.
7) LIST
하나 이상의 파일 속성을 SAS 로그에 작성한다. 단일 파일의 속성을 출력하기 위하여 해당 파일 참조자(fileref)와 LIST 옵션을 지정하고, 현재 세션에서 할당되어 있는 파일 참조자에 연결되어 있는 모든 파일 속성을 출력하기 위하여 _ALL_과 LIST 옵션을 함께 지정하라.
영향 : | 단일 파일의 속성을 출력하기 위하여 파일참조자를 지정하고, 현재 세션에서 파일참조자가 소유한 모든 파일 속성을 출력하기 위하여 _ALL_을 지정하라. |
8) RECFM = record-format
외부 파일의 레코드 형식을 지정하라.
운영환경정보 : | Record-format에 대한 값은 운영 환경에 의존한다. 상세한 사항은 운영 환경 도움말을 참고하라. |
3. 범 주
SAS 기본 구문 (데이터 접근)
4. 상세 설명
운영 환경 정보
운영 환경 정보 : FILENAME 구문을 사용하는 경우에 운영 환경 지정자에 관한 정보가 필요 할 수 있다. 이 구문을 사용하기 전에 운영 환경에 대한 SAS 도움말을 참조하라. 파일참조자와 파일을 연결하거나 취소하는 명령어가 일부 운영 환경에서 지원 될 수 있다.
정의
- External file
외부 파일에 저장되어 있는 데이터, SAS 프로그래밍 구문, 자동 호출 매크로를 읽거나 외부 파일에 출력물을 작성하기 위한 목적으로 운영 환경에서 생성되고 관리되는 외부 파일을 지정한다. 외부 파일에는 단일 파일 또는 다수의 외부 파일이 존재하는 병합저장소(Aggregate storage location)를 지정 할 수 있다.
- Fileref
(파일 참조자) 외부 파일을 참조하기 위한 약칭 참조자이다. 파일참조자와 외부 파일을 연결한 후에, SAS 프로그래밍 구문(INFILE, FILE, %INCLUE), 외부 파일에 접근하기 위한 다른 명령어 등에서 외부 파일에 대한 약칭 참조자로 Fileref를 사용 할 수 있다.
외부파일에서 구분된 데이터 읽기
로컬(Local) 인코딩 환경과는 다른 곳에서 텍스트 파일을 구성 할 때, EBCDIC 또는 ASCII 환경에서 ENCODING= 옵션이 필요 할 수 있다.
예를 들어, ASCII 플랫폼에서 EBCDIC 텍스트 파일을 읽을 때, FILENAME 구문에서 ENCODING= 옵션을 지정하는 것이 권장된다. 그러나, FILENAME 구문에서 DSD 옵션과 DLM옵션을 사용하면, 세션 인코딩에서 이 옵션은 특정 문자(인용부호, 콤마, 공백)를 사용하기 때문에 ENCODING= 옵션이 필수적으로 요구된다.
- 1. 파일참조자(FILEREF)와 외부 파일 연결
파일참조자와 디스크에 위치하고 있는 외부 파일을 연결하기 위하여 FILENAME 구문에서 다음 형태를 사용하자.
문법 : | FILENAME fileref 'external-file' <operating-environment-options>; |
파일참조자와 디스크 파일 이외의 파일을 연결하기 위하여, 다음 형태와 같이, 운영 환경에 의존하는 디바이스 형태를 지정할 필요가 있다.
문법 : | FILENAME fileref <device-type> <operating-environment-options>; |
파일참조자와 외부파일 사이의 관계는 SAS 세션이 연결되고 있는 동안이나 또는 다른 FILENAME 구문을 사용하여 관계를 변경하거나 해제 할 때까지 유지된다. 원하는 경우에 수시로 파일에 대한 파일참조자를 변경 할 수 있다.
문자 세트 인코딩을 지정하기 위하여 다음 형태를 사용하자.
문법 : | FILENAME fileref <device-type> <operating-environment-options>; |
- 2. 파일참조자와 터미널, 프린터, 범용 프린터, Plotter 연결하기
파일참조자와 출력 디바이스 연결을 위하여 다음 형태를 사용하자.
문법 : | FILENAME fileref device-type <operating-environment-options>; |
- 3. 외부 파일을 참조하는 파일참조자 해제하기
파일에 지정되어 있는 파일참조자를 해제하기 위하여, FILENAME 구문에서 파일참조자와 CLEAR옵션을 사용하라.
- 4. SAS로그에 파일 속성 작성
SAS로그에 다수의 외부 파일 속성을 출력하기 위하여 FILENAME 구문을 사용하라. 하나의 파일 속성을 출력하기 위하여 파일참조자를 직접 지정하고, 현재 SAS세션에 할당된 파일참조자에 포함되어 있는 모든 파일 속성을 출력하기 위하여 _ALL_ 옵션을 사용하라.
문법 : | FILENAME fileref LIST | _ALL_ LIST; |
5. 비교 사항
- FILENAME 구문은 외부파일에 파일참조자를 지정한다. LIBNAME 구문은 SAS 데이터 세트 또는 SAS 데이터 세트와 유사하게 접근 할 수 있는 DBMS 파일에 라이브러리 참조자를 지정한다.
6. 관련 구문 및 SAS 명령어
구문명 | 구문 내용 |
FILENAME 구문 | SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. |
FILENAME 구문, CATALOG 접근 방법 | SAS 파일참조자(fileref)가 SAS 카탈로그를 참조하도록 지정한다. 외부 파일에 접근하는 방식과 유사하게 SAS 명령어, SAS 문장, 프로시져를 사용하여 SAS 카탈로그에 접근할 수 있다. 이 접근 방법은 SAS 카탈로그에 존재하는 자동 호출 매크로를 직접 호출할 수 있다. |
FILENAME 구문, CLIPBOARD 접근 방법 |
HOST 컴퓨터의 클립보드에서 데이터를 읽고, 반대로 클립보드에 데이터를 작성한다. 동일하게 마우스를 사용하여서 탐색기의 Pop-up 메뉴에서 “클립보드에 복사”(Copy contents to Clipboard)를 사용하여 데이터를 클립보드에 복사할 수 있다.(Ctrl+C / Ctrl+V) |
FILENAME 구문, EMAIL(SMTP) 접근 방법 | 간이 전자 이메일 전송 프로토콜(Simple Mail Transfer Protocol, SMTP) 인터페이스를 사용하여 SAS 프로그래밍 구문에서 전자 메일을 전송한다. |
FILENAME 구문, FTP 접근 방법 | FTP 프로토콜(protocol)을 사용하여 원격(remote) 파일에 접근하여서 파일 다운로드와 업로드 작업을 수행할 수 있다. |
FILENAME 구문, SOCKET 접근 방법 | |
FILENAME 구문, SFTP 접근 방법 | SFTP 프로토콜을 사용하여 원격(remote) 파일에 접근하여서 파일 다운로드와 업로드 작업을 수행할 수 있다. |
FILENAME 구문, URL 접근 방법 | URL 접근 방법을 사용하여 원격(remote) 파일에 접근하여 작업을 수행할 수 있다. |
- FILE 구문
- %INCLUDE 구문
- INFILE 구문
- FILENAME 구문, CATALOG 접근 방법
- FILENAME 구문, EMAIL(SMTP) 접근 방법
- FILENAME 구문, FTP 접근 방법
- FILENAME 구문, SFTP 접근 방법
- FILENAME 구문, SOCKET 접근 방법
- FILENAME 구문, URL 접근 방법
- FILE 과 INCLUDE 윈도우 명령어
7. 예 제
예제1 : 파일 참조자 또는 물리적 파일이름 지정
Filename 구문에서 파일 참조자와 파일의 관계를 지정한 후에 데이터 구문에서 파일참조자를 참조하여 사용하거나, 인용부호 안에 물리적 파일명을 직접 지정하여서 외부 파일을 지정 할 수 있다.
SAS Statements |
filename sales 'your-input-file';
data jansales;
/* 파일 참조자 사용 */
infile sales;
input salesrep $20. +6 jansales febsales
marsales;
run;
data jansales;
/* 물리적 파일을 직접 지정 */
infile 'your-input-file';
input salesrep $20. +6 jansales febsales
marsales;
run;
예제2 : FILENAME과 LIBNAME 구문 사용하기
다음 예제는 파일참조자 GREEN을 사용하여서 지정된 파일로부터 데이터를 읽고, 라이브러리 참조자 SAVE를 사용하여서 지정된 SAS 라이브러리에 저장되는 SAS 데이터 세트를 생성한다.
SAS Statements |
filename green 'your-input-file';
libname save 'SAS-library';
data save.vegetable;
infile green;
input lettuce cabbage broccoli;
run;
예제3 : 파일참조자와 병합 저장소(Aggregate Storage location)
파일참조자와 병합저장소를 연결하면, 저장소에 저장된 개별 외부 파일을 읽고 쓰기 위하여 “파일참조자(개별 파일이름)” 형태로 지정하라.
운영 환경 정보 : 일부 운영 환경은 병합저장소(Aggregate storage location)의 구성원을 읽는 것은 허용하지만, 구성원을 작성하는 것은 허용하지 않을 수 있다. 자세한 내용은 참조.
다음 예제에서 각 데이터 스텝은 파일참조자 SALES를 사용하여 동일한 병합저장소에 저장되어 있는 외부 파일(Region1과 Region2 개별적으로)을 읽는다.
SAS Statements |
filename sales 'aggregate-storage-location';
data total1;
infile sales(region1);
input machine $ jansales febsales marsales;
totsale=jansales+febsales+marsales;
run;
data total2;
infile sales(region2);
input machine $ jansales febsales marsales;
totsale=jansales+febsales+marsales;
run;
예제4 : PUT 구문에 대한 출력 전환
다음 예제에서, FILENAME 구문은 파일참조자 OUT과 운영 환경 옵션을 사용하여서 지정된 프린터를 연결한다. FILE 구문은 PUT 구문에 대한 출력 결과가 프린터로 출력되도록 지시한다.
SAS Statements |
filename out printer operating-environment-option;
data sales;
file out print;
input salesrep $20. +6 jansales
febsales marsales;
put _infile_;
datalines;
Jones, E. A. 124357 155321 167895
Lee, C. R. 111245 127564 143255
Desmond, R. T. 97631 101345 117865
;
PUT 구문 출력을 동일 세션이 지속되는 동안에 여러 디바이스로 전환하기 위하여 FILENAME 구문과 FILE 구문을 사용 할 수 있다. PUT 구문 출력을 Display 모니터로 전환하기 위하여, 다음과 같이 FILENAME 구문에서 TERMINAL옵션을 사용하라.
SAS Statements |
filename show terminal;
data sales;
file show;
input salesrep $20. +6 jansales
febsales marsales;
put _infile_;
datalines;
Jones, E. A. 124357 155321 167895
Lee, C. R. 111245 127564 143255
Desmond, R. T. 97631 101345 117865
;
예제5 : 외부 파일을 읽는 경우에 인코딩 지정하기
다음 예제는 외부 파일을 읽어서 SAS 데이터 세트를 생성한다. 외부 파일은 UTF-8 문자 세트 인코딩으로 존재하고 있으며, 현재 SAS세션은 Wlatin1 인코딩으로 존재한다. 기본적으로, SAS는 외부 파일이 세션 인코딩과 동일한 인코딩으로 존재한다고 가정하여 처리한다. 이로 인하여 문자 데이터가 새로운 SAS 데이터 세트에 잘못 작성된다.
외부 파일을 읽을 경우에 사용하기 위한 인코딩을 지정하기 위하여 ENCODING=옵션을 사용하라. 외부 파일의 인코딩이 UTF-8이라고 지정하여서, 데이터를 새로운 데이터 세트에 작성하는 경우에 인코딩을 외부 파일의 인코딩 UTF-8에서 현재 세션 인코딩으로 변경하여 생성한다. 그 결과 데이터가 새로운 데이터 세트에 Wlatin1 인코딩으로 작성된다.
SAS Statements |
libname myfiles 'SAS-library';
filename extfile 'external-file' encoding="utf-8";
data myfiles.unicode;
infile extfile;
input Make $ Model $ Year;
run;
예제6 : 데이터를 외부 파일에 작성되는 경우에 인코딩 지정하기
다음 예제는 SAS데이터 세트를 사용하여 외부 파일을 생성한다. 현재 세션 인코딩은 Wlatin1이지만 외부 파일의 인코딩은 UTF-8으로 저장하기를 원한다. 기본적으로 SAS는 현재 세션 인코딩을 사용하여 외부 파일을 작성한다.
외부 파일에 데이터를 작성하기 위하여 사용 할 인코딩을 지정하기 위하여 ENCODING=옵션을 사용하라. 외부 파일을 UTF-8 인코딩으로 저장하도록 지정하면, SAS는 외부파일에 데이터를 작성하는 경우에 인코딩을 Wlatin1에서 지정된 UTF-8 인코딩으로 전환하여 생성한다.
SAS Statements |
libname myfiles 'SAS-library';
filename outfile 'external-file' encoding="utf-8";
data _null_;
set myfiles.cars;
file outfile;
put Make Model Year;
run;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 FILENAME 구문, EMAIL (SMTP) 접근 방법 (0) | 2022.01.29 |
---|---|
【SAS Statement】 FILENAME 구문, CLIPBOARD 접근 방법 (0) | 2022.01.29 |
【SAS Statement】 FILE 구문 (0) | 2022.01.28 |
【SAS Statement】 EXECUTE 구문 (0) | 2022.01.28 |
【SAS Statement】 ERROR 구문 (0) | 2022.01.28 |
댓글