HP OpenVMS Systems Documentation

Content starts here

9 파일 정렬 및 병합
이 장에서는 OpenVMS Sort/Merge 유틸리티(SORT/MERGE)를 사용하는 방법을 설명합니다. Sort/Merge 유틸리티는 다음 두 가지 작업을 수행합니다.
사용자가 선택한 필드에 따라 하나 이상의 입력 파일의 레코드를 정렬하고 다시 정렬된 출력 파일을 하나 생성합니다.
이전에 같은 키 필드에 따라 정렬된 최대 10개(고성능 Sort/Merge 유틸리티의 경우 최대 12개)의 입력 파일을 병합하고 하나의 출력 파일을 생성합니다.
Alpha 시스템에서 고성능 Sort/Merge 유틸리티를 선택할 수도 있습니다. 이 유틸리티는 Alpha 아키텍처를 사용하여 대부분의 정렬 및 병합 작업을 위한 성능을 향상시킵니다. 자세한 내용은 고성능 Sort/Merge를 참조하십시오.
이 장에서는 다음을 설명합니다.
고성능 Sort/Merge
파일 정렬
조합 순서 지정
일괄 처리 작업으로 Sort 실행
파일 병합
터미널에서 레코드 입력
Sort/Merge 지정 방법 파일 사용
정렬 또는 병합 작업 최적화
Sort/Merge 한정자 요약
추가 정보는 다음을 참조하십시오.
이 장에서 사용된 명령에 대한 내용은 OpenVMS DCl Dictionary를 참조하십시오.
시스템 관리자가 Sort/Merge 유틸리티를 더욱 효과적으로 사용할 수 있는 방법에 대해서는 OpenVMS System Manager's Manual을 참조하십시오.
고성능 Sort/Merge
Alpha 시스템에서 고성능 Sort/Merge 유틸리티를 선택할 수도 있습니다. 이 유틸리티는 Alpha 아키텍처를 사용하여 대부분의 정렬 및 병합 작업에서의 성능을 향상시킵니다.
고성능 Sort/Merge 유틸리티는 SORT/MERGE와 동일한 명령행 인터페이스를 사용합니다. 고성능 Sort/Merge 유틸리티와 SORT/MERGE 간의 차이점에 대해서는 이 장 전체에서 설명합니다.
고성능 Sort/Merge 유틸리티를 선택하려면 SORTSHR 논리를 사용합니다. 다음과 같이 SYS$LIBRARY에서 고성능 정렬 실행 파일을 가리키도록 SORTSHR을 정의합니다.
$ define sortshr sys$library:hypersort.exe
SORT/MERGE로 돌아가려면 SORTSHR 지정을 취소합니다. SORTSHR을 정의하지 않으면 SORT/MERGE 유틸리티가 기본값이 됩니다.
주) 메모리 할당 차이로 인해, Sort/Merge 유틸리티가 같은 양의 가상 메모리에서 수행할 수 있는 것과 같은 수의 동시 정렬 작업을 수행하기 위한 고성능 Sort/Merge 유틸리티의 기능이 제한될 수 있습니다.
이러한 경우에는 프로세스에 사용할 수 있는 가상 메모리의 양을 늘리거나 작업 집합 범위를 줄일 수 있습니다. 시스템 매개 변수를 사용하여 가상 메모리의 양을 변경하거나 작업 집합 범위를 줄이는 데 대한 자세한 내용은 OpenVMS System Management Utilities Reference Manual을 참조하십시오.
고성능 Sort/Merge 유틸리티의 동작은 표 9-1에 설명된 것을 제외하곤 SORT/MERGE와 동일합니다.
지원되지 않는 한정자를 사용하거나 한정자에 지원되지 않는 값을 할당하려는 경우 고성능 Sort/Merge 유틸리티에서 오류를 생성합니다.
표 9-1 고성능 Sort/Merge: 동작의 차이점
기능
고성능 Sort/Merge 동작
키 데이터 유형
H-FLOATING 및 ZONED 십진 데이터 유형은 지원되지 않습니다.
BINARY 데이터 유형 키의 크기는 1, 2, 4 또는 8바이트이어야 합니다. 16바이트 이진 키는 지원되지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
조합 순서
NCS(국가별 문자 집합) 조합 순서는 지원되지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. /COLLATING_SEQUENCE 한정자에 NCS 조합 순서의 이름을 지정하지 마십시오. ASCII, EBCDIC 및 MULTINATIONAL 조합 순서는 지원됩니다. 기본값은 ASCII입니다.
지정 방법 방법을 사용하여 사용자 고유의 조합 순서를 정의하거나 수정할 수 없습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
지정 방법 파일
지정 방법 파일은 지원되지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. /SPECIFICATION 한정자를 사용하지 마십시오.
내부 정렬
프로세스
레코드 정렬 프로세스만 지원됩니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. /PROCESS=RECORD를 지정하거나 /PROCESS 한정자를 생략할 수 있습니다. /PROCESS 한정자의 TAG, ADDRESS 및 INDEX 값은 지원되지 않습니다.
통계 요약 정보
현재 다음 통계 정보가 지원됩니다.
Records read(읽은 레코드)
Records sorte(정렬된 레코드)
Records output(출력된 레코드)
Input record length(입력 레코드 길이)
다음 통계는 사용할 수 없습니다.
Internal length(내부 길이)
Output record length(출력 레코드 길이)
Sort tree size(정렬 트리 크기)
Number of initial runs(초기 실행 수)
Maximum merge order(최대 병합 순서)
Number of merge passes(병합 통과 수)
Work file allocation(작업 파일 할당)
이 기능의 완전한 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.

파일 정렬
파일을 정렬하려면 DCL 명령 SORT를 사용합니다. 정렬할 파일의 이름을 쉼표로 구분하여 지정한 다음에 만들려는 정렬된 출력 파일의 이름을 지정합니다.
옵션으로 정렬할 각 필드에 대해 키를 지정할 수도 있습니다. 각 키에는 다음 정보가 포함되어 있습니다.
레코드에서 키 필드의 시작 위치(필수)
키의 크기(필수)
키의 데이터 유형
레코드가 정렬된 순서
키의 우선 순위
키를 지정하지 않으면 Sort에서는 키가 하나뿐이고 이 키 필드가 다음과 같다고 가정합니다.
레코드의 처음 위치에서 시작합니다.
전체 레코드를 포함합니다.
문자 집합을 포함합니다.
오름차순으로 정렬됩니다.
다음 두 보기에서는 기본 키를 사용합니다.
1. 이 보기에서는 NAMES.LST 파일을 오름차순으로 정렬합니다.
$SORT NAMES.LST BYNAME.LST
이 명령은 그림 9-1과 같이 정렬된 출력 파일 BYNAME.LST를 만듭니다.
그림 9-1 오름차순으로 정렬된 목록
2. 이 보기에서는 NAMES.LST와 NAMES2.LST 파일이 정렬된 출력 파일 BYNAME.LST로 정렬됩니다. Sort에서는 이러한 파일이 하나의 큰 파일인 것처럼 처리합니다.
$ SORT NAMES.LST,NAMES2.LST BYNAME.LST
SORT 한정자의 전체 목록은 정렬/병합 한정자 요약을 참조하십시오.
키 정의
키를 정의하려면 /KEY 한정자를 사용합니다. 여러 키를 정의할 경우 각각의 키마다 별도의 /KEY 한정자를 사용합니다.
표 9-2에서는 키를 구성하는 다섯 가지 요소를 설명합니다.
표 9-2 /KEY 한정자 값
키 요소
값
설명
키 위치
POSITION:n
레코드 내에서 키 필드의 첫째 바이트 위치입니다. 레코드의 첫째 바이트는 위치 1입니다. POSITION:n은 필수적입니다.
키 크기
SIZE:n
키 필드의 길이입니다. SIZE:n은 부동 소수점 데이터인 경우를 제외하고는 필수적입니다.
키에 지정하는 데이터 유형에 따라 크기를 지정할 때 사용할 수 있는 값이 결정됩니다. 다음 표에서는 각 데이터 유형에 사용할 수 있는 값과 키 크기를 지정하는 데 사용되는 단위를 나열합니다.
데이터
유효한 범위
단위
문자
1에서 32,767
문자
이진수
1, 2, 4, 8 또는 16(고성능 Sort/Merge 유틸리티의 경우 이진 데이터 유형 키의 크기는 1, 2, 4 또는 8바이트이어야 합니다. 16바이트 이진 키의 지원은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.)
바이트
십진수
1에서 31
자릿수
부동 소수점
값이 필요하지 않습니다.
십진 데이터인 경우 소수점 기호가 별도의 바이트로 저장되면 이 바이트는 데이터 크기로 계산되지 않습니다.
레코드 끝을 벗어나는 키를 지정하면 Sort에서는 누락된 문자를 null 문자로 처리합니다.
데이터
유형
CHARACTER
BINARY
문자 데이터입니다. CHARACTER는 기본 데이터 유형입니다.
이진 데이터입니다.
SIGNED - 부호 있는 이진 또는 십진 데이터입니다. SIGNED는 이진 및 십진 데이터의 기본값입니다.
UNSIGNED - 부호 없는 이진 또는 십진 데이터입니다.
키 요소
값
설명
F_FLOATING
F_FLOATING 형식 데이터입니다.
D_FLOATING
D_FLOATING 형식 데이터입니다.
G_FLOATING
G_FLOATING 형식 데이터입니다.
H_FLOATING
VAX 시스템에서 H_FLOATING 형식 데이터입니다. 고성능 Sort/Merge 유틸리티에서는 현재 지원되지 않습니다.
S_FLOATING
Alpha 시스템에서 IEEE S_FLOATING 형식 데이터입니다.
T_FLOATING
Alpha 시스템에서 IEEE T_FLOATING 형식 데이터입니다.
DECIMAL
십진 데이터입니다.
TRAILING_SIGN - 후행 기호 십진 데이터입니다. TRAILING_SIGN은 십진 데이터의 기본값입니다.
LEADING_SIGN - 선행 기호 십진 데이터입니다. 선행 기호는 필드의 처음 위치에 있어야 하고 필드는 왼쪽에 0으로 채워져 있어야 합니다.
OVERPUNCHED_SIGN - 펀치가 많이 있는 십진 데이터입니다. OVERPUNCHED_SIGN은 십진 데이터의 기본값입니다.
SEPARATE_SIGN - 분리 기호 십진 데이터입니다.
ZONED
구역화된 십진 데이터입니다. 고성능 Sort/Merge 유틸리티에서는 현재 지원되지 않습니다.
PACKED_DECIMAL
팩트형 십진 데이터입니다.
정렬 순서
ASCENDING
정렬 작업을 오름차순 사전순이나 숫자순으로 정렬합니다. ASCENDING이 기본 순서입니다.
DESCENDING
정렬 작업을 내림차순 사전순이나 숫자순으로 정렬합니다.
키 우선
순위
NUMBER:n
키의 순위에서서 여러 키를 나열하지 않는 경우 각 키의 우선 순위를 지정합니다. 1에서 255까지의 값을 지정할 수 있습니다.

키 필드의 데이터가 문자 데이터가 아닌 경우에는 데이터 유형을 지정해야 합니다. Sort/Merge 유틸리티에서 인식하는 데이터 유형은 다음과 같습니다.
BINARY, [SIGNED]
BINARY, UNSIGNED
CHARACTER
DECIMAL, LEADING_SIGN, SEPARATE_SIGN [SIGNED]
DECIMAL, LEADING_SIGN, [OVERPUNCHED_SIGN, SIGNED]
DECIMAL [,SIGNED, TRAILING_SIGN, OVERPUNCHED_SIGN]
DECIMAL, [TRAILING SIGN], SEPARATE_SIGN, [SIGNED]
DECIMAL, UNSIGNED
D_FLOATING
F_FLOATING
G_FLOATING
H_FLOATING
S_FLOATING, IEEE (Alpha 시스템에만 해당)
T_FLOATING, IEEE (Alpha 시스템에만 해당)
PACKED_DECIMAL
ZONED

