포스팅 목차
o ATTRIB 구문
1. 목 적
일반적으로 변수에 지정된 속성을 변경하기 위하여 FORMAT, INFORMAT, LABEL, LENGTH과 같은 개별 속성 구문을 사용할 수 있지만, ATTRIB 구문을 사용하여 여러 변수에 대한 출력 형식(format), 입력 형식(informat), 라벨(Label), 길이(Length) 등을 한 번에 처리할 수 있다. ATTRIB 구문은 데이터 스텝에서 변수가 포함된 SAS 데이터 스텝의 기술 정보를 변경함으로써 변수의 속성을 영구적으로 변경할 수 있다.
2. 문 법
ATTRIB variable-list(s) attribute-list(s) ; |
1) Variable-list(s) :
속성을 변경하기 위한 대상 변수를 지정한다.
범위 : | SAS가 허용하는 형태로 변수를 작성한다. |
2) Attribute-list(s) :
Variable-list의 변수에 지정하기 원하는 속성을 지정한다.
- FORMAT=format : 변경하기 위한 출력 형식(Format)을 지정.
Tip : | 출력형식은 기본으로 제공되는 표준 SAS입력형식 또는 FORMAT 프로시져를 사용하여 지정된 입력형식을 사용 할 수 있다. |
- INFORMAT=informat : 변경하기 위한 입력 형식(Informat)을 지정.
Tip : | 입력형식은 기본으로 제공되는 표준 SAS입력형식 또는 FORMAT 프로시져를 사용하여 지정된 입력형식을 사용 할 수 있다. |
- LABEL=’label’ : 변경하기 위한 변수에 대한 레이블(Label)을 지정.
- LENGTH=<$>length : 변경하기 위한 변수의 길이(Length)를 지정.
요구사항 : | 문자 변수의 길이 앞에는 달러 부호($)를 삽입하라. |
Tip : | 기존에 존재하는 데이터 세트를 입력 데이터로 사용하는 경우에는, 출력 데이터 세트에서 변수의 길이를 변경하기 위하여 SET 구문 앞에서 ATTRIB 구문을 사용하라. |
범위 : | 문자 변수의 범위는 모든 운영 환경에서 1에서 32,767까지이다. 운영환경정보 : 숫자 변수에 대하여, LENGTH= 를 사용하여 지정 할 수 있는 최소 길이는 운영환경에 따라서 2 또는 3을 지정 할 수 있다. |
제한사항 : | PROC DATASETS 를 사용하여 변수의 Length(길이)를 변경 할 수 없다. |
- TRANSCODE = YES | NO
문자 변수가 전환(transcoded) 될 수 있는지 여부를 지정한다. Transcoding의 사용을 제어하기 위하여 TRANSCODE=NO를 사용한다. Transcoding에 관한 더 자세한 정보는 SAS National Language Support(NLS) : Reference Guide 에서 “Transcoding”을 참고하라.
기본값 : | YES |
제한사항 : | TRANSCODE=NO 속성은 일부 SAS Workspace Server clients에서는 지원되지 않는다. SAS 9.2에서, 속성이 지원되지 않으면, TRANSCODE = NO의 속성으로 정의된 변수값은 별표(*)로 표시된다. SAS 9.2 이전에는 TRANSCODE=NO로 정의된 변수도 전환되었다. |
제한사항 : | SAS 이전 버전은 TRANSCODE=NO 속성을 가진 변수가 포함된 SAS 9.1 데이터 세트에 접근 할 수 없다. |
제한사항 : | Transcode 제어는 V6TAPE 엔진에서 지원되지 않는다. |
영향 | 문자 변수에 Transcoding이 적용되었는지 여부를 알려주는 값을 확인하기 위하여 VTRANSCOD 와 VTRANSCODEX 함수를 사용하라. |
영향 | 만약 TRANSCODE= 속성이 일부 문자 변수에 대해 NO로 설정이 되면, PROC CONTENTS는 데이터 세트에서 각 변수에 대해 TRANSCODE= 값이 포함되어 있는 transcode 열을 출력한다. 만약 데이터 세트에서 모든 변수가 기본값 TRANSCODE=(YES)로 설정되었으면, transcode 열은 출력되지 않는다. |
3. 상세 설명
기본사항
데이터 스텝에서 ATTRIB 구문을 사용하여, 변수가 포함되어 있는 SAS 데이터 스텝의 기술 정보를 변경함으로써 변수의 속성을 영구적으로 지정한다.
PROC 단계에서 ATTRIB 구문을 사용 할 수 있지만, 적용 방법에 차이가 있다.
ATTRIB 구문에서 INFORMAT=옵션을 사용하여 입력 형식을 지정하는 경우에 SAS가 변수를 처리하는 방법
ATTRIB 구문에서 INFORMAT=옵션을 사용하여 변수에 지정된 입력형식(Informats)은 수정된 목록 입력(modified list input) 방식과 함께 사용되는 입력형식과 동일한 작업을 수행한다. SAS는 목록입력(list input)의 검색 기능을 사용하여 변수를 읽고, 입력형식(informat)을 적용한다. SAS는 수정된 목록 입력에서 아래와 같이 작업한다.
- 외부파일에 대한 열 위치 또는 입력 필드 길이를 지정하기 위하여 입력형식(informat)에서 w의 값을 사용하지 않는다.
- 이전에 정의되지 않은 문자 변수의 길이를 지정하기 위하여 입력형식에서 w의 값을 사용한다.
- SAS는 수치형 입력형식에서 w의 값을 무시한다.
- SAS는 수치형 입력형식에서 일반적으로 처리되는 것과 동일한 방법으로 입력형식에서 d의 값을 사용한다.
- 만약 INFILE 구문에서 DLM= 또는 DLMSTR=옵션 지정자를 사용하여 구분자를 변경하지 않으면, SAS는 입력 데이터에 포함된 공백을 구분자로 취급한다.
만약 INPUT 구문에서 포맷 지정 입력(Formatted input) 또는 열 입력(Column input) 방식 등의 다른 입력 스타일을 지정하고, ATTRIB 구문에서 INFORMAT=옵션을 지정한 경우에는 입력 스타일은 사용되지 않는다.
SET과 MERGE 구문에서 Transcoded 변수 처리 방법
SET 또는 MERGE 구문에서 다수의 입력 데이터 세트를 읽어서 출력 데이터 세트를 생성하는 경우에 SAS는 가장 먼저 입력되는 데이터 세트에 존재하는 변수의 TRANSCODE = 값을 출력 데이터 세트에 대한 변수의 TRANSCODE= 속성으로 지정한다. 예제2와 예제3 참조
참고 | 변수가 입력 데이터 세트 또는 ATTRIB TRANSCODE= 구문 중에서 처음 나타나는 시점에 TRANSCODE= 속성이 설정된다. 만약 SET 또는 MERGE 구문이 ATTRIB TRANSCODE=문장 앞에 존재하고, TRANSCODE= 속성이 SET 구문의 속성과 상이한 경우에 경고가 발생 될 것이다. |
3. 범 주
SAS 기본 구문 (정보 구문)
4. 비교 사항
- 변수에 지정된 속성을 변경하기 위하여 ATTRIB 구문이나 FORMAT, INFORMAT, LABEL, LENGTH 등과 같은 개별 속성 구문을 사용 할 수 있다.
5. 관련 구문 및 함수
함수명 | 함수내용 |
ATTRIB 구문 | ATTRIB 구문을 사용하여 여러 변수에 대한 출력 형식(format), 입력 형식(informat), 라벨(Label), 길이(Length) 등을 한 번에 처리할 수 있다. |
FORMAT 구문 | 변수에 영구적으로 출력 형식(format)을 지정하여서 SAS 데이터 세트의 기술정보 (Descriptor information)를 수정한다. |
INFORMAT 구문 | 변수에 영구적으로 입력 형식(Informat)을 지정한다. |
LABEL 구문 | 변수에 대한 설명 레이블을 지정한다. |
LENGTH 구문 | 변수를 저장하기 위하여 사용되는 변수의 길이(byte의 수)를 지정한다. |
VTRANSCODE 함수 | transcoding가 지정된 문자 변수에 on,off여부를 반환한다. |
VTRANSCODEX 함수 | transcoding가 지정된 인수에 on,off여부를 반환한다. |
6. 예 제
예제1 : 다수의 변수와 속성을 ATTRIB 구문으로 지정하기
다음은 변수와 속성의 개수가 서로 상이하게 소유한 ATTRIB 구문의 예제이다.
- 단일 변수와 단일 속성
SAS Statements |
attrib cost length=4;
- 단일 변수에 다중 속성 지정
SAS Statements |
attrib saleday informat=mmddyy.
format=worddate.;
- 다중 변수에 동일한 다중 속성 지정
SAS Statements |
attrib x y length=$4 label='TEST VARIABLE';
- 다중 변수에 상이한 다중 속성 지정
SAS Statements |
attrib x length=$4 label='TEST VARIABLE'
y length=$2 label='RESPONSE';
- 변수 리스트에 단일 속성 지정하기
SAS Statements |
attrib month1-month12
label='MONTHLY SALES';
예제2 : Transcoded 변수를 포함하는 SET 구문 사용
다음 예제는 SET 구문에서 데이터 세트 B가 첫 번째로 입력된 데이터 세트이고, 데이터 세트 B에서 변수 Z의 TRANSCODE= 속성이 NO이기 때문에, 데이터 세트 A에서 변수 Z의 TRANSCODE= 속성은 NO로 출력된다.
SAS Statements |
data b;
length z $4;
z = 'ice';
attrib z transcode = no;
data c;
length z $4;
z = 'snow';
attrib z transcode = yes;
data a;
set b;
set c;
rc1 = vtranscode(z);
put rc1=;
run;
예제3 : TRANSCODED 변수를 포함하는 MERGE 구문 사용
다음 예제는 MERGE 구문에서 데이터 세트 C가 첫 번째로 입력된 데이터 세트이고, 데이터 세트 C에서 변수 Z의 TRANSCODE= 속성이 YES이기 때문에, 출력 데이터 세트 A에서 변수 Z의 TRANSCODE= 속성은 YES로 출력된다.
SAS Statements |
data b;
length z $4;
z = 'ice';
attrib z transcode = no;
data c;
length z $4;
z = 'snow';
attrib z transcode = yes;
data a;
merge c b;
/* Check transcode setting for variable Z */
rc1 = vtranscode(z);
put rc1=;
run;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
[SAS Statement] CARDS 구문 (0) | 2022.01.25 |
---|---|
[SAS Statement] CALL 구문 (0) | 2022.01.25 |
【SAS Statement】 BY 구문 (0) | 2022.01.25 |
【SAS Statement】 ARRAY 구문 (0) | 2022.01.25 |
【SAS Statement】 ABORT 구문 (0) | 2022.01.25 |
댓글