포스팅 목차
o FILE 구문
1. 목 적
FILE 구문은 PUT 구문에서 사용되는 출력 대상 파일의 이름을 지정한다. 일반적으로 PUT 구문은 SAS 로그에 출력하지만, FILE 구문을 사용하여서 외부 파일에 출력할 수 있다. 단일 데이터 스텝에서 다수의 외부 파일에 작성하기 위하여 다중 FILE 구문을 사용할 수도 있다.
2. 문 법
FILE file-specification ; |
1. File-specification
DATA 스텝에서 PUT 구문을 사용하여서 출력하기 위한 외부 파일을 지정한다. File-specification의 형태는 다음과 같다.
1) ‘external-file’
출력하기 위한 외부 파일의 물리적 이름을 지정하라. 운영 환경이 인식하는 파일 이름을 지정해야 한다.
2) Fileref
외부 파일을 참조하고 있는 파일 참조자(fileref)를 지정하라. 파일 참조자는 사전에 먼저 FILENAME 구문이나 FILENAME 함수 등을 사용하여서 외부 파일을 지정해야 한다.
프로그램 실행 중에 파일참조자를 할당하려면 FILEVAR= 옵션을 사용하는데, 이때의 파일 참조자(fileref)는 단순한 위치 표시자 역할로 사용된다.
요구사항 : | 사전에 먼저 FILENAME 구문이나 함수 또는 적당한 운영환경 명령어를 사용하여서 파일참조자에 외부파일을 설정해야 한다. 이 규칙에 대한 한가지 예외 규칙은 FILEVAR=옵션을 사용 할 때, 파일참조자(fileref)는 단순한 위치표시자로 사용된다. |
3) Fileref(file)
외부 파일이 위치하고 있는 병합 저장소(윈도 환경에서 디렉터리)의 위치를 참조하는 파일 참조자를 지정하고, 파일 참조자 뒤에 개별 파일의 이름을 인용부호를 사용하여서 지정한다. 파일 참조자에는 사전에 FILENAME 구문이나 함수 등을 사용하여서 해당 디렉터리를 지정해야 한다.
참고 : | 병합저장소(Aggregate storage location)에 존재하는 파일 이름이나 유효하지 않은 SAS 이름으로 구성된 파일 이름은 인용부호 안에 작성해야 한다. |
요구사항 : | 사전에 FILENAME 구문이나 함수 또는 적당한 운영환경 명령어를 사용하여 외부파일과 파일참조자의 관계를 지정해야 한다. |
관련사항 : | FILENAME 구문 |
4) LOG
PUT 구문에서 생성되는 출력물을 SAS 로그로 출력하도록 지정하는 파일 참조 자이다. 기본적으로 데이터 스텝에서 PUT 구문은 SAS 로그에 작성된다.
프로그램이 시작되면서 PUT 구문이 작성 될 곳을 지시하는 파일참조자는 자동적으로 LOG로 설정된다. 그러므로, 다른 곳으로 출력하기 위하여 사전에 별도 FILE 구문을 작성하지 않으면, 데이터 스텝에서 처음 PUT 구문은 항상 SAS 로그에 작성된다.
Tip : | 출력물 라인은 기본적으로 SAS 로그에 작성되기 때문에, LOG로 출력 작업을 다시 복원하기 원하거나 추가적으로FILE 구문 옵션을 지정을 위하여 FILE LOG 구문을 사용하자. |
5) PRINT
PUT 구문에서 생성되는 출력 내용이 출력 윈도우에 출력되도록 지정하는 파일 참조자이다.
SAS 프로시져에 의해 생성되는 결과물이 출력 윈도우에 출력되는 것과 유사하게 PUT 구문에 의해 생성되는 출력 내용이 출력 윈도우에 출력 되도록 지정하기 위하여 예약된 파일 참조자이다.
영향 : | 파일에 작성할 때에, N=옵션의 값은 1 또는 PAGESIZE로 지정해야 한다. |
Tip : | 파일참조자로 PRINT를 지정한 경우에, SAS는 카드제어(carriage-control) 문자를 사용하며, 출력 파일의 특성에 따라 출력물을 작성한다. |
운영환경정보 : | 파일에 작성되는 카드 제어 문자는 운영 환경에 따라 다를 수 있다. 상세한 정보는 운영 환경에 대한 SAS 도움말을 참조. |
Tip : | 만약 file-specification에 지정된 디렉토리 안에 파일이 존재하지 않으면, SAS는 파일을 생성한다. File-specification에 지정된 디렉토리가 존재하지 않는 경우에, ERRORECHECK 옵션이 STRICT로 설정되어 있으면, SYSERR 매크로 변수를 사용하여 file-specification의 존재 여부를 확인 할 수 있다. |
2. Device-type
파일 참조자로 입출력 장치 또는 물리적 파일이 존재하지 않는 위치를 지정하는 경우에 사용되는 장치 유형 또는 접근 방법을 지정하라.
별칭 : | DEVICE= |
필요사항 : | device-type은 물리적 경로 오른쪽에 작성되어야 한다. DEVICE=device-type은 문장 어디서나 작성 될 수 있다. |
운영환경정보 : | 일부 디바이스를 지정 할 때, 추가 지정자가 필요 할 수 있다. DISK 이외의 값을 지정하기 전에 운영 환경에 대한 SAS도움말을 참조하자. 여기서 리스트 된 것 이외의 추가적인 값이 일부 운영 환경에서 사용 될 수 있다. |
1) CATALOG :
카탈로그 접근 방법을 지정. (FILENAME 구문, CATALOG 접근 방법을 참조)
Tip : | 디스크에 존재하는 파일에 대하여 파일참조자를 지정하는 경우에 DISK를 추가로 지정할 필요는 없다. |
2) CLIPBOARD :
클립보드 접근 방법을 지정.(FILENAME 구문, CLIPBOARD 접근 방법을 참조)
3) DISK :
장치 유형으로 디스크 드라이브를 지정. 디스크에 존재하는 파일을 파일 참조자로 지정하는 경우에 DISK 옵션이 기본으로 사용된다.
4) DUMMY :
실제 디바이스 장치에 대한 입출력 작업을 수행하지 않고, 테스트 작업을 수행하는 경우에 사용한다.
Tip : | DUMMY는 디버깅 작업 및 테스트 작업에 유용하다. |
5) FTP :
FTP 접근 방법을 지정.(FILENAME 구문, FTP 접근 방법을 참조)
6) PIPE :
이름이 지정되지 않은 파이프 기능을 지정한다.
참고 : | 일부 운영 환경에서는 지원되지 않는다. |
7) TEMP :
파일 참조자가 지정된 동안에만 존재하는 임시 파일을 생성한다. 임시 파일은 논리적 이름을 통하여 접근이 가능하고, 논리적 이름이 존재하는 동안에만 사용된다. 이 경우에 물리적 경로를 지정하면 에러가 발생한다.
제한사항 : | 물리적 경로를 지정하면 안된다. 만약 물리적 경로를 지정하면, SAS는 에러를 생성한다. |
Tip : | TEMP 디바이스에 의해 처리되는 파일들은 동일한 속성을 가지며, DISK 파일과 동일하게 작동한다. |
3. 옵션
1) BLKSIZE=block-size
출력 파일의 블록 크기를 지정한다.
기본사항 : | 운영환경에 따라 다르다. 운영환경정보 : 자세한 사항은 운영 환경에 대한 SAS 도움말에서 FILE 구문을 참조하라. |
2) COLUMN=variable
출력 포인터의 현재 열 위치를 저장하는 변수의 이름을 지정하라. 이 변수는 데이터 세트에 자동으로 출력되지 않는다.
3) DELIMITER = delimiter(s) (별칭 : DLM= / 기본 구분자 : 공백)
목록 출력 방식에서 기본적으로 공백 구분자를 사용하지만, 공백 대신에 사용하기 위한 대체 구분자를 지정하라. 비록 문자열 또는 문자 변수를 사용할 수 있지만, 문자열 또는 변수의 첫 번째 문자를 출력 구분자로 사용한다. 구분자가 포함된 데이터를 출력하기 위하여 DSD(delimiter sensitive data) 옵션을 사용해야 한다.
- 'list-of-delimiting-characters'
구분자로 사용하기 위한 하나 이상의 문자를 지정하라.
- Character-variable
관측값이 구분자로 사용되는 문자 변수를 지정하라.
별칭 : | DLM= |
기본값 : | 공백 |
제한사항 : | 비록 문자열 또는 문자 변수가 허용 될 지라도, 문자열 또는 변수의 첫 번째 문자를 출력 구분자로 사용한다. FILE DLM=처리와 INFILE DELIMITER=처리에는 차이가 있다. |
영향 : | 구분자가 포함된 데이터를 출력하기 위하여 DSD(delimiter sensitive data) 옵션을 사용하라. |
Tip : | DELIMITER= 는 colon(:) 수정자와 함께 사용 될 수 있다.(수정된 목록 출력 방식) |
Tip : | 구분자는 대소문자를 구분한다. |
관련사항 : | DLMSTR=, DSD(delimiter sensitive data) |
4) DLMSTR=delimiter
목록 출력을 위해 사용되는 대체 구분자로 문자열을 지정한다. 기본 구분자는 공백이다.
- ‘delimiting-string’
구분자로 사용하기 위한 문자열을 지정하라.
필요사항 : | 인용부호 안에 문자열을 작성하라. |
- Character-variable
구분자로 사용하기 위한 문자 변수를 지정하라.
기본값 : | 공백 |
영향 : | FILE 구문에 다수의 DLMSTR= 옵션을 지정하면, 마지막에 지정된 DLMSTR=옵션을 사용한다. DELIMITER= 과 DLMSTR= 양쪽을 지정하면, 마지막에 지정된 옵션을 사용한다. |
영향 : | RECFM=N 이 지정되면, 가장 큰 입력 항목을 오류 없이 출력하기 위하여 LRECL을 충분히 크게 지정하라. 충분하게 지정하지 않으면, 출력물이 레코드 경계를 경유하여 분할되어 출력 될 수 있다. |
관련사항 : | DELIMITER=, DLMSOPT=, DSD (delimiter sensitive data) |
5) DLMSOPT=’T’|’t’
DLMSTR= 옵션에서 지정한 문자열 구분자의 뒷부분 공백을 제거한다.
필요사항 : | DLMSOPT=T 옵션은 DLMSTR=옵션과 함께 사용된다. |
Tip : | DLMSOPT=T 옵션은 변수를 구분 문자열로 사용하는 경우에 유용하다. |
관련사항 : | DLMSTR= |
6) DROPOVER
FILE 구문의 LINESIZE= 또는 LRECL=옵션을 사용하여 지정한 출력 라인 길이를 초과하는 데이터 항목을 출력하지 않는다.
기본적으로 FLOWOVER 옵션에서는 현재 라인 길이를 초과하는 데이터는 새로운 라인에 작성하지만, DROPOVER 옵션이 지정된 경우에 현재 라인에 데이터를 작성하기 위한 충분한 공간이 존재하지 않으면 전체 항목을 출력하지 않는다. 전체 항목이 출력되지 않은 경우에, 열 포인터는 현재 라인에서 마지막 관측치를 작성한 이후에 위치한 곳에서 대기하고 있는다. 그다음에, 만약 다른 데이터 항목이 나머지 공간에 적합하거나 열 포인터가 재배치되면, PUT 구문은 현재 출력 라인에 다른 데이터 항목을 작성할 수 있다. 데이터 스텝의 마지막 부분에서 데이터 손실에 대한 메시지가 LOG에 출력된다.
기본값 : | FLOWOVER |
상세설명 : | 기본적으로, 현재 라인 길이를 초과하는 데이터는 새로운 라인에 작성된다. 그러나, DROPOVER 옵션이 지정된 경우에 현재 라인에 데이터를 작성하기 위한 충분한 공간이 존재하지 않으면 전체 항목을 출력하지 않도록 한다. 전체 항목이 출력 되지 않은 경우에, 열 포인터는 현재 라인에서 마지막 관측치를 작성한 이후에 위치한 곳에서 유지된다. 그 다음에, 만약 다른 데이터 항목이 나머지 공간에 적합하거나 열 포인터가 재배치 되면, PUT 구문은 현재 출력 라인에 다른 데이터 항목을 작성 할 수 있다. 즉, 출력 라인 길이를 초과하는 해당 데이터 항목을 출력 작업을 수행하지 않은 다음에, 이후 데이터에 대하여 정상적인 실행을 계속 처리한다. (_ERROR_=0). 데이터 스텝의 마지막 부분에서 데이터 손실에 대한 메시지가 LOG에 출력된다 |
Tip : | 기본적으로 PUT 구문은 현재 라인 길이를 지나서 작성하려고 시도하지만, 라인 길이를 초과하는 데이터 항목이 새로운 라인에 쓰이는 것을 원하지 않는 경우에, 해당 항목에 대하여 데이터 스텝이 계속 실행되는 것을 중지하기 위하여 DROPOVER 옵션을 사용하라. |
관련사항 : | FLOWOVER과 STOPOVER |
7) DSD(delimiter sensitive data)
탭 또는 쉼표와 같은 구분자를 포함하는 데이터 값이 인용부호 안에 위치하여 출력되도록 지정한다. DSD 옵션은 목록 출력 방식에서 구분자가 포함된 데이터 값이 출력 가능하도록 한다. 다른 출력 형식에서는 DSD 옵션이 사용되지 않는다. 데이터 값에 포함된 이중 인용부호는 반복해서 출력된다.
구분자를 포함하지 않은 데이터 값을 출력하는 경우에는 인용 부호 안에 작성하지 않지만, tilde(~) 수정자를 사용하면 데이터(결측 값 데이터 포함) 값을 인용부호 안에 출력한다.
DSD 옵션에서 기본 구분자는 쉼표(,)가 사용되고, 쉼표 이외의 구분자를 사용하기 위하여 DELIMITER= 또는 DLMSTR=을 지정하라.
영향 : | DSD 옵션을 지정하면, 기본 구분자는 쉼표(,)가 사용된다. 쉼표(,)와 다른 구분자를 사용하기 위하여 DELIMITER= 또는 DLMSTR=을 지정하라. |
Tip : | 기본적으로 구분자가 포함되지 않은 데이터 값을 출력하는 경우에는 인용 부호 안에 작성되지 않는다. 그러나, 구분자가 포함되지 않은 데이터(결측값 데이터 포함) 값을 출력하면서 인용부호 안에 작성하기 위하여 tilde(~) 수정자를 사용하라. |
관련사항 : | DELIMITER=, DLMSTR= |
8) ENCODING=’encoding-value’
출력 파일에 데이터를 작성하면서 사용하기 위한 인코딩(Encoding)을 지정한다.
기본 : | SAS는 기본적으로 현재 세션 인코딩을 사용한다. |
관련사항 : | SAS National Language Support (NLS): Reference Guide 에서 Encoding Values in SAS Language Elements |
주요기능 : | 예제8 : 출력 파일을 작성하면서 인코딩 지정. |
9) FILENAME=variable
PUT 구문에서 지정된 데이터를 출력하기 위하여 지정한 파일의 물리적 이름을 저장하는 문자 변수를 정의한다.
Tip : | 이 변수는 자동 변수처럼 데이터 세트에 작성되지 않는다. |
Tip : | 물리적 파일의 이름이 8문자보다 길면, 물리적 파일의 값을 저장하기 위하여 LENGTH 구문을 사용하여 변수의 길이를 충분하게 정의하라. |
관련사항 : | FILEVAR= |
주요기능 : | 예제4 : 현재 출력 파일을 확인하기 |
10) FILEVAR =variable
출력하기 위한 물리적 파일 경로를 관측치 값으로 포함하고 있는 변수를 지정한다.
FILE 구문은 현재 출력하고 있는 파일을 닫고, 다음으로 출력하기 위한 파일을 열어서 FILE 구문이 실행되도록 작업한다. 다음에 출력하는 PUT 구문이 실행되면 FILEVAR= 변수의 관측치 값이 지정하는 새로운 파일에 데이터가 작성된다. FILEVAR= 옵션을 사용할 때, file-specification은 실제 파일 이름이나 사전에 파일에 할당된 파일 참조자가 아니라 단지 위치 표시자 역할을 수행한다.
제한사항 : | FILEVAR= 변수의 값은 물리적 파일 이름을 포함하는 문자열로 표현된다. |
영향 : | FILEVAR= 옵션을 사용 할 때, file-specification은 실제 파일이름이나 사전에 파일에 할당된 파일참조자가 아니라 단지 위치표시자 역할을 수행한다. 그러나, 파일참조자와 동일한 규칙을 따라야 한다. |
Tip : | 이 변수는 자동변수처럼 데이터 세트에 작성되지 않는다. |
Tip : | 물리적 파일이름이 8문자보다 길면(문자 변수의 기본 길이), LENGTH 구문 또는 INPUT 구문을 사용하여 FILEVAR=변수 길이를 충분히 길게 할당하라. |
관련사항 : | FILENAME= |
주요기능 : | 예제5 . 현재 출력 파일을 동적으로 변경하기 |
11) FLOWOVER
현재 지정된 출력 라인 길이를 초과하는 데이터가 새로운 라인에 작성되도록 한다. PUT 구문이 FILE 구문의 LINESIZE= 또는 LRECL=옵션을 사용하여 지정한 출력 라인 길이를 초과하여 데이터 항목을 출력하는 경우에 현재 출력 라인에 데이터를 작성하고, 현재 라인 길이를 초과하는 데이터 항목은 새로운 라인에 작성한다.
기본값 : | FLOWOVER |
영향 : | 만약 PUT 구문이 후행(trailing) @를 포함하면, 포인터는 작성된 라인의 데이터 항목 뒤에 위치하고, 다음 PUT 구문이 그 라인에서 계속 작성을 한다. 이 프로세스는 해당 입력 데이터 라인의 출력이 종료되거나 후행 @가 없는 PUT 구문이 현재 데이터 라인을 파일에 작성 할 때까지 계속 실행한다. |
관련사항 : | DROPOVER 과 STOPOVER |
12) FOOTNOTES | NOFOOTNOTES
현재 정의된 각주(footnotes)를 출력할지 여부를 관리한다. 기본값은 NOFOOTNOTES이다.
별칭 : | FOOTNOTE | NOFOOTNOTE |
필요사항 : | 데이터 스텝 리포트에 각주를 출력하기 위하여 FILE 구문에 FOOTNOTE 옵션을 설정해야만 한다. |
기본값 | NOFOOTNOTES |
13) HEADER=label
SAS가 새로운 페이지에 출력을 시작할 때마다 실행하기 위한 SAS 문장의 그룹을 식별하는 문장 라벨을 정의한다.
이 그룹의 프로그램이 데이터 스텝에서 개별 반복(Iteration)마다 실행되는 것을 제어하려면 2개의 RETURN 구문을 작성하라. 첫 번째 RETURN 구문을 label 구문 앞에 작성하고, 두 번째 RETURN 구문은 그룹의 마지막 문장에 작성해야 한다.
제한사항 : | LABEL 뒤의 첫 번째 문장은 실행 문장이어야 하고, 그 다음에 SAS 문장을 작성 할 수 있다. |
제한사항: | 단지 파일을 출력하기 위하여 프로그램을 작성 할 때에 HEADER= 옵션을 사용하라. |
Tip : | 데이터 스텝에서 개별 반복(Iteration)을 실행 할 때 마다 이 그룹의 프로그램이 실행되지 않도록 하기 위하여 2개의 RETURN 구문을 작성하라. 첫 번째 RETURN 구문을 label 구문 앞에 작성하고, 두 번째 RETURN 구문은 그룹의 마지막 문장에 작성하라. |
주요기능 : | 예제1 : 새로운 페이지를 시작하는 경우에 구문 단위로 실행하기 |
14) LINE=variable
출력되는 라인의 그룹 범위 내에서 출력 포인터의 상대적 라인 위치(행 번호)를 저장하는 변수의 이름을 지정한다. 범위는 1부터 N=옵션에 의해 지정된 값 또는 #n 라인 포인터 조절자에 지정된 값까지이다. 둘 중에 어느 값도 지정되지 않으면 LINE=변수의 값은 1이 사용된다.
범위 : | 범위는 1부터 N=옵션에 의해 지정된 값 또는 #n 라인 포인터 조절자에 지정된 값까지 이다. 둘 중에 어느 값도 지정되지 않으면 LINE=변수는 1을 값으로 사용한다. |
Tip : | 이 변수는 자동변수처럼 데이터 세트에 작성되지 않는다. |
Tip : | LINE=변수의 값은 PUT 구문 실행의 마지막 부분에서 다음 차례에 출력되는 라인의 번호로 변경되어 설정된다. |
15) LINESIZE=line-size (별칭 : LS=)
보고서의 행에서 출력 가능한 최대 열의 길이와 데이터 파일의 최대 레코드 길이를 설정한다.
LINESIZE= 옵션의 기본값은 다음 두 가지 옵션 중에 하나로 결정된다.
- 카드 제어(Carriage-control) 문자가 포함된 파일에 작성하거나 SAS log에 작성하는 경우에 LINESIZE= 시스템 옵션
- 파일을 작성하는 경우에 FILE 구문의 LRECL= 옵션
PUT 구문이 LINESIZE=옵션에 의해 지정된 값보다 더 긴 라인을 작성하려고 시도하는 경우에, 수행되는 작업은 FLOWOVER, DROPOVER, STOPOVER 중에서 적용되는 옵션에 따라 다른 작업 결과를 산출한다. 기본적으로(FLOWOVER 옵션) SAS는 데이터를 두 개 이상의 레코드에 분리하여 작성한다.
별칭 : | LS= |
기본 : | 기본적인 LINESIZE= 값은 다음 두 가지 옵션 중에 하나로 결정된다. - 카드제어(Carriage-control) 문자가 포함된 파일에 작성하거나 SAS log에 작성하는 경우에 LINESIZE= 시스템 옵션 - 파일을 작성 할 때 FILE 구문의 LRECL= 옵션 |
범위 : | 범위는 64부터 운영 환경에서 허용된 최대 논리 레코드 길이 운영 환경 정보 : LINESIZE 에 허용되는 최대 값은 운영 환경에 따라 정해진다. |
영향 : | PUT 구문이 LINESIZE=옵션에 의해 지정된 값 보다 더 긴 라인을 작성하려고 시도하는 경우에, 수행되는 작업은 FLOWOVER, DROPOVER, STOPOVER중에서 적용되는 옵션에 따라 다른 작업 결과를 산출한다. 기본적으로(FLOWOVER 옵션) SAS는 데이터를 두 개 이상의 레코드에 분리하여 작성한다. |
비교사항 : | LINESIZE= 옵션은 사용하기 위한 열의 개수를 지정하고, LRECL=은 파일의 논리 레코드 길이를 지정한다. |
관련사항 : | LRECL=, DROPOVER, FLOWOVER, STOPOVER |
주요기능 : | 예제6 : 출력 라인이 출력 파일의 라인 길이를 초과 할 때 |
16) LINESLEFT=variable (별칭 : LL=)
현재 페이지에서 남아있는 라인의 개수를 데이터 값으로 저장하는 변수 이름을 정의한다. SAS는 현재 페이지에서 남아 있는 출력 가능한 라인의 개수를 변수에 할당한다.
별칭 : | LL= |
Tip : | 이 변수는 자동변수처럼 데이터 세트에 작성되지 않는다. |
주요기능 : | 예제 2 : 개별 페이지에서 지정한 라인 이외의 나머지 라인을 새로운 페이지에 작성 |
17) LRECL = logical-record-lengh
출력 파일의 논리 레코드 길이를 지정한다. LINESIZE= 옵션은 데이터 출력에 사용되는 행의 개수를 지정하고, LRECL=은 파일의 논리 레코드 길이를 지정한다.
운영환경정보 : | logical-record-length의 값은 운영 환경에 따라 다르다. |
기본 : | LRECL= 옵션을 생략하면, SAS는 운영환경의 파일 특성에 따라 값을 설정한다. |
비교사항 : | LINESIZE= 옵션은 사용하기 위한 열의 개수를 지정하고, LRECL=은 파일의 논리 레코드 길이를 지정한다. |
영향 | 대안적으로, LRECL=옵션을 사용하여 전역 논리 레코드 길이를 지정 할 수 있다. |
관련사항 : | LINESIZE=, PAD, PAGESIZE= |
18) MOD (기본값 : OLD)
기존에 존재하는 출력 파일의 데이터 라인 뒤에 출력 라인을 추가하여 작성한다.
기본값 : | OLD |
제한사항 : | MOD옵션은 모든 운영 환경에서 적용되지는 않는다. 운영환경정보 : 상세한 사항은 운영 환경에 대한 SAS 도움말 참조. |
제한사항 : | 기본 목록대상(Destination-전형적인 SAS 출력물) 이외의 ODS 대상(Destination)과 MOD 옵션을 함께 사용하는 경우에는 예상하지 못한 출력 결과가 발생된다. |
관련사항 : | OLD |
19) N=available-lines
데이터 스텝의 현재 반복 작업 중에 출력 포인터가 이동 가능한 라인의 수를 지정한다. Available-lines에는 숫자(n) 또는 PAGESIZE(PS) 키워드를 지정할 수 있다.
- n
출력 포인터가 이동할 때 사용할 수 있는 라인의 범위를 지정하여서 지정된 라인의 범위 사이에서 다음 관측치에 대한 출력 작업을 수행한다. 예를 들어, N의 값을 3으로 지정을 하면 두 번째 관측치는 첫 번째 행을 기준으로 4번째(+3행) 내에서 출력 작업을 수행해야 한다.
- PAGESIZE (별칭 : PS)
전체 페이지에서 출력 포인터를 이동할 수 있도록 지정한다.
별칭 : | PS |
제한사항 : | N=PAGESIZE 옵션은 출력물이 인쇄 될 때 유효하다. |
제한사항 : | 현재 출력 파일이 인쇄되는 파일이라면, available-line은 1 또는 PAGESIZE 중에 하나의 값으로 지정해야 한다. |
영향 : | 출력 포인터로 사용 가능한 라인의 수를 관리하기 위한 두 가지 방법이 있다. - N= 옵션 - PUT 구문에서 #n 행 포인터 조절자 |
영향 : | 만약 N=옵션과 # 행 포인터 조절자를 사용하지 않았으면, 기본값으로 1 개의 행을 사용한다. 만약 N=는 사용하지 않고 # 행 포인터 조절자를 사용하면, N=의 값은 현재 데이터 스텝의 PUT 구문에서 # 행 포인터 조절자 중에서 가장 큰 값을 사용한다. |
Tip : | N=PAGESIZE 설정으로 하나의 열을 여러 개의 열로 분할하여 페이지를 구성 할 수 있다. |
주요기능 : | 예제3 : 전체 페이지에 항목을 배열하기 |
20) ODS <=(ODS-suboptions)>
데이터 스텝의 결과에 대한 출력 형식으로 ODS(Output Delivery System) 지정하는데, 이 옵션은 파일 참조자로 PRINT 옵션을 지정한 경우에 사용할 수 있다.
기본사항 : | ODS 부옵션(Suboption)을 생략하면, 데이터 스텝은 SASHELP.TMPLMST 템플릿 저장소에 저장된 기본 테이블 정의(base.datastep.table)를 사용한다. 기본 테이블 정의를 사용하여서 두 개의 일반적인 열을 정의한다. 하나는 문자 변수에 대하여 정의하고, 또 다른 하나는 숫자 변수에 대하여 정의한다. ODS는 두 개의 일반적인 열에 대한 정의 중에서 하나를 선택하여서 데이터 스텝의 개별 변수와 연결시키고, 데이터 스텝에서 정의된 순서로 변수를 출력한다. 부옵션을 지정하지 않았으면, 기본 테이블 정의는 열의 제목으로 변수의 레이블을 사용한다. 레이블이 없다면, 변수의 이름을 열의 제목으로 사용한다. |
필요사항 : | ODS 옵션은 FILE 구문에서 파일참조자로 PRINT옵션을 사용하는 경우에만 유효하다. |
제한사항 : | ODS옵션은 _FILE_, FILEVAR=, HEADER=, PAD 옵션과는 함께 사용 할 수 없다. |
영향 : | DELIMITER=와 DSD옵션은 ODS옵션에 영향을 미치지 못한다. |
21) OLD
파일에 존재하는 내용을 교체한다.
기본값 : | OLD |
제한사항 : | OLD는 모든 운영 환경에서 적용되지는 않는다. |
관련사항 : | MOD |
22) PAD | NOPAD
외부 파일에 데이터를 작성할 때에 데이터 출력 후에 LRECL=옵션에서 지정된 길이까지 남은 구간에 대하여 공백으로 채울지 여부를 지정한다. 가변 길이(VARIABLE-LENGTH) 파일에 작성하는 경우에는 NOPAD 옵션이 기본값이고, 고정 길이(FIXED-LENGTH) 파일에 작성하는 경우에는 PAD 옵션이 기본값이다.
기본값 : | 가변길이(VARIABLE-LENGTH) 파일에 작성하는 경우에는 NOPAD옵션이 기본값이고, 고정길이(FIXED-LENGTH) 파일에 작성하는 경우에는 PAD옵션이 기본값이다. |
Tip : | PAD옵션은 가변길이 파일에서 고정길이 레코드를 생성 할 수 있는 편리한 방법이다. |
관련사항 : | LRECL= |
23) PAGESIZE=value (별칭 : PS)
리포트의 한 페이지에서 사용 가능한 행의 수를 설정한다.
별칭 : | PS= |
기본값 : | PAGESIZE=시스템 옵션 값 |
범위 : | 15에서 32767까지 |
영향 : | TITLE 구문이 정의되어 있으면, 제목이 차지하는 라인은 각 페이지에서 라인의 수를 계산 할 때에 포함된다. |
Tip : | PAGESIZE=옵션의 값에 도달하면, 출력 포인터는 새로운 페이지의 첫 라인으로 넘어간다. |
Tip : | FILE LOG를 지정하면, 처음 페이지에서 출력에 사용되는 행의 수에는 SAS 시작 정보(저자권, 버전, 라이센스 정보 등)를 포함된다. 예를 들어, PAGESIZE=20에서, SAS 시작 정보가 9개 행을 차지하면, 첫 페이지에서는 출력을 위하여 11개 라인만이 사용된다. |
관련사항 : | PAGESIZE= 시스템 옵션 |
24) PRINT | NOPRINT
출력 행에 카드 제어 문자에 대하여 출력 가능하도록 설정할지 여부를 지정한다. 파일 참조자로 PRINT를 사용하면, PRINT 옵션을 별도로 사용할 필요가 없다.
운영환경정보 : | 파일에 작성되는 카드제어 문자는 운영 환경에서 지정 할 수 있다. 상세한 정보는 운영환경에 대한 SAS도움말 참조. |
제한사항 : | 파일을 작성하는 경우에 N=옵션의 값은 1 또는 PAGESIZE을 사용해야 한다. |
Tip : | 파일참조자로PRINT를 사용하면, PRINT 옵션은 따로 필요하지 않는다. |
Tip : | 대화식 SAS 세션에서 FILE PRINT를 지정하면, 출력 윈도우는 페이지 바꿈(form-feed) 조절자 문자를 페이지 나누기(page breaks) 명령으로 해석하고, 페이지 바꿈 조절자 문자 앞에서 출력되는 공백 라인은 출력물에서 제거된다. 출력 윈도우에서 플랫(Flat) 파일로 결과를 작성하는 경우에는 페이지 변경 문자를 사용하지 않고 파일을 생성한다. 파일에 페이지 변경 문자를 포함해야 하는 경우에는 FILE 구문에서 물리적 파일 위치와 PRINT 옵션을 함께 작성해야 한다. |
25) RECFM=record-format
출력 파일의 레코드 형식을 지정한다.
범위 : | Record-format에 대한 값은 운영 환경에 의존한다. |
26) STOPOVER
PUT 구문이 현재 라인 길이를 초과하여 데이터 항목을 작성하는 경우에, 바로 데이터 스텝 처리를 중지한다. 이 경우에 SAS는 현재 라인 길이를 초과하는 데이터 항목을 삭제하고, 에러가 발생하기 전에 생성된 행을 작성한 후에 에러 메시지를 출력한다. (기본값 : FLOWOVER)
기본값 : | FLOWOVER |
관련사항 : | FLOWOVER 과 DROPOVER |
27) TITLES | NOTITILES
파일의 페이지에 현재 제목 행의 출력 여부를 지정한다.
별칭 : | TITLE | NOTITLE |
기본값 : | TITLES |
28) FILE=variable
현재 FILE 구문의 출력 버퍼에 저장되어 있는 내용을 참조하는 문자 변수의 이름을 지정한다. 이 변수를 수정하면 FILE 구문에 대한 현재 출력 버퍼가 직접 수정되기 때문에, 이 FILE 구문의 뒤에 작성된 PUT 구문은 수정된 버퍼의 내용을 출력한다. _FILE_ 옵션을 사용하지 않고, 다른 문장에서 출력 버퍼의 항목에 접근하기 위해서는 자동 변수 _FILE_를 사용하라.
제한사항 : | variable 은 이전에 정의된 변수를 사용 할 수 없다. _FILE_ 지정자는 데이터 스텝에서 처음 사용되는 변수이어야 한다. LENGTH 또는 ATTRIB 구문을 사용하여서 _FILE_ 변수의 길이를 설정하거나 변경하면 안된다. 그러나, ATTRIB 또는 FORMAT 구문을 사용하여서 이 변수에 대한 출력형식을 지정 할 수 있다. |
영향 : | 이 변수의 최대 길이는 지정된 FILE 구문에 대한 논리 레코드 길이(LRECL)이다. 그러나, SAS는 실행 구문 전까지 논리 레코드 길이(LRECL)를 확인하기 위하여 파일을 열지 않기 때문에, 컴파일 단계 동안에 이 변수에 지정되는 크기는 32,767이다. |
Tip : | 이 변수를 수정하면 FILE 구문의 현재 출력 버퍼가 직접 수정된다. 이 FILE 구문의 뒤에서 사용되는 PUT 구문은 수정된 버퍼의 내용을 출력한다. _FILE_= 변수는 지정된 FILE 구문의 현재 출력 버퍼에 접근한다. 비록 다수의 출력 버퍼를 지정하는 N=옵션을 사용하여도 단지 현재 출력 버퍼에만 접근을 한다. |
Tip : | _FILE_ 옵션을 사용하지 않고, 다른 문장에서 출력 버퍼의 항목을 접근하기 위해서는 자동 변수 _FILE_를 사용하라. |
주요논의 : | 제자리에서 외부 파일 업데이트하기 |
3. 범 주
SAS 기본 구문 (파일 처리 구문)
4. 상세 설명
기본소개
PUT 구문을 사용한 출력은 기본적으로 SAS로그에 작성된다. 프로시져 출력 결과가 작성되는 동일한 외부 파일 또는 다른 외부 파일로 출력물을 전환하기 위하여 FILE 구문을 사용하라. 카드 제어(Carriage-control) 문자가 파일에 포함 할 수 있도록 지정 할 수 있다. PRINT|NOPRINT 옵션을 참조
FILE 구문은 실행문이기 때문에 조건문(IF-THEN) 처리시에 FILE 구문을 사용 할 수 있다. 단일 데이터 스텝에서 다수의 외부 파일에 작성하기 위하여 다중 FILE 구문을 사용 할 수 있다
운영환경정보 : FILE 구문을 사용하는 경우에 운영 환경 지정자 정보가 필요 할 수 있다. 이 구문을 사용하기 전에 운영환경에 대한 SAS도움말을 참조하라
데이터 스텝 결과를 작성하기 위하여 FILE 구문과 함께 ODS를 사용 할 수 있다.
상세한 사항은 SAS Output Delivery System: User's Guide. 에서 “FILE Statement for ODS” 를 참고하라.
제자리에서 외부 파일 업데이트하기
파일의 이동 없이 제자리에서 전체 레코드 또는 레코드의 일부 선택된 필드에 대하여 업데이트 작업을 수행하기 위하여 INFILE 구문과 PUT 구문을 FILE 구문과 함께 사용 할 수 있다. 다음의 설명을 참조하라.
- INFILE 구문을 항상 먼저 배치해라.
- INFILE 구문과 FILE 구문에 동일한 파일참조자 또는 물리적 파일명을 지정하라.
- INFILE 구문에 INFILE과 FILE 구문 양쪽에서 공통으로 사용되는 옵션을 지정하라. (FILE 구문에 지정한 옵션은 사용되지 않는다.)
- INFILE 구문과 FILE 구문이 동일한 버퍼를 사용하는 것을 허용하기 위하여INFILE 구문에서 SHAREBUFFERS 옵션을 사용하라. 이 작업 방식은 CUP시간을 절약 할 수 있으며, 전체 필드 뿐만 아니라 개별 필드를 업데이트 할 수 있다.
출력버퍼의 항목 접근하기
_FILE_= 변수 이 외에, FILE 구문의 가장 최근 실행에 대한 현재 출력 버퍼에 존재하는 항목을 참조하기 위하여 자동 변수 _FILE_를 사용 할 수 있다. 이 문자 변수는 자동적으로 유지(Retain)되고, 공백으로 초기화 된다. 다른 자동 변수와 같이 _FILE_ 변수는 출력 데이터 세트에 출력되지 않는다.
FILE 구문에서 _FILE_ 옵션을 사용하여 지정된 변수는 간접적으로 자동 변수 _FILE_에 의해 참조된다. 자동 변수 _FILE_를 사용하면, SAS는 FILE 구문에 대한 내부 변수 _FILE_ 를 생성한다. 그 외에 자동 변수 _FILE_이 사용되지 않는 경우에는 특정 FILE에 대한 내부 변수 _FILE_=를 생성하지 않는다.
실행하는 동안과 참조 시점에, 이 문자 변수의 최대길이는 현재 _FILE_변수의 최대길이와 동일하다. 그러나, _FILE_은 실행 구문 전까지는 길이가 알려지지 않은 변수를 참조하기 때문에, 컴파일 단계 동안에 할당되는 길이는 32,767이다. 예를 들어, 길이가 정의되지 않은 새로운 변수에 _FILE_를 할당하면, 새 변수의 기본 길이는 32,767byte 이다. _FILE_의 길이를 설정하거나 제거하기 위하여 LENGTH와 ATTRIB 구문을 사용 할 수 없지만, _FILE_에 대한 출력형식(Format)을 정의하기 위하여 FORMAT 구문과 ATTRIB 구문을 사용 할 수 있다.
_FILE_ 변수 업데이트하기
다른 SAS변수와 동일하게 _FILE_ 변수의 내용을 수정 할 수 있다. 다음은 _FILE_변수의 내용을 수정하기 위하여 다음의 두 가지 방법이다.
- 할당 구문에서 _FILE_ 사용하기
- PUT 구문 사용하기
다음 형태의 할당 구문을 사용하여서 _FILE_ 변수를 업데이트 할 수 있다.
_FILE_ = <’string-in-quotation-marks’ | character-expression> |
할당 구문은 현재 출력 버퍼의 항목을 수정하고, 버퍼 길이를 ‘string-in-quotation-marks’ 또는 character-expression 의 길이로 설정한다. 그러나, 할당 구문의 사용이 PUT 구문에서 현재 열 포인터 위치에는 영향을 주지 않는다. FILE 구문 이후에 존재하는 PUT 구문은 첫 번째 열에서 버퍼 업데이트를 시작하거나, PUT 구문에서 후행 @을 사용하는 경우에는 포인터가 마지막으로 위치하였던 곳에서부터 업데이트를 시작한다.
다음 예제에서 할당 문장은 현재 출력 버퍼의 항목을 업데이트한다. PUT 구문의 열 포인터 위치는 영향을 받지 않는다.
File print;
_file_ = ‘_FILE_’;
Put ‘This is PUT’;
SAS는 다음 출력물을 생성한다. : This is PUT
다음 예제에서
File print;
_file_ = ‘This is from FILE, sir.’;
Put @14 ‘both’;
SAS는 다음 출력물을 생성한다. : This is from both, sir.
PUT 구문을 사용하여서 _FILE_ 변수를 수정 할 수 있다. PUT 구문은 출력 버퍼에서 데이터의 출력형식을 정하고, _FILE_이 해당 버퍼를 참조하고 있기 때문에 PUT 구문은 _FILE_ 변수를 수정 할 수 있다. 그러나, 기본적으로 PUT 구문은 현재 레코드(또는 레코드의 N=블록)를 실행하여 출력 한 이후에 출력 버퍼의 내용을 지운다. 그러므로, 출력하기 전에 _FILE_의 항목을 평가하거나 추가 수정을 원한다면, PUT 구문에서 후행 @ 또는 이중 후행 @@ 사용해야 한다(N=1 인 경우에). 다른 N=의 값을 처리하기 위하여, 레코드 블록의 마지막 레코드에서(N=의 마지막 레코드) 최종 라인 포인터의 위치가 존재하는 PUT 구문에 후행 @ 또는 이중 후행 @@을 사용하라. 다음 예제에서, N=1일 때
File ABC;
Put ‘Something’ @;
Y = _file_||’ is here’;
File ABC;
Put ‘Nothing’;
Y = _file_||’ is here’;
첫 번째 Y에는 Something is here가 할당되고, 두 번째 Y에는 is here가 할당된다.
_FILE_에 대한 수정은 FILE 구문에 대한 현재 출력 버퍼를 직접적으로 수정한다. 수정된 FILE 구문 이후에서 PUT 구문을 실행하면 수정된 버퍼의 항목을 출력 할 것이다.
다중 버퍼를 지정하기 위하여 N= 옵션을 사용하는 경우에 기본적으로 _FILE_은 FILE 구문에서 현재 출력 버퍼의 항목을 접근한다. 모든 N=버퍼를 접근하기 위해서는 접근하기 원하는 버퍼를 현재 출력 버퍼로 지정하도록 # 행 포인터 조절자와 PUT 구문을 함께 사용해야 한다.
5. 비교 사항
- FILE 구문은 PUT 구문에 대한 출력 파일을 지정하고, INFILE 구문은 INPUT 구문에 대한 입력 파일을 지정한다.
- FILE 구문과 INFILE 구문에서는 사용되는 외부 파일에 대한 추가 정보를 SAS에 제공하기 위한 옵션을 사용 할 수 있다.
- 프로그램 편집기, LOG 윈도우, 출력 윈도우에서 FILE명령문은 출력하기 위한 외부 파일을 지정하고, 파일에 윈도우의 내용을 작성한다.
6. 관련 구문
구문명 | 구문내용 |
FILE 구문 | PUT 구문에서 사용되는 출력 대상 파일의 이름을 지정한다. |
FILENAME 구문 | SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. |
INFILE 구문 | INPUT 구문을 사용하여 읽기 위한 외부 파일을 지정한다. |
LABEL 구문 | 변수에 대한 설명 레이블을 지정한다. |
PUT 구문 | 가장 최근 FILE 구문에서 지정한 SAS 로그, SAS 출력 윈도우, 또는 외부 파일 등에 출력 라인을 작성한다. |
RETURN 구문 | 데이터 스텝의 현재 위치에서 SAS 문장의 실행을 중지하고, 데이터 스텝에서 사전에 정의된 위치로 프로세스의 실행을 이동한다. |
TITLE 구문 | SAS 출력에서 사용하기 위한 제목(TITLE)을 지정한다. |
7. 예 제
예제1 : 새로운 페이지를 시작하는 경우에 구문 단위로 실행하기
다음 데이터 스텝은 HEADER=옵션 사용하는 방법을 설명한다.
- 데이터 세트 생성이 목적이 아니라 리포트를 작성이 목적이므로 DATA _NULL_을 사용하라.
SAS Statements |
data _null_;
set sprint;
by dept;
- 결과가 출력되는 곳을 SAS 출력 윈도우로 전환하고, Header 정보를 관리하는 곳을 지정하라. PRINT 파일참조자는 프로시져의 결과물이 출력되는 출력 윈도우로 출력 위치를 변경한다. HEADER= 옵션은 각 페이지의 상단에서 실행하기 원하는 SAS 구문의 그룹을 식별하기 위한 문장 라벨을 정의한다.
SAS Statements |
file print header=newpage;
- 개별 부서마다 새로운 페이지에서 작성을 시작한다.
SAS Statements |
if first.dept then put _page_;
put @22 salesrep @34 salesamt;
- 각 페이지의 상단에서 hearder를 작성한다. 다음 문장은 새로운 페이지가 시작할 때마다 실행된다. RETURN 구문은 문장 라벨 앞부분과 문장 라벨의 종료를 표시하기 위하여 마지막 부분에 지정한다.
SAS Statements |
return;
newpage:
put @20 'Sales for 1989' /
@20 dept=;
return;
run;
예제2 : 개별 페이지에서 지정한 라인 이외의 나머지 라인을 새로운 페이지에 작성
다음 데이터 스텝은 현재 페이지에서 남아 있는 라인의 개수에 따라서 페이지가 변경되도록 하기 위하여 LINESLEFT=옵션 사용한다.
- 데이터 세트 생성보다 리포트를 작성이 목적이므로 DATA _NULL_을 사용하라.
SAS Statements |
data _null_;
set info;
- 결과가 출력되는 곳을 SAS 출력 윈도우로 전환한다. PRINT 파일참조자는 프로시져의 결과물이 출력되는 출력 윈도우로 출력 위치를 변경한다. LINESLEFT는 REMAIN변수에 현재 페이지에서 남아 있는 출력 라인의 수를 할당한다.
SAS Statements |
file print linesleft=remain pagesize=20;
put @5 name @30 phone
@35 bldg @37 room;
- 현재 페이지에 남은 라인의 수가 7보다 작은 경우에는 새로운 페이지로 이동한다. 이 조건 하에서 PUT _PAGE_는 새로운 페이지를 시작하고, 새로운 페이지의 첫 번째 라인으로 포인터를 이동한다.
SAS Statements |
if remain<7 then put _page_ ;
run;
예제3 : 전체 페이지에 항목을 배열하기
다음 예제는 두 개의 열에 전화번호부 목록을 출력하기 위하여 데이터 스텝에서 N=PAGESIZE 사용 방법을 보여준다. 각 열에는 고객명과 전화번호를 출력한다.
- 리포트를 생성하여서SAS 출력 윈도우에 작성한다. 데이터 세트 생성이 목적이 아니라 리포트를 작성이 목적이므로 DATA _NULL_을 사용하라. PRINT는 파일참조자이다. SAS는 파일 인쇄(print) 목적으로 출력물을 작성하기 위하여 카드 제어 문자를 사용한다. N=PAGESIZE는 출력 포인터가 전체 페이지를 사용 할 수 있도록 한다.
SAS Statements |
data _null_;
file 'external-file' print n=pagesize;
- 리포트 생성을 위하여 열을 지정한다. DO 반복문은 각 데이터 스텝 반복에 대하여 두 번 반복한다. COL 값은 처음 반복에서는 1열에 작성되고, 두 번째 반복에서 40열에 작성된다.
SAS Statements |
do col=1, 40;
- 데이터를 20개 라인에 작성한다. DO 반복문은 첫 번째 열에서 20번 반복하여 20개 라인을 작성한다. 20개 라인 작성 후에, 바깥쪽 반복문을 사용하여 COL변수에 40이 설정되고, 이 DO 반복문이 다시 20번 반복하여서 두 번째 열에 20개 라인을 작성한다. DO 구문에 의하여 설정되고 증가되는 LINE과 COL의 값은 페이지에서 PUT 구문이 NAME과 PHONE의 값을 작성하는 위치를 지정한다.
SAS Statements |
do line=1 to 20;
set info;
put #line @col name $20. +1 phone 4.;
end;
- 데이터의 2개 열을 구성한 후에, 페이지를 작성한다. END 구문은 바깥쪽 DO 반복문을 종료한다. PUT _PAGE_는 현재 페이지를 작성하고, 새로운 페이지의 상단으로 포인터를 이동한다.
SAS Statements |
end;
put _page_;
run;
예제4 : 현재 출력 파일을 확인하기
다음 데이터 스텝은 로그에 파일 식별 메시지를 출력하고, MYOUT 변수에 현재 출력 파일의 이름을 할당한다. PUT 구문은 MYOUT 변수에 할당된 값을 표시하기 위하여 출력 파일에 그 변수의 값을 작성한다.
SAS Statements |
data _null_;
length myout $ 200;
file file-specification filename=myout;
put myout=;
stop;
run;
PUT 구문은 현재 출력 파일에 파일의 물리적 이름을 작성한다.
Results - 출력파일 |
MYOUT=your-output-file
예제5 . 현재 출력 파일을 동적으로 변경하기
다음 데이터 스텝은 현재 열려 있는 출력 파일을 동적으로 새로운 물리적 파일로 변경하기 위하여 FILEVAR=옵션을 사용한다.
- 리포트를 작성하고, 긴 문자 변수를 생성한다. 데이터 세트 생성이 목적이 아니라 리포트를 작성이 목적이므로 DATA _NULL_을 사용한다. LENGTH 구문을 사용하여 외부 파일의 이름을 포함하기 위하여 충분히 긴 길이를 가지는 변수를 생성한다.
SAS Statements |
data _null_;
length name $ 200;
- 내부 데이터 라인을 읽고, NAME 변수에 값을 할당한다.
SAS Statements |
input name $;
- NAME변수가 변경 될 때, 현재 출력 파일을 닫고 새로운 출력 파일을 연다. File-specification은 단순한 위치지정자로 사용된다. 그러나, File-specification은 유효한 SAS이름이어야 한다.
SAS Statements |
file file-specification filevar=name mod;
date = date();
- 현재 열린 출력 파일에 로그 레코드를 추가한다.
SAS Statements |
put 'records updated ' date date.;
- 외부 파일의 이름을 제공한다.
SAS Statements |
datalines;
external-file-1
external-file-2
external-file-3
;
예제6 : 출력 라인이 출력 파일의 라인 길이를 초과 할 때
변수들의 길이를 합친 길이가 지정된 출력 라인(80문자)보다 길면, 다음 PUT 구문은 자동적으로 3개의 레코드로 분리하여 작성한다.
SAS Statements |
file file-specification linesize=80;
put name $ 1-50 city $ 71-90 state $ 91-104;
NAME의 값은 첫 번째 라인에 작성되고, CITY변수는 두 번째 레코드의 첫 번째 열에 작성되며, STATE변수는 세 번째 레코드의 첫 번째 열에 작성된다.
예제7 : TCP/IP Socket를 통하여 데이터 읽고, 텍스트 작성하기.
다음 예제는 TCP/IP socket를 통하여 파일에서 원시 데이터 읽는 방법을 보여준다. NBYTE=옵션은 INFILE 구문에서 사용된다.
SAS Statements |
/* Start this first as the server */
filename serve socket ':5205' server
recfm=s
lrecl=25 blocksize=2500;
data _null_;
nb=25;
infile serve nbyte=nb;
input text $char25.;
put _all_;
run;
다음 예제는 TCP/IP socket를 통하여 파일에 텍스트를 작성하는 방법을 보여준다.
SAS Statements |
/* While the server test is running,*/
/*continue with this as the client. */
filename client socket "&hstname:5205"
recfm=s
lrecl=25 blocksize=2500;
data _null_;
file client;
put 'Some text to length 25...';
run;
예제8 : 출력 파일을 작성하면서 인코딩 지정.
다음 예제는 SAS 데이터 세트로부터 외부 파일을 생성한다. 현재 세션 인코딩은 Wlatin1이지만, 외부 파일의 인코딩은 UTF-8로 작성하기를 원한다. 기본적으로, SAS는 현재 세션 인코딩을 사용하여 외부 파일을 작성한다.
외부 파일에 데이터를 작성하면서 사용 될 인코딩을 지정하기 위하여 ENCODING=옵션을 사용하라. 외부파일의 인코딩을 UTF-8 인코딩으로 지정하면, 외부파일에 데이터를 작성 하면서 Wlatin1 인코딩에서 지정된 UTF-8 인코딩으로 데이터를 전환한다.
SAS Statements |
libname myfiles 'SAS-library';
filename outfile 'external-file';
data _null_;
set myfiles.cars;
file outfile encoding="utf-8";
put Make Model Year;
run;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 FILENAME 구문, CLIPBOARD 접근 방법 (0) | 2022.01.29 |
---|---|
【SAS Statement】 FILENAME 구문 (0) | 2022.01.28 |
【SAS Statement】 EXECUTE 구문 (0) | 2022.01.28 |
【SAS Statement】 ERROR 구문 (0) | 2022.01.28 |
[SAS Statement] ENDSAS 구문 (0) | 2022.01.28 |
댓글