괄호 안의 항목은 기본값이므로 지정할 필요가 없습니다.
주) 십진 문자열 데이터의 경우 Sort/Merge 유틸리티는 입력 문자열의 유효하지 않은 자릿수를 VAX 및 Alpha 시스템에 따라 다르게 보고합니다. VAX 시스템에서는 비교하기 위해 유효하지 않은 자릿수 또는 예약된 피연산자가 유효한 십진 문자열로 변환된다는 메시지를 표시합니다. Alpha 시스템인 경우 Sort/Merge 유틸리티가 같은 변환을 수행하지만 메시지를 표시하지는 않습니다. 두 경우 모두 입력 파일의 데이터가 변경되지 않고 출력 파일에 쓰여집니다.
그림 9-2에서 EMPLOYEE.LST 파일의 각 레코드는 (1) 부서 이름, (2) 계정 번호 및 (3) 직원 이름과 같은 세 개의 필드로 구성됩니다.
그림 9-2 목록의 레코드 필드
다음 보기에서는 키 필드를 사용하는 경우와 사용하지 않는 경우에 EMPLOYEE.LST의 레코드를 정렬하는 방법을 보여 줍니다.
1. 이 보기에서는 계정 번호 필드를 설명하는 /KEY 한정자를 사용하여 계정 번호에 따라 EMPLOYEE.LST를 정렬합니다.
$ SORT/KEY=(POSITION:5,SIZE:4,DECIMAL) EMPLOYEE.LST BILLING1.LST
이 명령은 키 필드(계정 번호)가 위치 5에서 시작하고 길이가 4자이며, 십진 데이터를 포함하고 오름차순(기본값)으로 정렬되어야 함을 지정합니다. 그림 9-3에서는 이 정렬 작업의 결과를 보여 줍니다.
그림 9-3 키 필드에 따라 정렬
2. 이 보기에서는 키 필드를 지정하지 않고 EMPLOYEE.LST 파일을 정렬하는 방법을 보여 줍니다.
$ SORT EMPLOYEE.LST BYDEPT.LST
키가 지정되지 않았으므로 Sort에서는 기본 특성을 사용합니다. 그림 9-4에서는 이 정렬 작업의 결과를 보여 줍니다.
그림 9-4 기본 키 레코드로 정렬
Sort에서는 EMPLOYEE.LST의 각 레코드를 하나의 문자 데이터 키로 처리합니다. 이 보기에서 각 레코드는 부서 이름, 계정 번호 및 직원 이름을 포함합니다. Sort는 중복된 부서 이름이 있으면 계정 번호에 따라 정렬합니다. 그런 다음 중복된 계정 번호가 있으면 직원 이름에 따라 정렬합니다. 계정 번호는 레코드의 일부입니다. 다르게 지정하지 않는 한 계정 번호는 문자 데이터로 처리됩니다.
다중 키 필드
두 개 이상의 키(최대 255개의 키로 제한됨)를 사용하여 정렬할 수 있습니다. 먼저 기본 키를 사용하고 다음엔 보조 키를 사용하는 등 키의 우선 순위에 따라 다중 키를 지정할 수 있습니다. 또는 NUMBER:n을 사용하여 키의 우선 순위를 지정할 수 있습니다. 각 키는 오름차순이나 내림차순일 수 있습니다.
다음 보기에서는 EMPLOYEE.LST 파일을 먼저 직원 이름에 따라 정렬한 다음 같은 이름이 있으면 계정 번호에 따라 정렬합니다.
$ SORT /KEY=(POSITION:10,SIZE:15,CHARACTER) - _$/KEY=(POSITION:5,SIZE:4,DECIMAL) EMPLOYEE.LST BILLING2.LST
그림 9-5에서는 이 정렬 작업의 결과를 보여 줍니다.
그림 9-5 다중 키 필드로 정렬
다음 보기에서는 레코드를 먼저 부서 이름을 기준으로 내림차순으로 정렬한 다음 직원 이름을 기준으로 오름차순으로 정렬합니다.
$ SORT/KEY=(POSITION:1,SIZE:3,DESCENDING) -
_$ /KEY=(POSITION:10,SIZE:15) -
_$ EMPLOYEE.LST BILLING3.LST
그림 9-6에서는 이 정렬 작업의 결과를 보여 줍니다.
그림 9-6 다중 키 필드로 정렬(오름차순 및 내림차순)
동일한 키 필드
Sort/Merge 유틸리티(SORT/MERGE)정렬 동일한 키 필드 사용 기본적으로 Sort/Merge에서는 키 필드가 같은 레코드를 보관하지만 입력 파일에 표시된 것과 같은 순서를 항상 유지하는 것은 아닙니다. 동일한 키의 레코드가 정렬되는 방식을 제어하려면 다음 한정자 중 하나를 지정합니다.
/STABLE
키가 같은 레코드의 입력 순서를 유지합니다. 여러 입력 파일을 정렬하는 데 이 한정자를 사용하면, 출력에서 첫 번째 파일의 등가 키가 있는 레코드가 두 번째 파일의 등가 키가 있는 레코드 앞에 옵니다.
/NODUPLICATES
동일한 키가 있는 레코드 사본 중 하나만 유지합니다. 보관할 중복된 레코드를 지정하려면 프로그램 수준에서 Sort를 호출하고 등가 키 루틴을 지정합니다.
/STABLE과 /NODUPLICATES 한정자는 호환되지 않습니다. 같은 명령행에 두 한정자 모두를 지정할 수 없습니다.
다음 보기에서는 중복된 계정 번호가 있는 레코드를 EMPLOYEE.LST 파일에서 삭제합니다.
$ SORT /KEY=(POSITION:5,SIZE:4)/NODUPLICATES EMPLOYEE.LST BUDGET.LST
그림 9-7에서는 이 정렬 작업의 결과를 보여 줍니다.
그림 9-7 동일한 키 필드로 정렬
비문자 데이터
문자 데이터가 아닌 항목을 포함하는 레코드를 정렬하는 경우 각 키의 데이터 유형을 지정합니다. 또한 비교하는 항목이 1바이트 이상을 사용할 수 있으므로 시작 위치와 크기를 주의해서 계산해야 합니다.
20자 다음에 3개의 F_floating 형식 부동 소수점 수가 오는 파일을 정렬할 경우 위치는 다음과 같습니다.
문자 데이터는 위치 1에서 20(20자)을 사용합니다.
첫 번째 F_floating-point 수는 위치 21에서 24를 사용합니다.
두 번째 F_floating-point 수는 위치 25에서 28을 사용합니다.
세 번째 F_floating-point 수는 위치 29에서 32를 사용합니다.
세 번째 부동 소수점 수를 기준으로 정렬하려면 다음과 같이 키 필드를 지정합니다.
$ SORT/KEY=(POSITION:29,F_FLOATING) STATS.RAW STATS.SOR
부동 소수점 수의 크기는 4바이트로 고정되어 있으므로 크기를 지정할 필요는 없습니다.
출력 파일 조직
기본적으로 Sort에서는 첫 번째 입력 파일과 같은 파일 조직으로 출력 파일을 만듭니다. 다른 출력 파일 조직을 지정하려면 Sort 명령행의 출력 파일 지정 방법 다음에 다음 한정자 중 하나를 포함시킵니다.
/FORMAT(레코드 형식)
이 출력 한정자를 사용할 경우 파일 레코드 형식, 길이 및 블록 크기를 정의할 수 있습니다.
/INDEXED_SEQUENTIAL
이 한정자를 사용하여 인덱스 순차 파일 조직이 있도록 출력 파일을 정의할 수 있습니다. 출력 파일 조직으로 인덱스 순차 파일을 지정하려면 다음 작업도 수행해야 합니다.
정렬 작업 수행 전에 출력 파일로 사용할 빈 파일을 만듭니다. Sort는 이미 존재하며 비어 있는 출력 파일을 필요로 합니다.
SORT 명령행에서 출력 파일 이름 다음에 /OVERLAY 한정자를 포함시킵니다. /OVERLAY 한정자는 기존 파일이 입력 파일의 정렬된 레코드와 오버레이됨을 나타냅니다.
/RELATIVE
이 한정자를 사용하여 상대적 파일 조직이 있도록 출력 파일을 정의할 수 있습니다.
/SEQUENTIAL
이 한정자를 사용하여 순차적 파일 조직이 있도록 출력 파일을 정의할 수 있습니다.
다음 보기에서는 인덱스 순차 파일 EMPLOYEE.LST가 정렬된 후 순차 파일이 만들어집니다.
$ SORT/KEY=(POSITION:10,SIZE:15) -
_$ EMPLOYEE.LST BYNAME.LST/SEQUENTIAL

정렬 프로세스
Sort는 레코드, 태그, 주소 또는 인덱스와 같은 내부 프로세스 중 하나를 사용하여 파일을 정렬합니다. 고성능 Sort/Merge 유틸리티에서는 레코드 프로세스만 지원합니다. 태그, 주소 및 인덱스 프로세스 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. 지정하는 프로세스에 따라 정렬 작업의 효율성에 영향을 줄 수 있습니다. 정렬 또는 병합 작업을 최적화하는 데 대한 자세한 내용은 정렬 또는 병합 작업 최적화를 참조하십시오.
다음 표에서는 이와 같은 네 가지 프로세스 유형을 설명합니다. 정렬 프로세스를 지정하려면 /PROCESS=type 한정자를 사용합니다.
표 9-3
정렬 프로세스
type
설명
레코드
RECORD
정렬하는 동안 레코드를 그대로 보관하고 전체 레코드로 구성되는 출력 파일을 만듭니다. 레코드는 기본 정렬 프로세스입니다.
태그
TAG
키 필드만 정렬한 다음 입력 파일을 다시 읽어 전체 레코드의 출력 파일을 만듭니다. 최종 결과는 전체 레코드 정렬과 같습니다.
태그 정렬은 정렬하는 동안 일반적으로 더 적은 작업 파일 공간을 사용하므로 디스크 공간이 적은 경우에 유용합니다. 대부분의 경우 태그 정렬은 입력 파일을 다시 읽는 데 시간이 더 걸리므로 레코드 정렬보다 느립니다.
주소
ADDRESS
키 필드만 정렬하고 이진 형식의 RFA(레코드 파일 주소)의 인덱스인 출력 파일을 만듭니다.
주소 정렬은 레코드 정렬보다 빠르지만 레코드 주소와 입력 파일의 레코드를 연결하는 프로그램을 작성해야 합니다.
인덱스
INDEX
키 필드만 정렬하고 키와 RFA의 출력 파일(이진 형식)을 만듭니다.
주소 정렬과 마찬가지로 인덱스 정렬은 레코드 정렬보다 빠르지만 레코드 주소와 입력 파일의 레코드를 연결하는 프로그램을 작성해야 합니다.

조합 순서 지정
문자는 조합 순서에 따라 정렬됩니다. 문자 데이터를 포함하는 파일인 경우 /COLLATING_SEQUENCE=sequence 한정자를 사용하여 조합 순서를 지정할 수 있습니다. 다음 표에서는 조합 순서 옵션을 설명합니다.
표 9-4
조합 순서
순서
설명
ASCII
ASCII
문자 데이터의 기본 조합 순서입니다. ASCII 순서는 숫자(0-9), 대문자(A-Z), 소문자(a-z)순으로 정렬합니다.
EBCDIC
EBCDIC
EBCDIC 순서로 정렬된 출력 파일을 생성합니다. 데이터는 ASCII 표시로 남아 있습니다 EBCDIC 순서는 소문자(a-z), 대문자(A-Z), 숫자(0-9)순으로 정렬합니다.
DEC 다국적 문자 집합
MULTINATIONAL
다국적 조합 순서는 DEC 다국자 문자 집합(경로 확인 보류 참조)에 따라 문자를 조합합니다. MULTINATIONAL 문자 순서에서 문자는 다음 규칙에 따라 정렬됩니다.
문자의 분음 양식은 해당 문자의 조합 값이 지정됩니다(A', A", A`는 A로 조합됨).
소문자는 해당 대문자의 동일한 조합 값이 지정됩니다(a는 A로, a"는 A"로 조합됨).
두 문자열이 동등하게 비교되면 연결 구분이 수행됩니다. 이 문자열을 비교하여 분음 기호, 무시된 문자 또는 실제로 다르지만 동등하게 조합된 문자에 따른 차이점을 찾습니다. 문자열이 계속 동등하게 비교되면 문자의 숫자 코드에 따라 다른 비교가 수행됩니다. 마지막 비교에서 소문자가 대문자 앞에 정렬됩니다.
국가별 문자
집합(NCS)
조합 순서 이름
명명한 조합 순서가 NCS 라이브러리에 정의되어야 합니다. 자세한 내용은 OpenVMS National Character Set Utility Manual을 참조하십시오.
고성능 Sort/Merge 유틸리티에서는 NCS 조합 순서를 지원하지 않습니다. NCS에 대한 지원은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
사용자 정의
순서
(순서 문자열)
사용자 정의 조합 순서를 지정합니다. 사용자 정의 조합 순서는 명령행 인터페이스가 아닌 지정 방법 파일을 통해서만 지원됩니다.
고성능 Sort/Merge 유틸리티에서는 사용자 정의 조합 순서를 지원하지 않습니다. 사용자 정의 조합 순서에 대한 지원은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
조합 순서
순서
설명
단일 또는 이중 문자로 된 문자열이나 단일 문자의 범위를 지정하여 조합 순서를 정의합니다. 이중 문자는 한 문자인 것처럼 조합된 두 개의 단일 문자 집합입니다. 예를 들어 “CH”는 “C”로 조합되도록 정의할 수 있습니다. 이 문자열은 괄호로 묶어야 합니다.
또한 기수 연산자 %O, %D, %X를 사용하여 해당하는 8진수, 10진수 또는 16진수 값으로 문자를 나타낼 수 있습니다.
조합 순서를 지정하는 경우 다음 규칙을 따라야 합니다.
문자를 인용 부호(“ ”)로 묶습니다.
각 문자와 문자 범위를 쉼표(,)로 구분하고 전체 목록을 괄호로 묶습니다.
정렬 또는 병합 작업의 문자 키에 표시되는 모든 문자에 조합 값을 지정합니다. 조합 값이 지정되지 않는 문자는 FOLD 또는 MODIFICATION 옵션이 지정되는 경우를 제외하고는 무시됩니다.
문자를 한 번만 정의합니다.
인용 부호(“ ”)를 사용하여 null 문자를 지정하면 안 됩니다. 대신 %X0와 같은 기수 연산자를 사용합니다.
다른 인용 부호 집합(“ “ ” ”)으로 인용 부호를 묶거나 기수 연산자를 사용하여 지정합니다.
다음 문자열은 이중 문자 LL이 L과 M 사이의 단일 문자로 조합되는 조합 순서를 정의합니다.
("A"-"L","LL","M"-"Z")

주) 추가적인 처리를 위해 파일을 정렬하거나 병합하는 데 다국적 조합 순서를 사용하는 경우 주의를 기울여야 합니다. 대부분의 프로그래밍 언어에서 순서 검사 프로시저는 숫자형 문자를 비교합니다. 다국적 순서는 문자를 나타내는 코드가 아닌 실제 그래픽 문자를 기준으로 하므로 일반 순서 검사가 작동하지 않습니다.
다음 보기에서는 지정 방법 파일에서 사용할 사용자 정의 조합 순서를 작성하는 것을 보여 줍니다. 지정 방법 파일에 대한 자세한 내용은 Sort/Merge 지정 방법 파일 사용을 참조하십시오.
1.
/COLLATING_SEQUENCE=(SEQUENCE=ASCII,IGNORE=("-"," ") )
IGNORE 옵션이 지정된 이 /COLLATING_SEQUENCE 한정자는 연결 구분을 수행하기 전에 다음 필드를 동등하게 비교합니다.
252-3412
252 3412
2523412
2.
/COLLATING_SEQUENCE=(SEQUENCE=("A"-"L","LL","M"-"R","RR","S"-"Z") )
이 /COLLATING_SEQUENCE 한정자는 이중 문자 LL을 L과 M 사이의 단일 문자로 조합하고 이중 문자 RR을 R과 S 사이의 단일 문자로 조합합니다. 그렇지 않으면 이 이중 문자는 일반적인 사전순으로 표시됩니다. 기본적으로 이 사용자 정의 순서에서는 소문자 a-z와 같은 다른 문자를 정의하지 않습니다.
일괄 처리 작업으로 Sort 실행
일괄 처리 작업은 현재 세션과는 별도로 실행되는 프로그램이나 DCL 명령 프로시저입니다. 큰 파일을 정렬할 경우에는 정렬하는 데 시간이 걸리므로 일괄 처리 작업으로 정렬 작업을 실행하는 것이 좋습니다. 일괄 처리 작업과 명령 프로시저에 대한 자세한 내용은 16장, 13장 및 14장을 참조하십시오.
명령 프로시저
화면에 쓰는 것과 같이 명령 프로시저에 SORT 명령을 지정합니다. 기본 디렉토리에 정렬할 파일이 포함되어 있지 않으면 명령 프로시저에 기본 디렉토리를 명시적으로 설정하거나 명령 파일 지정 방법에 이 디렉토리를 포함시킵니다.
다음 보기에서는 DCL 명령 프로시저 SORTJOB.COM을 일괄 처리 작업으로 제출합니다. 명령 프로시저의 텍스트는 명령행 다음에 표시됩니다.
SUBMIT SORTJOB

! SORTJOB.COM
!
$ SET DEFAULT [USER.PER] ! Set default to location of input files
$ SORT/KEY=(POSITION:10,SIZE:15) EMPLOYEE.LST BYNAME.LST
$ TYPE BYNAME.LST
$ EXIT
입력 레코드 포함
한 행 당 하나의 레코드를 SORT 명령 다음에 지정하여 일괄 처리 작업에 입력 레코드를 포함시킬 수 있습니다. 개별 정렬 레코드는 한 행보다 길 수 있습니다.
레코드의 터미널 입력에서와 같이 입력 파일 매개 변수를 SYS$INPUT으로 지정합니다. /FORMAT 한정자를 사용하여 레코드 크기를 바이트로 지정하고 근사 파일 크기를 블록으로 지정합니다. 대략 80자로 된 여섯 행이 한 블록과 같습니다.
다음 보기에서는 명령 프로시저에 입력 레코드를 포함시키는 것을 보여 줍니다.
$ SUBMIT SORTJOB

! SORTJOB.COM
!
$ SET DEFAULT [USER.PER]
$ SORT/KEY=(POSITION:10,SIZE:15) -
SYS$INPUT-
/FORMAT=(RECORD_SIZE:24,FILE_SIZE:10) -
BYNAME.LST
$ DECK
BST 7828 MCMAHON JANE
ADM 7933 ROSENBERG HARRY
COM 8102 KNIGHT MARTHA
ANS 8042 BENTLEY PETER
BIO 7951 LOWELL FRANK
$ EOD
파일 병합
MERGE 명령은 최대 10개(고성능 Sort/Merge 유틸리티는 12개)의 정렬된 파일을 하나의 정렬된 출력 파일로 결합합니다. 형식이 같고 동일한 키 필드로 정렬된 입력 파일을 병합할 수 있습니다.
기본적으로 Merge에서는 입력 파일의 레코드 순서를 확인하여 제대로 정렬되어 있는지 확인합니다. Merge에서 순서를 확인하지 않도록 하려면 /NOCHECK_SEQUENCE 한정자를 지정합니다. /CHECK_SEQUENCE 한정자를 지정했는데 레코드 순서가 잘못된 경우(예: 입력 파일 중 하나를 정렬하지 않은 경우) Merge에서는 다음 오류를 보고합니다.
%SORT-W-BAD_ORDER, merge input is out of order
SORT 명령에서와 같은 한정자를 MERGE 명령에서 사용할 수 있지만 다음 두 가지 예외가 있습니다.
병합 작업에는 프로세스(/PROCESS)를 지정할 수 없습니다.
/CHECK_SEQUENCE 한정자는 병합 작업에만 사용됩니다.
다음 보기에서 BYNAME1.LST와 BYNAME2.LST 파일은 이미 직원 이름에 따라 오름차순으로 정렬되어 있습니다. 아래의 명령은 이 두 파일을 병합합니다.
$ MERGE BYNAME1.LST,BYNAME2.LST BYNAME3.LST
출력 파일 BYNAME3.LST는 다음 그림에서와 같이 두 파일 BYNAME1.LST와 BYNAME2.LST의 모든 레코드를 포함합니다.
그림 9-8
정렬된 파일
특정 키를 사용하여 정렬된 파일을 병합하려면 MERGE 명령행의 /KEY 한정자와 동일한 키를 지정해야 합니다.
키를 지정하지 않으면 Merge에서는 정렬된 파일에 설명된 기본 키를 사용합니다.
다음 보기에서 BILLING1.LST와 BILLING4.LST 파일은 계정 번호(/KEY=POSITION:5,SIZE:4,DECIMAL)에 따라 정렬됩니다. 이 파일을 출력 파일 MAILING.LST로 병합하려면 다음 명령행을 입력합니다.
$ MERGE/KEY=(POSITION:5,SIZE:4,DECIMAL) -
_$ BILLING1.LST,BILLING4.LST MAILING.LST
병합의 결과는 다음과 같습니다.
그림 9-9
병합할 파일이 올바로 정렬되어 있는 경우 /NOCHECK_SEQUENCE 한정자를 지정하여 순서 검사를 생략할 수 있습니다.
동일한 키 필드
정렬 작업에서와 마찬가지로 Merge는 입력 파일에 키 필드가 같은 레코드가 포함되어 있는 경우 입력 파일에 표시된 레코드의 순서와 항상 같게 유지하지는 않습니다. 키가 같은 레코드의 입력 순서를 유지하려면 MERGE 명령행에 /STABLE 한정자를 지정합니다. 키가 같은 레코드의 복사본 하나만을 유지하려면 /NODUPLICATES 한정자를 지정합니다.
터미널에서 레코드 입력
정렬하거나 병합할 레코드가 파일에 있어야만 하는 것은 아닙니다. SORT 또는 MERGE 명령을 입력할 때 터미널에서 직접 레코드를 입력할 수 있습니다. 다음 표에서 그 절차를 설명합니다.
표 9-5
단계
작업
1
SORT 또는 MERGE 명령행에 입력 파일로 SYS$INPUT을 지정합니다.
입력 파일 한정자 /FORMAT을 사용하여 가장 긴 레코드의 크기를 바이트로 지정하고 입력 파일의 근사 크기를 블록으로 지정합니다.
2
연속된 행에 입력 레코드를 입력합니다.
Return을 눌러 각 레코드를 종료합니다.
3
파일을 종료하려면 Ctrl/Z를 누릅니다.

다음 보기에서는 정렬할 입력 레코드를 터미널에서 직접 입력하는 정렬 작업을 보여 줍니다.
$ SORT/KEY=(POSITION:8,SIZE:15) -
_$ SYS$INPUT/FORMAT=(RECORD_SIZE:24,FILE_SIZE:10) BYNAME.LST
BST 7828 MCMAHON JANE
ADM 7933 ROSENBERG HARRY
COM 8102 KNIGHT MARTHA
ANS 8042 BENTLEY PETER
BIO 7951 LOWELL FRANK
이 명령 순서는 정렬된 레코드를 포함하는 출력 파일 BYNAME.LST를 만듭니다.
Sort/Merge 지정 방법 파일 사용
Sort/Merge에서는 지정 방법 파일로 정렬 정의를 유지하고 좀 더 복잡한 정렬 기준을 지정할 수 있습니다. 고성능 Sort/Merge 유틸리티에서는 지정 방법 파일을 지원하지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. 표준 편집기나 DCL CREATE 명령을 사용하여 지정 방법 파일을 만들 수 있습니다.
Sort/Merge 지정 방법 파일을 사용하여 다음을 수행할 수 있습니다.
정렬/병합 작업에 포함시킬 레코드 선택
출력 파일의 레코드 다시 형식화
조건부 키 또는 데이터 사용
여러 레코드 형식 지정
조합 순서 만들기 또는 수정
작업 파일 재지정
자주 사용하는 정렬/병합 작업 저장
지정 방법 파일을 작성한 후 /SPECIFICATION 한정자를 사용하여 파일 이름을 지정합니다. 지정 방법 파일의 기본 파일 유형은 .SRT입니다.
지정 방법 파일의 각 명령은 슬래시(/)로 시작해야 합니다. 명령이 두 행 이상 계속되는 경우 연결 문자를 사용할 필요가 없습니다.
주) 지정 방법 파일에서 사용되는 여러 한정자는 Sort/Merge 명령행에서 사용되는 DCL 한정자와 유사합니다. 그러나 이러한 한정자의 구문은 다를 수 있습니다. 예를 들어, DCL 수준의 /KEY 한정자는 지정 방법 파일의 /KEY 한정자와 구문이 다릅니다. 지정 방법 파일 한정자에 대한 요약은 지정 방법 파일 한정자를 참조하십시오.
명령행에 지정하는 DCL 명령 한정자가 지정 방법 파일의 해당 항목보다 우선합니다. 예를 들어, DCL 명령행에 /KEY 한정자를 지정하면 Sort/Merge에서는 지정 방법 파일의 /KEY 절을 무시합니다.
일반적으로 지정 방법 파일에서 한정자를 지정할 때 따라야 하는 순서는 없습니다.
그러나 다음과 같은 경우에는 순서가 중요합니다.
NUMBER:n 키 요소를 지정하지 않고 두 개 이상의 키 필드로 정렬하는 경우
출력 형식을 설명하는 경우
여러 레코드 유형을 정의하는 경우
/COLLATING_SEQUENCE 한정자에 FOLD, MODIFICATION 및 IGNORE 키워드를 지정하는 경우 FOLD 절 앞에 모든 MODIFICATION 및 IGNORE 절을 지정해야 합니다. /COLLATING_SEQUENCE 한정자에 대한 자세한 내용은 지정 방법 파일 한정자를 참조하십시오.
각 주석 행을 감탄 부호(!)로 시작하여 지정 방법 파일에 주석을 포함시킬 수 있습니다. DCL 명령행과는 달리 지정 방법 파일에서는 행을 연결하는 데 하이픈(-)을 사용할 필요가 없습니다.
보기
1. 다음은 음의 데이터와 양의 데이터를 오름차순으로 정렬하는 데 사용할 수 있는 지정 방법 파일의 보기입니다.
! Specification file for sorting negative and positive data
! in ascending order
!
/FIELD=(NAME=SIGN,POS:1,SIZ:1) [1]
/FIELD=(NAME=AMT,POS:2,SIZ:4) [2]
/CONDITION=(NAME=CHECK1, [3]
TEST=(SIGN EQ "-") )
/CONDITION=(NAME=CHECK2, [4]
TEST=(SIGN EQ " ") )
/INCLUDE=(CONDITION=CHECK1, [5]
KEY=(AMT,DESCENDING),
DATA=SIGN,
DATA=AMT)
/INCLUDE=(CONDITION=CHECK2, [6]
KEY=(AMT,ASCENDING),
DATA=SIGN,
DATA=AMT)
지정 방법 파일을 검토하면서 다음을 참조하십시오.
[1] 이 명령행은 레코드의 바이트 1에서 시작하고 길이가 1바이트인 필드를 정의하고 이 필드에 SIGN이라는 이름을 할당합니다.
[2] 이 명령행은 레코드의 바이트 2에서 시작하고 길이가 4바이트인 필드를 정의하고 이 필드에 AMT라는 이름을 할당합니다.
[3] 조건문입니다. SIGN 바이트에 음수 기호(-)가 있으면 CHECK1 조건에 맞습니다.
[4] 조건문입니다. SIGN 바이트가 비어 있으면 CHECK2 조건에 맞습니다.
[5] 조건 CHECK1에 맞으면 레코드를 내림차순으로 정렬합니다.
[6] 조건 CHECK2에 맞으면 레코드를 오름차순으로 정렬합니다.
그림 9-10에서는 BALANCES.LIS라는 입력 파일에서 이 지정 방법 파일을 사용한 결과를 보여 줍니다.
그림 9-10 지정 방법 파일을 사용한 출력
2.
/FIELD=(NAME=RECORD_TYPE,POS:1,SIZ:1) ! Record type, 1-byte
/FIELD=(NAME=PRICE,POS:2,SIZ:8) ! Price, both files
/FIELD=(NAME=TAXES,POS:10,SIZ:5) ! Taxes, both files
/FIELD=(NAME=STYLE_A,POS:15,SIZ:10) ! Style, format A file
/FIELD=(NAME=STYLE_B,POS:20,SIZ:10) ! Style, format B file
/FIELD=(NAME=ZIP_A,POS:25,SIZ:5) ! Zip code, format A file
/FIELD=(NAME=ZIP_B,POS:15,SIZ:5) ! Zip code, format B file
/CONDITION=(NAME=FORMAT_A, ! Condition test, format A
TEST=(RECORD_TYPE EQ 'A') )
/CONDITION=(NAME=FORMAT_B, ! Condition test, format B
TEST=(RECORD_TYPE EQ 'B') )
/INCLUDE=(CONDITION=FORMAT_A, ! Output format, type A
KEY=ZIP_A,
DATA=PRICE,
DATA=TAXES,
DATA=STYLE_A,
DATA=ZIP_A)
/INCLUDE=(CONDITION=FORMAT_B, ! Output format, type B
KEY=ZIP_B,
DATA=PRICE,
DATA=TAXES,
DATA=STYLE_B,
DATA=ZIP_B)
이 보기에서는 한 부동산 중개소의 다른 두 지부의 입력 파일 두 개가 지정 방법 파일에 지정된 지시 사항에 따라 정렬됩니다. 처음 위치가 A로 시작하는 첫 번째 파일의 레코드 형식은 다음과 같습니다.
|A|PRICE|TAXES|STYLE|ZIP|
1 2 10 15 25
처음 위치가 B로 시작하고 예약된 스타일 및 우편 번호 필드가 있는 두 번째 파일의 레코드 형식은 다음과 같습니다.
|B|PRICE|TAXES|ZIP|STYLE|
1 2 10 15 20
레코드 형식 A의 우편 번호 필드에서 이 두 파일을 정렬하려면 우선 /FIELD 한정자로 두 레코드의 필드를 정의합니다. 그런 다음 /CONDITION 한정자에 두 유형의 레코드를 구분하기 위한 테스트를 지정합니다. 마지막으로 /INCLUDE 한정자는 출력에서 레코드 형식 유형 B를 레코드 형식 A로 변경합니다.
/INCLUDE 한정자에 키나 데이터 필드를 지정하는 경우 /INCLUDE 한정자에 정렬 작업을 위한 모든 키와 데이터 필드를 명시적으로 지정해야 합니다.
또한, 유형 A 또는 유형 B가 아닌 레코드는 정렬에서 제외됩니다.
3.
/COLLATING_SEQUENCE=(SEQUENCE=
("AN","EB","AR","PR","AY","UN","UL",
"UG","EP","CT","OV","EC","0"-"9"),
MODIFICATION=("'"="19"),
FOLD)
이 /COLLATING_SEQUENCE 한정자는 각 월에 연대순으로 고유한 값을 지정하는 사용자 정의 순서를 지정합니다. 예를 들어, 날짜에 따라 SEMINAR.DAT라는 파일을 정렬할 경우 파일 SEMINAR.DAT는 다음과 같이 설정됩니다.
16 NOV 1983 Communication Skills
05 APR 1984 Coping with Alcoholism
11 Jan '84 How to Be Assertive
12 OCT 1983 Improving Productivity
15 MAR 1984 Living with Your Teenager
08 FEB 1984 Single Parenting
07 Dec '83 Stress --- Causes and Cures
14 SEP 1983 Time Management
기본 키는 년도 필드이고 보조 키는 월 필드입니다. 월 필드는 숫자가 아니므로 월을 연대순으로 정렬하려면 사용자 고유의 조합 순서를 정의해야 합니다. 이렇게 하려면 각 월의 두 번째 글자 두개에 따라(연대순으로) 정렬하여 각 월에 고유한 키 값을 지정합니다.
MODIFICATION 옵션은 어포스트로피(')가 19와 일치하도록 지정하므로 '83과 1984의 비교가 가능합니다. FOLD 옵션은 대문자와 소문자가 동일하게 처리되도록 지정합니다.
이 정렬 작업의 출력은 다음과 같습니다.
14 SEP 1983 Time Management
12 OCT 1983 Improving Productivity
16 NOV 1983 Communication Skills
07 Dec '83 Stress --- Causes and Cures
11 Jan '84 How to Be Assertive
08 FEB 1984 Single Parenting
15 MAR 1984 Living with Your Teenager
05 APR 1984 Coping with Alcoholism
사용자 정의 조합 순서를 만드는 다른 보기는 조합 순서 지정을 참조하십시오.
4.
/FIELD=(NAME=AGENT,POSITION:20,SIZE:15)
/CONDITION=(NAME=AGENCY,
TEST=(AGENT EQ "Real-T Trust"
OR
AGENT EQ "Realty Trust") )
/DATA=(IF AGENCY THEN "Realty Trust" ELSE AGENT)
이 보기에서는 두 개의 부동산 파일이 정렬됩니다. 한 파일은 중개소를
Real-T Trust로 참조하고, 다른 파일은 같은 중개소를 Realty Trust로 참조합니다. /CONDITION 및 /DATA 한정자는 Sort가 정렬된 출력 파일의 AGENT 필드를 Realty Trust로 나열하도록 지시합니다.
5.
/FIELD=(NAME=ZIP,POSITION:60,SIZE:6)
/CONDITION=(NAME=LOCATION,
TEST=(ZIP EQ "01863") )
/KEY=(IF LOCATION THEN 1
ELSE 2)
이 보기에서는 우편 번호가 01863인 모든 레코드가 정렬된 출력 파일의 시작 부분에 표시됩니다. 조건 테스트는 ZIP 필드에 있으며 /FIELD 한정자에서 정의됩니다. 조건의 이름은 LOCATION입니다. 이 /KEY 한정자의 값 1과 2는 조건에 맞는 레코드와 맞지 않는 레코드에 대한 상대적인 순서를 나타냅니다.
6.
/FIELD=(NAME=ZIP,POSITION:60,SIZE:6)
/CONDITION=(NAME=LOCATION,
TEST=(ZIP EQ "01863") )
/DATA=(IF LOCATION THEN "NORTH CHELMSFORD"
ELSE "Outside district")
이 보기에서는 /CONDITION 한정자가 01863 우편 번호를 테스트합니다. /DATA 한정자는 테스트 결과에 따라 출력 레코드에 지역 이름 필드를 추가하도록 지정합니다.
7.
/FIELD=(NAME=FFLOAT,POS:1,SIZ:0,F_FLOATING)
/CONDITION=(NAME=CFFLOAT,TEST=(FFLOAT GE 100) )
/OMIT=(CONDITION=CFFLOAT)
이 보기에서는 필드 FFLOAT가 /FIELD 한정자에서 F_FLOATING으로 정의되므로 번호 100이 F_FLOATING 데이터 유형인 것으로 간주됩니다.
8.
/FIELD=(NAME=AGENT,POSITION:1,SIZE:5)
/FIELD=(NAME=ZIP,POSITION:6,SIZE:3)
/FIELD=(NAME=STYLE,POSITION:10,SIZE:5)
/FIELD=(NAME=CONDITION,POSITION:16,SIZE:9)
/FIELD=(NAME=PRICE,POSITION:26,SIZE:5)
/FIELD=(NAME=TAXES,POSITION:32,SIZE:5)
/DATA=PRICE
/DATA=" "
/DATA=TAXES
/DATA=" "
/DATA=STYLE
/DATA=" "
/DATA=ZIP
/DATA=" "
/DATA=AGENT
/FIELD 한정자는 형식이 다음과 같은 입력 파일의 레코드에 필드를 정의합니다.
AGENT ZIP STYLE CONDITION PRICE TAXES
/FIELD 한정자에 정의된 필드 이름을 사용하는 /DATA 한정자는 레코드를 다시 형식화하여 형식이 다음과 같은 출력 레코드를 만듭니다.
PRICE TAXES STYLE ZIP AGENT
정렬 또는 병합 작업 최적화
정렬 환경에 따라 정렬 또는 병합 작업의 효율성을 향상시킬 수 있는 여러 방법이 있습니다. 정렬 환경의 변수에 대한 정보를 보려면 SORT 또는 MERGE 명령에 /STATISTICS 한정자를 사용합니다.
통계 표시를 검토한 후 다음 절에서 제공된 최적화 옵션을 고려해 보십시오.
/STATISTICS 한정자와 함께 SORT 또는 MERGE 명령을 입력하면 다음과 유사한 출력이 나타납니다.
$ SORT/STATISTICS PAGEANT.LIS DOCUMENT.LIS
OpenVMS Sort/Merge Statistics

Records read: 3 [1] Input record length: 26
Records sorted: 3 Internal length: 28
Records output: 3 Output record length: 26
Working set extent: 16384 [2] Sort tree size: 42
Virtual memory: 392 Number of initial runs: 0
Direct I/O: 10 Maximum merge order: 0
Buffered I/O: 11 Number of merge passes: 0
Page faults: 158 [3] Work file allocation: 0 [4]
Elapsed time: 00:00:00.54 Elapsed CPU: 00:00:00.03 [5]
다음 필드를 검토하면서 다음을 참조하십시오.
[1] Records read
정렬 작업 동안 읽은 레코드 수를 나열합니다. 정렬 작업에서 레코드를 선택하여 생략하는 데 대한 내용은 레코드 및 필드 생략을 참조하십시오.
[2] Working set extent
정렬 작업을 수행하기 위해 예약된 블록 수를 나타냅니다. 작업 집합을 늘리는 데 대한 자세한 내용은 작업 집합 범위 수정을 참조하십시오.
[3] Page faults
운영 체제에서 프로세스의 부분을 실제 메모리에서 페이징 장치로 전송한 횟수를 보여 줍니다. 페이징 제한에 대한 자세한 내용은 작업 집합 범위 수정을 참조하십시오.
[4] Work file allocation
작업 파일을 위해 예약된 디스크 공간을 보여 줍니다. 작업 파일에 대한 자세한 내용은 작업 파일 할당을 참조하십시오.
[5] Elapsed CPU
운영 체제에서 정렬 작업을 처리하는 데 걸린 CPU 시간을 보여 줍니다. 다른 정렬 방법을 선택하여 시간을 절약하는 데 대한 자세한 내용은 정렬 프로세스를 참조하십시오.
정렬 프로세스
Sort에서는 데이터 정렬을 위해 내부적으로 레코드, 태그, 주소, 인덱스 등 네 개의 프로세스를 정의합니다. 고성능 Sort/Merge 유틸리티는 레코드 프로세스만 지원합니다. 태그, 주소 및 인덱스 프로세스 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. RECORD가 기본 프로세스입니다. 선택하는 프로세스 유형에 따라 저장 요구 사항 및 정렬 작업의 성능에 영향을 미칩니다. 다른 정렬 프로세스에 대한 내용은 정렬 프로세스를 참조하십시오.
정렬 프로세스를 선택하기 전에 다음 사항을 고려하십시오.
출력 파일 사용 방법
레코드 및 태그 정렬에서는 정렬된 전체 레코드를 포함하는 파일을 생성하므로 다시 정렬된 파일을 바로 사용할 수 있습니다.
주소 및 인덱스로 정렬된 출력 파일 모두는 Pascal, Fortran, MACRO 또는 C와 같은 프로그래밍 언어로 작성한 프로그램에서 처리할 수 있습니다.
주소 정렬에서는 입력 파일의 레코드에 대한 포인터의 출력 파일을 만듭니다. 이 목록은 이진 RFA와 파일 번호(여러 입력 파일을 정렬할 경우)로 구성됩니다. 프로그램은 이 포인터를 사용하여 레코드를 액세스합니다.
인덱스 정렬에서는 RFA와 키 필드 모두와 파일 번호(여러 파일 정렬 시)를 포함하는 출력 파일을 만듭니다. 이 키 필드의 형식은 입력 파일과 같습니다. 프로그램에서 미래의 처리 중에 결정할 키 필드 내용을 필요로 하는 경우, 주소 정렬이 아니라 인덱스 정렬을 선택합니다.
한 파일의 레코드를 다른 용도를 위해 여러 방법으로 다시 정렬해야 할 경우 주소 또는 인덱스 정렬의 여러 출력 파일을 저장합니다. 이러한 출력 파일을 사용하여 원하는 정렬 순서로 주 파일의 레코드를 액세스합니다.
정렬에 사용할 수 있는 임시 저장 공간
태그 정렬은 레코드 정렬보다 임시 공간을 적게 사용합니다. 레코드 정렬에서는 정렬하는 동안 레코드를 그대로 유지하므로 파일이 클 경우 훨씬 많은 작업 공간을 사용합니다. 주소 및 인덱스 정렬은 임시 저장 공간을 거의 사용하지 않습니다.
사용된 입력 및 출력 장치 유형
레코드 정렬은 카드, 자기 테이프 및 디스크에서 입력을 받을 수 있는 유일한 프로세스입니다. 태그 및 레코드 정렬의 출력은 모든 출력 장치로 이동할 수 있습니다. 주소 및 인덱스 정렬의 출력은 이진 데이터를 수락하는 장치로 이동해야 합니다.
속도 차이
작업의 일정 지점에서 정렬된 레코드를 검색할 계획이라면 일반적으로 레코드 정렬이 가장 빠른 프로세스입니다. 그렇지 않은 경우 주소 및 인덱스 정렬이 가장 빠른 프로세스입니다.
레코드 및 필드 생략
지정 방법 파일에서 /CONDITION, /INCLUDE 및 /OMIT 한정자를 사용하여 출력 파일에 필요한 레코드만 처리하면 정렬 효율성을 향상시킬 수 있습니다. 고성능 Sort/Merge 유틸리티는 지정 방법 파일을 지원하지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. 또한 지정 방법 파일 한정자를 사용하여 출력 파일에서 필요 없는 필드를 생략하고 레코드를 다시 형식화할 수 있습니다. 이러한 한정자는 명령행 한정자로 사용할 수 없습니다.
작업 파일 할당
정렬 작업 동안 입력 파일의 레코드를 메모리로 읽어 들입니다. 할당된 메모리에서 모든 레코드를 보관할 수 없는 경우 Sort에서는 정렬된 데이터를 하나 이상의 임시 작업 파일로 전송합니다. Merge에서는 작업 파일을 사용하지 않습니다.
작업 파일 수를 변경하거나 작업 파일을 특정 장치에 할당하여 정렬 효율성을 향상시킬 수 있습니다.
Sort 명령행 한정자 /WORK_FILES=n은 할당된 작업 파일 수보다 우선합니다.
일반적으로 Sort에서는 작업 파일을 장치 SYS$SCRATCH에 저장하며 임의의 순서로 작업 파일을 액세스합니다. 다음 두 가지 방법으로 작업 파일을 특정 장치에 할당할 수 있습니다.
지정 방법 파일에서 /WORK_FILES=(device,...) 한정자는 작업 파일을 지정한 장치에 저장합니다. 지정 방법 파일에서 /WORK_FILES 한정자를 사용하는 데 대한 자세한 내용은 지정 방법 파일 한정자를 참조하십시오.
지정 방법 파일을 사용하지 않는 경우 DCL 명령 ASSIGN을 사용하여 작업 파일을 특정 장치에 할당할 수 있습니다.
Sort에서는 SORTWORKn 논리 이름을 사용하여 작업 파일에 대한 사용자 지정 장치 이름을 식별합니다. 여기서 n은 0에서 9까지의 값입니다. 고성능 Sort/Merge 유틸리티인 경우 n은 0에서 254까지의 값입니다. SORTWORKn 논리를 다음과 같이 정의합니다.
ASSIGN device: SORTWORKn
예를 들면 다음과 같습니다.
$ ASSIGN WORK$2: SORTWORK1
$ ASSIGN WORK$3: SORTWORK2
이 보기에서는 SORTWORK1을 장치 WORK$2:로 정의하고 SORTWORK2를 장치 WORK$3:으로 정의합니다. 논리 이름에 대한 자세한 내용은 11장을 참조하십시오.
작업 파일을 장치에 할당할 때 다음을 고려하십시오.
사용할 수 있는 가장 빠른 장치(예: 디스크와 같은 임의 액세스, 대용량 저장 장치)에 작업 파일을 할당합니다.
활동이 가장 적고 사용 가능한 공간이 가장 많은 장치를 선택합니다.
입력 및 출력의 중복을 최대화하려면 각각의 작업 파일을 다른 물리적 장치에 할당합니다.
작업 집합 범위 수정
Sort에서 작업 파일을 필요로 하는 경우(예: 큰 파일을 정렬할 경우) 더 큰 작업 집합이 정렬 효율성을 향상시킬 수 있습니다. 그러나 시스템이 과도하게 사용되는 경우 작업 집합 범위의 모든 페이지를 프로세스에 할당하지 못할 수 있습니다. 이렇게 되면 운영 체제에서 실제 메모리와 페이징 장치의 메모리 간의 프로세스 일부를 전송할 때 발생하는 페이징이 일어날 수 있습니다. 프로세스의 활성화된 부분만 실제 메모리에 남게 됩니다. 과도한 페이징을 방지하기 위해 프로세스의 작업 집합 범위를 줄일 수 있습니다 작업 집합 범위를 줄이려면 SET WORKING_SET 명령 사용합니다.
정렬/병합 한정자 요약
다음 목록에서는 SORT 및 MERGE 명령과 함께 사용되는 명령 한정자를 설명합니다. 명령 한정자를 사용하려면 SORT 또는 MERGE 명령 바로 다음에 한정자를 포함시킵니다.
/[NO]CHECK_SEQUENCE
MERGE 명령에만 적용됩니다. MERGE 입력 파일의 레코드 순서를 확인합니다. Merge에서는 기본적으로 레코드 순서를 확인합니다.
/CHECK_SEQUENCE 한정자는 하나 이상의 파일의 레코드(최대 10개, 고성능 Sort/Merge 유틸리티의 경우 최대 12개 지원)이 정렬되었는지 여부를 확인합니다. 레코드는 사용자가 지정해야 하는 출력 파일로 계속 보내집니다. 레코드가 전체 레코드가 아닌 키 필드에 따라 정렬되는지 여부를 확인하려면 순서 요청과 함께 키 정보를 지정해야 합니다.
Merge에서 레코드 순서를 확인하지 않도록 하려면 /NOCHECK_SEQUENCE 한정자를 사용합니다.
보기
$ MERGE/KEY=(SIZE:4,POSITION:3)/NOCHECK_SEQUENCE -
_$ PRICE1.DAT,PRICE2.DAT PRICE.LIS

이 보기에서 /NOCHECK_SEQUENCE 한정자는 입력 파일 PRICE1.DAT와 PRICE2.DAT의 순서를 확인하지 않도록 지정합니다.
/COLLATING_SEQUENCE=sequence
문자 키 필드에 대한 미리 정의된 세 가지 조합 순서 중 하나를 선택하거나 문자 키를 비교하는 데 사용할 NCS 조합 순서의 이름을 지정합니다. 고성능 Sort/Merge 유틸리티는 NCS 조합 순서를 지원하지 않습니다. NCS 조합 순서에 대한 지원은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. Sort는 ASCII(기본값), EBCDIC 또는 다국적 순서로 문자를 정렬합니다.
보기
$ SORT/COLLATING_SEQUENCE=MULTINATIONAL -
_$ NAMES.DAT,NOM.DAT LIST.LIS

이 SORT 명령은 입력 파일 NAMES.DAT와 NOM.DAT를 다국적 조합 순서에 따라 정렬하여 출력 파일 LIST.LIS를 만듭니다.
/[NO]DUPLICATES
기본적으로 Sort에서는 중복된 키가 있는 여러 레코드를 모두 유지합니다. /NODUPLICATES 한정자는 중복된 키가 있는 여러 레코드 중 하나만 제외하고 모두 제거합니다. 유지되는 레코드는 입력 파일에 표시된 순서와 동일하게 표시되지 않을 수 있습니다. 유지할 중복된 레코드를 지정하려면 프로그램 수준에서 Sort를 호출하고 등가 키 루틴을 지정합니다.
/STABLE과 /NODUPLICATES 한정자는 서로 배타적입니다.
보기
$ SORT/KEY=(POSITION:3,SIZE:5,DECIMAL)/NODUPLICATES -
_$ ACCT1,ACCT2 ACCT.LIS

이 SORT 명령은 두 개의 입력 파일을 제공된 키에 따라 정렬하고 등가 키의 여러 레코드 중 하나를 제외하고 모두 제거합니다.
/KEY=(POSITION:n,SIZE:n[,field,...])
위치, 크기, 정렬 순서(ASCENDING 또는 DESCENDING), 우선 순위(NUMBER:n) 및 데이터 유형(character, binary, h_floating 등)을 비롯한 키 필드를 설명합니다. 기본적으로 Sort는 문자 데이터를 사용하여 전체 레코드를 오름차순으로 정렬합니다.
/KEY 한정자에 대한 자세한 내용은 키 정의를 참조하십시오.
/PROCESS=type
SORT 명령에만 적용됩니다. 내부 정렬 프로세스를 정의합니다. /PROCESS 한정자에서 레코드, 태그, 주소, 인덱스 등 네 가지 프로세스 중 하나를 선택할 수 있습니다. 고성능 Sort/Merge 유틸리티는 레코드 프로세스만 지원합니다. 태그, 주소 및 인덱스 프로세스의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
/PROCESS 한정자에 대한 자세한 내용은 정렬 프로세스를 참조하십시오.
보기
$ SORT/KEY=(POS:40,SIZ:2,DESC)/PROCESS=TAG YRENDAVG.DAT -
_$ DESCYRAVG.LI
S
이 Sort 작업은 태그 정렬 프로세스를 사용하여 출력 파일 DESCYRAVG.LIS를 만듭니다.
/SPECIFICATION=filespec
고성능 Sort/Merge 유틸리티는 이 한정자를 지원하지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다.
정렬 또는 병합 작업에서 사용될 Sort 또는 Merge 지정 방법 파일을 식별합니다. 기본 지정 방법 파일 유형은 .SRT입니다.
지정 방법 파일 사용에 대한 자세한 내용은 Sort/Merge 지정 방법 파일 사용 및 지정 방법 파일 한정자를 참조하십시오.
/[NO]STABLE
기본적으로 등가 키가 있는 레코드는 입력 파일에 표시되는 순서대로 출력 파일에 위치한다고 보장할 수 없습니다. /STABLE 한정자는 해당 순서대로 레코드를 유지합니다.
/STABLE과 /NODUPLICATES 한정자는 서로 배타적입니다.
보기
$ SORT/KEY=(POS:1,SIZ:5,DECIMAL)/STABLE PRICESA.DAT, -
_$ PRICESB.DAT,PRICESC.DAT SUMMARY.LIS

이 Sort 작업에서는 PRICESA.DAT의 등가 키가 있는 레코드, PRICESB.DAT의 해당 레코드와 PRICESC.DAT의 해당 레코드 순으로 나열됩니다.
/[NO]STATISTICS
최적화에 사용할 수 있는 SYS$OUTPUT에 통계 요약을 표시합니다. 이러한 통계를 파일에 저장하려면 다음 명령을 사용합니다.
$ DEFINE/USER SYS$ERROR output-file
통계 요약에는 다음 정보가 포함됩니다.
표 9-6
통계
설명
Records read
Sort 또는 Merge에서 읽은 레코드 수입니다.
Records sorted
Sort를 사용하여 처리된 레코드 수입니다. 지정 방법 파일을 사용하여 정렬 또는 병합 작업에 대한 특정 레코드만 선택한 경우 읽은 레코드 수보다 이 수가 작을 수 있습니다.
Records output
출력 파일에 쓰여진 레코드 수입니다. /NODUPLICATES를 선택했거나 출력 레코드가 쓰여질 때 입출력 오류가 발생한 경우 정렬된 레코드 수보다 이 수가 작을 수 있습니다.
Working set extent
프로세스 작업 집합 범위의 페이지 수입니다. 이 값은 정렬 데이터 구조의 크기에 대한 상한값으로 사용됩니다. 이 값을 조정하는 것은 Sort 작업의 효율성을 향상시키는 한 가지 방법입니다.
Virtual memory
데이터를 보관할 Sort 이미지에 추가된 가상 메모리의 페이지 수입니다.
Direct I/O + buffered I/O
이 합계는 데이터를 읽고 쓰는 데 필요한 입출력 이동 수입니다. 이 합계가 작을수록 정렬 작업의 효율성은 향상됩니다.
Page faults
데이터가 메모리에 얼마나 적합한지를 나타냅니다. 페이지 오류 수가 클수록 정렬 작업 효율성은 낮습니다.
Elapsed time
정렬 또는 병합 작업에 사용된 시간, 분, 초 및 1/100초 단위의 총 벽시계 시간입니다.
Input record length
이 값은 사용자가 제공하지 않는 경우 OpenVMS RMS(레코드 관리 서비스)로부터 얻습니다.
Internal length
내부 형식 노드의 바이트 단위 크기입니다. 여기에는 키, 데이터, 길이를 저장할 단어, 레코드 파일 주소(RFA) 및 변환된 키가 포함됩니다.
Output record length
출력 레코드의 길이입니다. 이 길이는 입력 레코드 길이, 정렬 프로세스 및 요청한 레코드 다시 형식화에 따라 계산됩니다.
Sort tree size
Sort 내부 데이터 구조에 맞는 레코드 수입니다.
Number of initial runs
데이터가 메모리에 맞는 정도를 나타내는 하나의 표시입니다.
Maximum merge order
한 번에 병합되는 정렬된 문자열의 최대 수입니다.
Number of merge passes
하나의 정렬된 출력 문자열이 만들어질 때까지 Sort 유틸리티에서 문자열을 병합하는 횟수입니다. 초기 실행 수와 병합 통과 수는 데이터가 메모리에 적합한 정도를 나타냅니다. 이 수가 높을수록 작업 집합 크기가 데이터를 포함하는 위치에서 멀고 정렬하는 데 시간이 오래 걸립니다.
Work file allocation
작업 파일에 사용된 블록 수입니다. 두 개 이상의 병합 통과가 필요한 경우 이 크기는 입력 파일 할당 크기의 2배 정도입니다.
Elapsed CPU
정렬 작업에서 사용한 CPU 시간입니다. 여기에는 입출력 작업이 완료되는 동안 대기하는 시간이나 다른 프로세스가 실행하는 동안 대기하는 시간은 포함되지 않습니다.

보기
$ SORT/STATISTICS PRICE1.DAT,PRICE2.DAT PRICE.LIS
SORT /STATISTICS 명령은 다음 통계를 표시합니다.
OpenVMS Sort/Merge Statistics

Records read: 793 Input record length: 80
Records sorted: 793 Internal length: 80
Records output: 793 Output record length: 80
Working set extent: 100 Sort tree size: 412
Virtual memory: 433 Number of initial runs: 2
Direct I/O: 22 Maximum merge order: 2
Buffered I/O: 9 Number of merge passes: 1
Page faults: 3418 Work file allocation: 114
Elapsed time: 00:00:05.98 Elapsed CPU: 00:00:03.63
/WORK_FILES[=n]
SORT 명령에만 적용됩니다. 각 작업 파일 크기를 줄이려면 1에서 10 사이(1과 10 포함, 고성능 Sort/Merge 유틸리티의 경우 최대 255까지 지원)의 수로 Sort 작업 파일의 수를 늘립니다. 사용할 수 있는 디스크가 너무 적거나 작업 파일로 꽉 찬 경우 파일 수를 늘리면 Sort 작업의 효율성을 향상시킬 수 있습니다.
Sort는 필요할 때까지 작업 파일을 만들지 않습니다. Sort에서 작업 파일이 필요한 경우 기본적으로 SYS$SCRATCH 디렉토리에 있는 두 개의 작업 파일(SORTWORK0, SORTWORK1)을 만듭니다.
보기
$ ASSIGN DRA5: SORTWORK0
$ ASSIGN DB0: SORTWORK1
$ ASSIGN DB1: SORTWORK2
$ SORT/KEY=(POS:1,SIZ:80)/WORK_FILES=3 -
_$ STATS1,STATS2,STATS3,STATS4 SUMMARY.LIS

이 Sort 작업의 입력 파일은 큰 파일이므로 세 개의 작업 파일을 지정하면 정렬 작업의 효율성을 향상시킵니다.
또한 디렉토리 이름을 포함시켜 장치의 특정 디렉토리에 작업 파일을 할당할 수도 있습니다. 예를 들어, SORTWORK0을 DRA5의 [WORKSPACE] 디렉토리에 할당하려면 다음 명령을 입력합니다.
$ ASSIGN DRA5:[WORKSPACE] SORTWORK0
입력 파일 한정자
다음 입력 한정자는 SORT 또는 MERGE 명령행의 입력 파일 지정 방법 바로 다음에 포함시켜야 합니다.
/FORMAT=(RECORD_SIZE:n,FILE_SIZE:n)
입력 파일 특성을 정의합니다. 이 한정자를 사용하여 레코드 또는 파일 크기를 지정하거나 무시할 수 있습니다. 이 한정자는 Sort 또는 Merge 명령행에서 입력 파일 지정 방법 바로 다음에 지정해야 합니다.
Sort는 입력 파일 크기 정보를 사용하여 필요한 메모리 양과 정렬 작업의 작업 파일 크기를 결정합니다. 파일 크기를 모를 경우(예: 디스크나 표준 ANSI 자기 테이프에 상주하지 않는 파일을 정렬할 경우), Sort에서는 상당히 큰 파일 크기를 가정합니다.
다음 한정자 값을 지정합니다.
표 9-7
RECORD_SIZE:n
입력 파일의 가장 긴 레코드 길이(LRL)를 바이트 단위로 지정합니다. 지정할 수 있는 가장 긴 레코드 길이는 파일 조직에 따라 다릅니다.
순차적
상대적
인덱스 순차적
32,767
16,383
16,362
이 값은 고정 길이 제어(VFC) 형식인 가변 레코드의 제어 바이트를 포함합니다.
FILE_SIZE:n
입력 파일 크기를 블록으로 지정합니다. 허용되는 최대 파일 크기는 4,294,967,295블록입니다.

FORMAT은 출력 파일 한정자로도 사용할 수 있습니다.
자세한 내용은 출력 파일 한정자를 참조하십시오.
보기
$ SORT/KEY=(POS:40,SIZ:2,DESC) - _$CRA0:YRENDAVG.DAT/FORMAT=(RECORD_SIZE:41,FILE_SIZE:3) - _$DESCYRAVG.LIS
입력 파일 YRENDAVG.DAT는 디스크 장치나 ANSI 자기 테이프에 상주하지 않으므로 /FORMAT 한정자로 파일 조직을 설명해야 합니다.
출력 파일 한정자
다음 출력 한정자를 SORT 및 MERGE 명령과 함께 사용할 수 있습니다. 출력 파일 한정자를 사용하려면 SORT 또는 MERGE 명령행의 출력 파일 지정 방법 바로 다음에 한정자를 포함시킵니다.
/ALLOCATION=n
최적화를 위해 출력 파일에 미리 할당할 블록 수를 1과 4,294,967,295 사이에서 지정합니다. 출력 파일 할당이 전체 입력 파일 할당과 크게 다를 경우(예: 데이터를 다시 형식화하거나 레코드를 생략한 경우) 이 한정자를 사용합니다.
/ALLOCATION 한정자는 /CONTIGUOUS 한정자가 사용된 경우에 필요합니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT -
_$ SUMMARY.LIS/ALLOCATION=1000/CONTIGUOUS

이 SORT 명령은 출력 파일 SUMMARY.LIS에 1000개의 연속 블록을 할당합니다.
/BUCKET_SIZE=n
최적화를 위해 상대적 및 인덱스 순차 출력 디스크 파일에서 사용할 OpenVMS RMS 버킷 크기(버킷 당 512바이트 블록 수)를 지정합니다. 1에서 32까지의 값이 허용됩니다.
출력 파일 조직이 입력 파일과 같을 경우 기본값은 첫 번째 입력 파일의 버킷 크기와 같습니다. 출력 파일 조직이 다른 경우 기본값은 1입니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS1.DAT,STATS2.DAT -
_$ SUMMARY.LIS/BUCKET_SIZE=16/RELATIVE

이 SORT 명령은 버킷 크기가 16이고 상대적 조직의 출력 파일 SUMMARY.LIS를 만듭니다.
/CONTIGUOUS
액세스 시간을 줄이기 위해 출력 파일이 연속 디스크 블록에 저장되도록 요청합니다. /ALLOCATION 한정자와 함께 사용해야 합니다. 기본적으로 Sort/Merge는 출력 파일에 연속 디스크 블록을 할당하지 않습니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT - _$ SUMMARY.LIS/ALLOCATION=1000/CONTIGUOUS
이 SORT 명령은 출력 파일 SUMMARY.LIS에 1,000개의 연속 블록을 할당합니다.
/FORMAT=(type:n[,...])
출력 파일 레코드 형식이 입력 파일 형식과 다른 경우 출력 파일 레코드 형식(FIXED:n, VARIABLE:n, or CONTROLLED:n)을 지정합니다. 파일 레코드의 크기(SIZE:n)나 블록 크기(BLOCK_SIZE:n)도 지정할 수 있습니다.
Sort 작업이 레코드 또는 태그 정렬인 경우 기본 출력 레코드 형식은 첫 번째 입력 파일 레코드 형식과 같습니다. Sort 작업이 주소 또는 인덱스 정렬인 경우 기본 출력 레코드 형식은 고정 레코드 형식입니다. 입력 파일에 다른 레코드 서식이 있는 경우 Sort는 입력 파일의 가장 긴 레코드를 포함하기에 충분한 출력 레코드 크기를 제공합니다.
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-8
BLOCK_SIZE:n
출력 파일을 자기 테이프에 보낸 경우 출력 파일의 블록 크기를 바이트 단위로 지정합니다. 입력 파일이 테이프 파일인 경우 출력 파일의 블록 크기의 기본값은 입력 파일의 블록 크기로 설정됩니다. 그렇지 않은 경우 출력 파일 블록 크기의 기본값은 테이프가 마운트될 때 사용된 크기로 설정됩니다.
n에 사용 가능한 값은 20에서 65,532 사이지만 다른 Compaq 시스템과 올바른 데이터를 교환하려면 블록 사이즈를 512바이트 이하로 지정해야 합니다. Compaq에서 만들지 않은 시스템과의 호환성을 위해 블록 크기는 2,048바이트를 초과하지 않는 것이 좋습니다.
CONTROLLED:n
출력 파일의 고정 길이 제어(VFC) 레코드와 함께 변수를 지정합니다.
FIXED:n
출력 파일의 고정 길이 레코드를 지정합니다.
SIZE:n
VFC(CONTROLLED) 레코드의 고정 부분의 크기(바이트)를 최대 255바이트까지 지정합니다. SIZE를 지정하지 않으면 기본값은 첫 번째 입력 파일의 고정 부분의 크기가 됩니다. 이 크기를 0으로 지정하면, OpenVMS RMS에서 이 값을 2바이트로 설정합니다.
VARIABLE:n
출력 파일의 가변 길이 레코드를 지정합니다.

모든 한정자 값에 대해 출력 레코드의 최대 레코드 크기(바이트)로 n을 지정할 수도 있습니다. 사용할 수 있는 최대 레코드 크기는 다음과 같이 파일 조직에 따라 다릅니다.
순차 파일
32,767
상대적 파일
16,383
인덱스 순차 파일
16,362

이 최대 레코드 크기는 고정 길이 제어(VFC) 형식으로 가변 레코드의 제어 바이트를 포함합니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT SUMMARY.LIS/FORMAT=FIXED:80
입력 파일 STATS.DAT는 길이가 80바이트인 가변 길이 레코드로 구성됩니다. /FORMAT 한정자는 출력 파일 SUMMARY.LIS가 고정 길이 레코드로 구성되도록 지정합니다.
/INDEXED_SEQUENTIAL
출력 파일의 파일 조직을 인덱스 순차적으로 정의합니다. 출력 파일은 이미 존재하며 비어 있어야 합니다. 또한 /OVERLAY 한정자를 사용하여 이 빈 파일이 정렬된 레코드와 오버레이되도록 지정해야 합니다.
보기
$ CREATE/FDL=NEW.FDL AVERAGE.DAT
$ SORT/KEY=(POS:1,SIZ:80) DATA.DAT,STATS.DAT -
_$ AVERAGE.DAT/INDEXED_SEQUENTIAL/OVERLAY

CREATE/FDL 명령은 빈 파일 AVERAGE.DAT를 만듭니다. SORT 명령은 출력 파일에 인덱스 순차 조직이 있으며 이 출력 파일이 빈 파일 AVERAGE.DAT에 쓰여지도록 지정합니다.
/OVERLAY
출력 파일이 오버레이되거나 쓰여지는 기존의 빈 파일을 지정합니다. /INDEXED_SEQUENTIAL 한정자를 사용하는 경우 /OVERLAY 한정자가 필요합니다.
입력 파일 조직이 인덱스 순차인 경우 출력 파일은 이미 존재하며 비어 있어야 합니다. 출력 파일이 비어 있지 않는 경우 /OVERLAY에서는 해당 파일에 덮어쓰지 않습니다. 대신, 기존 출력 파일에 정렬 결과를 추가합니다.
CREATE/FDL 유틸리티를 사용하여 빈 데이터 파일을 만들 수 있습니다. 빈 파일을 만들 때 지정하는 모든 속성은 Sort 출력 파일의 속성이 됩니다.
보기
$ CREATE/FDL=NEW.FDL AVERAGE.DAT
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT AVERAGE.DAT/OVERLAY

FDL 파일 NEW.FDL은 AVERAGE.DAT 파일의 특수 속성을 지정합니다. Sort에서 해당 파일에 출력을 쓸 때 만들어지는 Sort 출력 파일은 FDL 파일에는 지정한 속성이 있습니다.
/RELATIVE
출력 파일의 파일 조직을 상대적 파일로 정의합니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT SUMMARY.LIS/RELATIVE
입력 파일 STATS.DAT가 상대적 파일이 아니고 출력 파일 SUMMARY.LIS가 상대적 파일이 되므로 /RELATIVE는 출력 파일 지정 방법을 한정합니다.
/SEQUENTIAL
출력 파일의 파일 조직을 순차적으로 정의합니다. 이 구성은 주소 및 인덱스 정렬 작업의 기본값입니다. 레코드 및 태그 정렬 작업의 기본값은 첫 번째 입력 파일의 조직입니다.
보기
$ SORT/KEY=(POS:1,SIZ:80) STATS.DAT SUMMARY.LIS/SEQUENTIAL
입력 파일 STATS.DAT는 순차 파일이 아니고 출력 파일 SUMMARY.LIS이 순차 파일이 되므로 /SEQUENTIAL에서 출력 파일 지정 방법을 한정합니다.
지정 방법 파일 한정자
다음 한정자는 지정 방법 파일에서 사용할 수 있습니다. 고성능 Sort/Merge 유틸리티는 지정 방법 파일을 지원하지 않습니다. 이 기능의 구현은 다음 OpenVMS Alpha 릴리즈로 연기되었습니다. 이러한 한정자는 Sort/Merge 지정 방법 파일 내에서만 유효합니다.
/CDD_PATH_NAME="cdd-path-name"
CDD/Repository 명령을 사용하여 Common Data Dictionary(CDD/Plus)와 함께 사용하도록 정의된 필드와 속성을 식별합니다. 식별된 필드는 나중에 /KEY, /CONDITION, /INCLUDE 또는 /OMIT와 같은 다른 지정 방법 파일 한정자에서 사용할 수 있습니다.
/CDD_PATH_NAME은 /FIELD 문 대신 또는 /FIELD 문과 함께 사용할 수 있습니다.
"cdd-path-name" 값은 CDD/Plus 내의 CDD/Plus 레코드 정의입니다. 시스템에서 CDD/Plus를 설치한 경우에만 /CDD_PATH_NAME 한정자를 사용할 수 있습니다.
보기
/CDD_PATH_NAME="employee"
/CDD_PATH_NAME 한정자는 CDD/Plus에서 이전에 정의된 직원 레코드를 식별합니다.
/[NO]CHECK_SEQUENCE
MERGE 명령에만 적용됩니다. 입력 파일의 레코드 순서를 확인할지 여부를 지정합니다. 기본적으로 Merge는 레코드 순서를 확인합니다.
보기
/NOCHECK_SEQUENCE
/NOCHECK_SEQUENCE 한정자는 Merge 유틸리티의 기본 동작보다 우선합니다.
/COLLATING_SEQUENCE=(SEQUENCE=sequence-type [,MODIFICATION=("char1" operator "char2")]
[,IGNORE=character or character range,...]
[,FOLD]
[,[NO]TIE_BREAK])

문자 키 필드에 대해 세 가지 미리 정의된 조합 순서(ASCII, EBCDIC 또는 다국적) 중 하나 또는 사용자 정의 순서를 지정합니다. 미리 정의된 조합 순서나 이전에 정의된 사용자 정의 순서를 수정할 수 있게 합니다.
SCII, EBCDIC 및 다국적 조합 순서 사용에 관한 내용은 조합 순서 지정을 참조하십시오.
다음 한정자 값을 정의할 수 있습니다.
표 9-9
SEQUENCE
지정 방법 파일은 ASCII, EBCDIC, 다국적 및 사용자 정의 조합 순서를 지원합니다. 이러한 조합 순서에 대한 자세한 내용은 조합 순서 지정을 참조하십시오.
MODIFICATION
SEQUENCE 옵션에 지정된 조합 순서에 대한 변경 사항을 지정합니다. ASCII, EBCDIC, 다국적 또는 사용자 정의 순서를 수정할 수 있습니다. 순서가 기본값(ASCII)인 경우에도 수정할 순서는 SEQUENCE 한정자에서 지정해야 합니다.
character
조합 순서의 문자를 지정합니다.
operator
문자를 비교하는 데 사용되는 연산자를 지정합니다. 큼(>), 작음(<) 또는 같음(=)을 지정할 수 있습니다.
MODIFICATION 옵션에서 다음과 같은 사항을 변경할 수 있습니다.
-
단일 문자 또는 이중 문자는 이미 조합 값이 할당된 단일 문자와 일치할 수 있습니다(“a”=“A”).
-
단일 문자 또는 이중 문자는 이미 조합 값을 할당한 단일 문자 다음에 조합할 수 있습니다(“CH”>“C”).
-
단일 문자 또는 이중 문자는 이미 조합 값이 할당된 단일 문자 앞에 조합할 수 있습니다(“D”<“A”).
-
이중 문자는 이전에 정의된 이중 문자와 일치할 수 있습니다(“CH” = “SH”).
-
단일 문자는 이중 문자 순서와 일치할 수 있습니다(“C” = “CH”).
IGNORE
Sort/Merge에서 처음 비교를 할 때 조합 순서의 문자 또는 문자 범위를 무시하도록 지정합니다. 연결 구분이 발생하면 Sort/Merge에서는 IGNORE 값에 지정된 문자를 고려합니다.
FOLD
모든 소문자에 해당 대문자의 조합 값이 제공되도록 지정합니다. ASCII, EBCDIC 및 사용자 정의 순서의 경우 소문자는 a에서 z까지입니다.
다국적 순서에서 소문자에는 이미 해당하는 대문자의 조합 값이 있으므로 FOLD를 사용할 필요가 없습니다.
[NO]TIE_BREAK
Sort/Merge에서 동일한 값이 있는 문자 간의 연결을 구분하기 위해 숫자 값을 사용해야 하는지 여부를 지정합니다. 기본적으로 연결 구분은 다국적 순서에서 발생합니다. NOTIE_BREAK를 지정하면 이 기본값이 무시되며 처음 비교 후에 추가 비교를 하지 않습니다.
SCII, EBCDIC 및 사용자 정의 순서에서 연결 구분이 발생하도록 하려면 TIE_BREAK 옵션을 지정해야 합니다. TIE_BREAK는 이러한 순서에 FOLD 또는 MODIFICATION 값을 지정할 때 사용해야 합니다.

보기
지정 방법 파일에서 조합 순서 사용에 관한 보기는 조합 순서 지정 및 Sort/Merge 지정 방법 파일 사용을 참조하십시오.
/CONDITION=(NAME=condition-name,
TEST=(field-name operator test-condition
[logical-operator...]))

지정 방법 파일을 사용하여 레코드의 상대적 순서를 변경하거나 레코드의 특정 필드 내용을 변경할 수 있습니다. 우선 /CONDITION 한정자를 사용하여 조건 테스트를 정의해야 합니다. /CONDITIONAL 한정자를 사용하여 테스트를 정의한 후 같은 테스트를 /KEY 또는 /DATA 한정자에서 사용하여 레코드 순서를 변경할 수 있습니다. 또한 /OMIT 또는 /INCLUDE 한정자에서 이 테스트를 사용하여 레코드 내용을 변경할 수도 있습니다.
출력 파일의 레코드 순서를 변경하려면 우선 /CONDITION 한정자에 조건 이름을 지정하고 해당 조건에 맞는 대상에 대한 테스트를 설정한 후 다음과 같이 양식의 /KEY 한정자에 상대적 순서를 지정합니다.
/KEY=(IF condition-name THEN value ELSE value)
레코드의 상대적 순서를 지정하는 데 모든 값을 사용할 수 있습니다.
또한 /CONDITION 한정자를 사용하여 출력 레코드의 필드 내용도 변경할 수 있습니다. 먼저 조건 이름을 지정한 다음 조건에 맞는 대상에 대한 테스트를 설정합니다. 양식의 /DATA 한정자에 있는 필드에서 필요한 내용을 지정합니다.
/DATA=(IF condition-name THEN "new-contents" ELSE "new-contents")
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-10
NAME
테스트할 조건의 이름을 지정합니다. 이 조건 이름은 /CONDITION 한정자를 사용하여 정의한 후 /KEY, /DATA, /OMIT 및 /INCLUDE 한정자에서 사용할 수 있습니다.
TEST
조건 테스트를 지정합니다.
field-name
테스트할 필드의 이름을 지정합니다.
field-name은 /FIELD 한정자에서 미리 정의해야 합니다.
operator
조건 테스트에 사용되는 논리 또는 관계 연산자를 지정합니다. 사용할 수 있는 논리 연산자는 AND와 OR입니다. 지정할 수 있는 관계 연산자는 다음과 같습니다.
EQ = 같음
NE = 같지 않음
GT = 큼
GE = 크거나 같음
LT = 작음
LE = 작거나 같음
test-condition
테스트할 상수 또는 field-name을 지정합니다. 상수는 다음 형식으로 지정됩니다.
Decimal_digits(기본값)
%Ddecimal_digits
%Ooctal_digits
%Xhexadecimal_digits
"character"
일반적으로 기수 연산자(%D)를 지정할 필요는 없지만 test-condition에서는 같은 데이터 유형을 field-name으로 간주합니다.

보기
지정 방법 파일에서 /CONDITION 한정자의 사용에 관한 보기는 Sort/Merge 지정 방법 파일 사용을 참조하십시오.
/DATA=field-name
/DATA=(IF condition THEN "new contents"
ELSE "new contents")
출력 레코드의 필드를 삭제하거나 다시 정렬하려면 /DATA 한정자를 사용합니다. 출력 레코드에 표시할 순서로 데이터 필드를 지정합니다. /DATA 한정자에서는 출력 파일로 보낼 레코드의 모든 필드를 식별해야 합니다. /DATA 한정자에서 식별한 필드만 출력 파일로 보내집니다.
먼저 조건 이름을 지정한 다음 /CONDITION 한정자에서 조건에 맞는 대상에 대한 테스트를 설정하여 출력 레코드의 필드 내용을 조건부로 변경할 수 있습니다. 그런 후 다음과 같은 양식인 /DATA 한정자의 필드에서 필요한 내용을 지정합니다.
/DATA=(IF condition-name THEN "new-contents" ELSE "new-contents")
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-11
field-name
레코드의 필드 이름을 지정합니다. field-name은 미리 /FIELD 한정자에서 정의해야 합니다.
condition-name
/CONDITION 한정자에서 미리 정의된 condition-name을 지정합니다.
new-contents
레코드를 변경할 방법을 지정합니다. new-contents는 /FIELD 한정자에서 정의된 상수나 field-name일 수 있습니다.

보기
지정 방법 파일에서 /DATA 한정자 사용에 관한 보기는 Sort/Merge 지정 방법 파일 사용을 참조하십시오.
/FIELD=(NAME=field-name,POSITION:n,SIZE:N, [DIGITS:n,]data-type)
/FIELD=(NAME=field-name,VALUE:n,SIZE:N,[DIGITS:n,] data-type)
출력 레코드의 순서나 형식을 변경할 때 입력 파일의 필드를 정의합니다. 이러한 필드에는 키 필드, 비교할 필드 및 출력 파일로 보낼 필드가 포함됩니다. 이름, 레코드에서의 위치와 크기 및 데이터 유형을 지정하여 각 필드를 식별합니다.
필드 이름을 고유해야 합니다. 중복된 이름은 허용되지 않습니다. 또한, 255개 이상의 필드 정의를 사용할 수 없습니다.
또한, /FIELD를 사용하여 상수를 정의하고 이 상수에 /CONDITION, /DATA 및 /KEY 문에서 사용할 유효한 Sort/Merge 데이터 유형의 값을 할당할 수 있습니다.
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-12
NAME
필드의 이름을 지정합니다. field-name은 공백을 포함할 수 없고 영문자로 시작해야 하며 31자를 넘으면 안 됩니다.
POSITION:n
레코드에서 필드의 위치를 지정합니다.
VALUE:n
/CONDITION, /DATA 또는 /KEY 문에서 사용할 상수 필드에 값을 할당합니다. 이 필드는 상수이지 입력 레코드의 일부가 아니므로 VALUE:n을 지정할 경우 /POSITION:n을 지정하지 마십시오.
SIZE:n
문자나 이진 데이터를 포함하는 필드의 크기를 지정합니다. 지정 방법 파일에서 SIZE는 바이트 길이를 의미합니다. 다음과 같이 데이터 유형에 따라 사용할 수 있는 값이 결정됩니다.
-
문자 데이터인 경우 크기는 32,767자를 초과하면 안 됩니다.
-
이진 데이터인 경우 지정된 크기는 1, 2, 4, 8 또는 16바이트이어야 합니다.
-
고정 소숫점 데이터인 경우 지정된 크기가 없습니다.
DIGITS:n
십진 데이터를 포함하는 필드의 크기를 지정합니다. 십진 데이터를 포함하는 필드의 크기는 31자리를 초과하면 안 됩니다. DIGITS:n은 십진 데이터를 포함하는 필드를 설명하는 경우에만 사용됩니다.
data-type
필드의 데이터 유형을 지정합니다. 문자인 경우 데이터 유형을 지정할 필요가 없습니다. Sort에서는 기본적으로 문자 데이터 유형을 가정합니다. Sort/Merge에서 인식하는 데이터 유형 목록은 키 정의를 참조하십시오.

보기
/FIELD=(NAME=SALARY,POSITION:10,DIGITS:8,DECIMAL)
이 /FIELD 한정자는 이름 SALARY로 레코드의 필드를 식별하고 이 필드가 레코드의 위치 10에서 시작하고 8자리이며 십진 데이터로 구성되도록 지정합니다.
/INCLUDE=(CONDITION=condition[,KEY=...] [,DATA=...])
레코드가 출력 파일에 조건부로 포함되도록 지정할 수 있습니다. /CONDITION 한정자에 조건을 정의한 후 조건에 맞는 레코드가 출력 파일에 포함되도록 레코드 선택을 /INCLUDE 한정자에 지정합니다.
지정 방법 파일에 여러 /INCLUDE 및 /OMIT 한정자를 지정할 수 있습니다. 이러한 한정자를 지정하는 순서에 따라 입력 레코드의 포함 여부를 테스트하는 순서가 결정됩니다. 마지막 /INCLUDE 한정자 뒤에 아직 포함되지 않았거나 명시적으로 누락된 모든 레코드는 누락됩니다.
이전에 누락되지 않았거나 조건 없이 /INCLUDE 한정자를 지정하여 포함된 레코드를 무조선 포함시킬 수 있습니다.
여러 레코드 형식을 정렬할 경우, 정렬할 레코드 중에 각각의 다른 레코드 형식에 하나의 /INCLUDE 한정자를 지정해야 합니다 INCLUDE 한정자로 KEY 옵션을 지정하지 않으면 Sort에서는 기본 키 정의를 가정합니다. /INCLUDE 한정자에 KEY를 지정하면 기본 키 정의는 사용되지 않습니다. /INCLUDE 한정자에서 KEY 필드의 순서에 따라 정렬을 위한 내부 키 구성 방법이 결정됩니다. /INCLUDE 한정자에서 DATA 필드의 순서는 출력 레코드가 형식화되는 방식을 결정합니다. /INCLUDE 한정자에서 키 또는 데이터 필드를 지정하면 레코드의 다른 모든 키 또는 데이터 필드를 정의해야 합니다.
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-13
CONDITION
이전의 /CONDITION 한정자에 지정된 condition-name을 참조합니다.
KEY
/KEY 한정자에 정의된 기본 레코드 유형이 사용되지 않으므로 키 필드를 정의합니다.
DATA
/DATA 한정자에 정의된 기본 레코드 유형이 사용되지 않으므로 데이터 필드를 정의합니다

보기
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6)
/CONDITION=(NAME=LOCATION,
TEST=(ZIP EQ '01863') )
/INCLUDE=(CONDITION=LOCATION)

이러한 /CONDITION 및 /INCLUDE 한정자는 우편 번호가 01863인 레코드가 출력 파일에 포함되도록 지정합니다.
/KEY=field-name
/KEY=(field-name,order)
/KEY=([IF condition THEN value ELSE]...) value [,order]

Sort 작업에서 사용할 키 필드를 지정합니다. 문자 데이터를 사용하여 전체 레코드를 정렬할 경우 키 필드를 지정할 필요가 없습니다. 그렇지 않은 경우 각각의 키에 대해 우선 순위에 따라 /KEY 한정자를 지정합니다. 255개 만큼의 키 필드에서 정렬할 수 있습니다.
/KEY 한정자를 사용하는 방법에는 다음 세 가지가 있습니다.
키 필드 이름을 식별합니다.
키 필드 이름을 식별하고 정렬 순서를 지정합니다. 이 경우 필드 이름과 순서 옵션을 괄호로 묶습니다.
조건부 한정자로 출력 파일의 레코드 순서를 변경합니다. 먼저 /CONDITION 한정자에 조건 이름을 지정하고 해당 조건에 맞는 대상에 대한 테스트를 설정합니다. 그런 후 다음과 같은 양식의 /KEY 한정자에 상대적 순서를 지정합니다.
/KEY=(IF condition-name THEN value ELSE value)
모든 값을 사용하여 레코드의 상대적 순서를 지정할 수 있습니다.
다음과 같은 한정자 값을 지정할 수 있습니다.
표 9-14
field-name
키 필드의 이름을 지정합니다. field-name은 미리 /FIELD 한정자에서 지정됩니다.
order
정렬 순서를 지정합니다. ASCENDING 옵션은 정렬 또는 병합 작업에 대해 오름차순을 지정하며 기본값입니다. DESCENDING 옵션은 정렬 또는 병합 작업에 대해 내림차순을 지정합니다.
value
키를 지정합니다. 값은 /FIELD 한정자에 정의된 상수 또는 field-name일 수 있습니다

보기
1.
/FIELD=(NAME=SALARY,POSITION:10,DIGITS:8,DECIMAL) /KEY=(SALARY,DESCENDING)
이 /KEY 한정자는 키 필드는 SALARY로, 정렬 순서는 내림차순으로 지정합니다.
2.
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6)
/CONDITION=(NAME=LOCATION,
TEST=(ZIP EQ "01863") )
/KEY=(IF LOCATION THEN 1
ELSE 2)

이 보기에서는 우편 번호가 01863인 모든 레코드가 정렬된 출력 파일의 시작 부분에 표시됩니다. /CONDITION 한정자에 정의된 조건 테스트 LOCATION은 /FIELD 절에 명명된 ZIP 필드에 있습니다. 이 /KEY 절의 값 1과 2는 조건에 맞는 레코드와 맞지 않는 레코드의 상대적 순서를 의미합니다.
/OMIT=(CONDITION=condition-name)
/CONDITION 한정자에 정의된 조건에 따라 출력 파일에서 누락시킬 레코드를 지정합니다.
먼저 /CONDITION 한정자로 조건을 정의해야 합니다. 조건에 맞는 레코드가 Sort 작업에서 누락되도록 요청할 레코드를 /OMIT 한정자로 지정합니다. 기본적으로 Sort/Merge에서는 다른 모든 입력 레코드를 출력 파일에 포함시킵니다.
지정 방법 파일에 여러 /OMIT 및 /INCLUDE 한정자를 지정할 수 있습니다. 지정하는 순서에 따라 입력 레코드의 누락 여부를 테스트하는 순서가 결정됩니다. 마지막 /OMIT 한정자 다음에 아직 포함되지 않았거나 누락되지 않은 레코드가 모두 포함됩니다. /OMIT 한정자만을 지정하여 이전에 포함되거나 누락되지 않는 레코드를 무조건 누락시킬 수 있습니다.
보기
/FIELD=(NAME=ZIP,POSITION:20,SIZE:6)
/CONDITION=(NAME=LOCATION,
TEST=(ZIP EQ '01863') )
/OMIT=(CONDITION=LOCATION)

이러한 /CONDITION 및 /OMIT 한정자는 우편 번호가 01863인 레코드가 출력 파일에서 누락되도록 지정합니다.
/PAD=single-character
Sort에서 레코드를 다시 형식화하거나 길이가 다른 문자열을 비교하는 경우 문자열을 확장하거나 "채우는" 데 사용할 문자를 지정합니다. 기본적으로 Sort는 이전 버전에 적합하도록 null 문자를 사용하여 채웁니다. 단일 문자로 정의할 수 있는 이중 문자("ch" > "c")는 채우기 문자로 사용할 수 없습니다. 문자, 10진수, 8진수 또는 16진수를 사용할 수 있습니다.
채우기 문자는 다음과 같이 지정해야 합니다.
문자의 경우 인용 부호를 사용합니다. 예를 들어, "#"'는 번호 기호를 지정합니다.
십진수의 경우 십진 기수를 사용합니다. 예를 들어, %D35는 십진수 35를 지정합니다.
8진수의 경우 8진 기수를 사용합니다. 예를 들어, %O043은 8진수 043을 지정합니다.
16진수의 경우 16진 기수를 사용합니다. 예를 들어, %X23은 16진수 23을 지정합니다.
보기
/PAD="."
이 보기의 /PAD 한정자는 레코드가 마침표로 채워지도록 지정합니다.
/PROCESS=type
SORT 명령에만 적용됩니다. 정렬 작업의 처리 방법(레코드, 태그, 주소 또는 인덱스)을 정의합니다. 출력 레코드를 다시 형식화하려면 주소 또는 인덱스 정렬을 사용할 수 없습니다. 프로세스 유형을 RECORD, TAG, ADDRESS 또는 INDEX로 지정합니다.
프로세스의 네 가지 유형 비교는 정렬 프로세스를 참조하십시오.
보기
/PROCESS=tag
이 보기의 /PROCESS 한정자는 Sort에서 태그 정렬 프로세스를 사용하도록 지정합니다.
/[NO]STABLE
등가 키가 있는 레코드를 해당 입력 파일 순서로 출력 파일로 보내지 않도록 지정합니다. 기본 조건은 /NOSTABLE입니다.
기본적으로 레코드가 동일한 키로 정렬되는 경우 출력 파일에서 해당 레코드 순서는 입력 파일에서의 순서와 다를 수 있습니다. 지정 방법 파일에 /STABLE 한정자를 지정하면 명령행에 지정된 것처럼 입력 파일의 순서대로 출력 파일에서 등가 키가 있는 레코드를 정렬합니다. 여러 입력 파일을 정렬하는 데 이 한정자를 사용하면 출력 파일에서 첫 번째 파일의 등가 키가 있는 레코드가 두 번째 파일의 등가 키가 있는 레코드 앞에 옵니다.
보기
/STABLE
이 보기의 /STABLE 한정자는 등가 키가 있는 레코드가 입력 및 출력 파일에서 순서가 같게 합니다.
/WORK_FILES=(device[,...])
SORT 명령에만 적용됩니다. 성능을 향상시키기 위해 작업 파일을 다른 디스크 구조의 장치에 다시 할당합니다. 지정 방법 파일에 /WORK_FILES 한정자를 사용하면 명령행이나 프로그램 수준에서 Sort를 호출하기 전에 논리를 할당할 필요가 없습니다.
DCL 한정자 /WORK_FILES=n과 달리 지정 방법 파일 한정자
/WORK_ FILES=(device[,...])는 작업 파일 수가 아닌 작업 파일 할당을 지정합니다.
작업 파일 사용에 대한 자세한 내용은 작업 파일 할당을 참조하십시오.
보기
/WORK_FILES=("WRKD$:")
이 보기의 /WORK_FILES 한정자는 Sort의 작업 파일 중 하나를 WRKD$: 장치에 할당합니다. 이 장치에 사용 가능한 공간이 가장 많기 때문입니다.

TOC PREV NEXT INDEX