VSAM-빠른 가이드

VSAM (Virtual Storage Access Method)은 카탈로그 구조를 통해 데이터를 구성하고 유지 관리하는 고성능 액세스 방법 및 데이터 세트 구성입니다. 가상 스토리지 개념을 활용하고 암호를 제공하여 다양한 수준의 데이터 세트를 보호 할 수 있습니다. VSAM은 실제 순차 파일과 같은 COBOL 프로그램에서 사용할 수 있습니다. VSAM은 레코드를 저장하기위한 논리적 데이터 세트입니다. VSAM에서 파일을 순차적으로 그리고 무작위로 읽을 수 있습니다. Sequential Files와 같은 기존 파일 시스템의 일부 한계를 극복하는 개선 된 데이터 저장 방법입니다.

VSAM의 특성

다음은 VSAM의 특성입니다-

  • VSAM은 암호를 사용하여 무단 액세스로부터 데이터를 보호합니다.

  • VSAM은 데이터 세트에 대한 빠른 액세스를 제공합니다.

  • VSAM에는 성능 최적화 옵션이 있습니다.

  • VSAM은 일괄 및 온라인 환경에서 데이터 세트 공유를 허용합니다.

  • VSAM은 데이터 저장에있어보다 구조화되고 구성됩니다.

  • 여유 공간은 VSAM 파일에서 자동으로 재사용됩니다.

VSAM의 한계

VSAM의 유일한 제한은 TAPE 볼륨에 저장할 수 없다는 것입니다. 항상 DASD 공간에 저장됩니다. 비용 효율적이지 않은 데이터를 저장하려면 많은 실린더가 필요합니다.

VSAM은 다음 구성 요소로 구성됩니다.

  • VSAM 클러스터
  • 제어 영역
  • 제어 간격

VSAM 클러스터

VSAM은 레코드를 저장하기위한 논리적 데이터 세트이며 클러스터라고합니다. 클러스터는 데이터 세트의 인덱스, 시퀀스 세트 및 데이터 부분의 연관입니다. VSAM 클러스터가 차지하는 공간은 제어 간격이라고하는 인접한 영역으로 나뉩니다. 이 모듈의 뒷부분에서 제어 간격에 대해 설명합니다.

VSAM 클러스터에는 두 가지 주요 구성 요소가 있습니다.

  • Index Component색인 부분을 포함합니다. 인덱스 레코드는 인덱스 구성 요소에 있습니다. 색인 구성 요소 사용 VSAM은 데이터 구성 요소에서 레코드를 검색 할 수 있습니다.

  • Data Component데이터 부분을 포함합니다. 실제 데이터 레코드는 데이터 구성 요소에 있습니다.

제어 간격

VSAM의 CI (Control Intervals)는 비 VSAM 데이터 세트의 블록과 동일합니다. 비 VSAM 방법에서 데이터 단위는 블록으로 정의됩니다. VSAM은 제어 간격으로 알려진 논리 데이터 영역에서 작동합니다.

제어 간격은 디스크와 운영 체제 간의 최소 전송 단위입니다. 레코드가 스토리지에서 직접 검색 될 때마다 레코드를 포함하는 전체 CI를 VSAM 입력-출력 버퍼로 읽습니다. 그런 다음 원하는 레코드가 VSAM 버퍼에서 작업 영역으로 전송됩니다.

제어 간격은 다음으로 구성됩니다.

  • 논리적 레코드
  • 제어 정보 필드
  • 자유 공간

VSAM 데이터 세트가로드되면 제어 간격이 작성됩니다. 기본 제어 간격 크기는 4KB이며 최대 32KB까지 확장 할 수 있습니다.

제어 간격 분석

다음은 위 프로그램에서 사용 된 용어에 대한 설명입니다.

  • R1..R5 − Control Interval에 저장된 기록.

  • FS − FS는 여유 공간으로 데이터 세트의 추가 확장에 사용할 수 있습니다.

  • RDF− RDF는 레코드 정의 필드로 알려져 있습니다. RDF의 길이는 3 바이트입니다. 레코드 길이를 설명하고 길이가 같은 인접한 레코드 수를 알려줍니다.

  • CIDF− CIDF는 Control Interval Definition Fields로 알려져 있습니다. CIDF는 길이가 4 바이트이며 제어 간격에 대한 정보를 포함합니다.

제어 영역

제어 영역 (CA)은 두 개 이상의 제어 간격을 조합하여 구성됩니다. VSAM 데이터 세트는 하나 이상의 제어 영역으로 구성됩니다. VSAM의 크기는 항상 제어 영역의 배수입니다. VSAM 파일은 제어 영역 단위로 확장됩니다.

다음은 제어 영역의 예입니다-

VSAM 클러스터는 JCL. JCL 사용IDCAMS유틸리티를 사용하여 클러스터를 만듭니다. IDCAMS는 액세스 방법 서비스를 위해 IBM에서 개발 한 유틸리티입니다. 주로 VSAM 데이터 세트를 정의하는 데 사용됩니다.

클러스터 정의

다음 구문은 아래에 그룹화 된 주요 매개 변수를 보여줍니다. Define Cluster, DataIndex.

.DEFINE CLUSTER (NAME(vsam-file-name)      -
BLOCKS(number)                             -
VOLUMES(volume-serial)                     -
[INDEXED / NONINDEXED / NUMBERED / LINEAR] -
RECSZ(average maximum)                     -
[FREESPACE(CI-Percentage,CA-Percentage)]   -
CISZ(number)                               -
[KEYS(length offset)]                      -
[READPW(password)]                         -
[FOR(days)|TO(date)]                       -
[UPDATEPW(password)]                       -
[REUSE / NOREUSE] )                        -
DATA                                       -
   (NAME(vsam-file-name.data))             -
INDEX                                      -
   (NAME(vsam-file-name.index))            -
CATALOG(catalog-name[/password]))

CLUSTER 수준의 매개 변수는 전체 클러스터에 적용됩니다. DATA 또는 INDEX 레벨의 매개 변수는 데이터 또는 인덱스 구성 요소에만 적용됩니다.

다음 표에서 각 매개 변수에 대해 자세히 설명합니다.

Sr. 아니요 설명이있는 매개 변수
1

DEFINE CLUSTER

클러스터 정의 명령은 클러스터를 정의하고 클러스터 및 해당 구성 요소에 대한 매개 변수 속성을 지정하는 데 사용됩니다.

2

NAME

NAME은 클러스터를 정의 할 VSAM 파일의 이름을 지정합니다.

BLOCKS

블록은 클러스터에 할당 된 블록 수를 지정합니다.

4

VOLUMES

볼륨은 클러스터 또는 구성 요소를 포함 할 하나 이상의 볼륨을 지정합니다.

5

INDEXED / NONINDEXED / NUMBERED / LINEAR

이 매개 변수는 생성하는 데이터 세트 유형에 따라 INDEXED, NONINDEXED 또는 NUMBERED 세 가지 값을 가질 수 있습니다. 키 시퀀스 (KSDS) 파일의 경우 INDEXED 옵션이 사용됩니다. 항목 시퀀스 (ESDS) 파일의 경우 NONINDEXED 옵션이 사용됩니다. 상대 레코드 (RRDS) 파일의 경우 NUMBERED 옵션이 필요합니다. Linear (LDS) 파일의 경우 LINEAR 옵션이 필요합니다. 이 매개 변수의 기본값은 INDEXED입니다. 향후 모듈에서 KSDS, ESDS, RRDS 및 LDS에 대해 더 자세히 논의 할 것입니다.

6

RECSZ

레코드 크기 매개 변수에는 평균 및 최대 레코드 크기의 두 가지 값이 있습니다. 평균은 파일에있는 논리 레코드의 평균 길이를 지정하고 최대 값은 레코드 길이를 나타냅니다.

7

FREESPACE

여유 공간은 데이터 구성 요소의 제어 간격 (CI) 및 제어 영역 (CA)에 대해 예약 할 여유 공간의 백분율을 지정합니다. 이 매개 변수의 기본값은 0 %입니다.

8

CISZ

CISZ는 제어 간격 크기로 알려져 있습니다. 제어 간격의 크기를 지정합니다.

9

KEYS

Keys 매개 변수는 키 시퀀스 (KSDS) 파일에서만 정의됩니다. 첫 번째 열에서 기본 키의 길이와 오프셋을 지정합니다. 이 매개 변수 값의 범위는 1-255 바이트입니다.

10

READPW

READPW 매개 변수의 값은 읽기 수준의 암호를 지정합니다.

11

FOR/TO

이 매개 변수의 값은 파일을 보유하는 날짜 및 일 수로 시간을 지정합니다. 이 매개 변수의 기본값은 0 일입니다.

12

UPDATEPW

UPDATEPW 매개 변수의 값은 업데이트 레벨의 비밀번호를 지정합니다.

13

REUSE / NOREUSE

REUSE 매개 변수를 사용하면 클러스터를 삭제하고 다시 정의하지 않고 빈 상태로 재설정 할 수있는 클러스터를 정의 할 수 있습니다.

14

DATA - NAME

클러스터의 DATA 부분에는 파일의 실제 데이터를 포함하는 데이터 세트 이름이 포함됩니다.

15

INDEX-NAME

클러스터의 INDEX 부분에는 데이터 부분의 해당 레코드에 대한 기본 키와 메모리 포인터가 포함됩니다. Key Sequenced 클러스터를 사용할 때 정의됩니다.

16

CATALOG

Catalog 매개 변수는 파일이 정의 될 카탈로그를 나타냅니다. 다음 모듈에서 카탈로그에 대해 별도로 논의 할 것입니다.

다음은 JCL에서 클러스터를 정의하는 방법을 보여주는 기본 예입니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   KEYS(5  0)                              -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행되어야하며 MY.VSAM.KSDSFILE VSAM 파일이 생성됩니다.

클러스터 삭제

VSAM 파일을 삭제하려면 IDCAMS 유틸리티를 사용하여 VSAM 클러스터를 삭제해야합니다. DELETE 명령은 카탈로그에서 VSAM 클러스터의 항목을 제거하고 선택적으로 파일을 제거하여 오브젝트가 차지하는 공간을 확보합니다. VSAM 데이터 세트가 만기되지 않은 경우 삭제되지 않습니다. 이러한 유형의 데이터 세트를 삭제하려면 PURGE 옵션을 사용하십시오.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

위의 구문은 Delete 문과 함께 사용할 수있는 매개 변수를 보여줍니다. 다음 표에서 각각에 대해 자세히 설명합니다.

Sr. 아니요 설명이있는 매개 변수
1

ERASE / NOERASE

카탈로그의 오브젝트에 대해 지정된 ERASE 속성을 대체하기 위해 ERASE 옵션이 지정됩니다. NOERASE 옵션은 기본적으로 사용됩니다.

2

FORCE / NOFORCE

FORCE 옵션은 공백이 아니어도 SPACE 및 USERCATALOG를 삭제하도록 지정됩니다. 기본적으로 NOFORCE 옵션이 사용됩니다.

PURGE / NOPURGE

PURGE 옵션은 데이터 세트가 만료되지 않은 경우 VSAM 데이터 세트를 삭제하는 데 사용됩니다. 기본적으로 NOPURGE 옵션이 사용됩니다.

4

SCRATCH / NOSCRATCH

SCRATCH 옵션은 볼륨 목차에서 오브젝트의 연관된 항목을 제거하도록 지정됩니다. 주로 GDG와 같은 비 vsam 데이터 세트에 사용됩니다. NOSCRATCH 옵션은 기본적으로 사용됩니다.

다음은 JCL에서 클러스터를 삭제하는 방법을 보여주는 기본 예입니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
	PURGE
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.KSDSFILE VSAM 파일을 삭제합니다.

ESDS는 엔트리 시퀀스 데이터 세트로 알려져 있습니다. 항목 순서 데이터 세트는 더 많은 기능이 포함 된 순차 파일 구성처럼 작동합니다. 기록에 직접 액세스 할 수 있으며 안전을 위해 비밀번호도 사용할 수 있습니다. 우리는 코딩해야합니다NONINDEXEDESDS 데이터 세트에 대한 DEFINE CLUSTER 명령 내부. 다음은 ESDS의 주요 기능입니다-

  • ESDS 클러스터의 레코드는 데이터 세트에 삽입 된 순서대로 저장됩니다.

  • 레코드는 다음과 같은 물리적 주소로 참조됩니다. Relative Byte Address (RBA). ESDS 데이터 세트에 80 바이트 레코드가 있고 첫 번째 레코드의 RBA가 0, 두 번째 레코드의 RBA가 80, 세 번째 레코드의 경우 160이되는 식으로 가정합니다.

  • 레코드는 RBA로 순차적으로 액세스 할 수 있습니다. addressed access.

  • 레코드는 삽입 된 순서대로 보관됩니다. 새 레코드가 끝에 삽입됩니다.

  • ESDS 데이터 세트에서는 레코드를 삭제할 수 없습니다. 그러나 비활성으로 표시 될 수 있습니다.

  • ESDS 데이터 세트의 레코드는 고정 길이 또는 가변 길이 일 수 있습니다.

  • ESDS는 색인화되지 않습니다. ESDS 데이터 세트에 키가 없으므로 중복 레코드가 포함될 수 있습니다.

  • ESDS는 다른 파일과 마찬가지로 COBOL 프로그램에서 사용할 수 있습니다. JCL에서 파일 이름을 지정하고 프로그램 내부 처리를 위해 ESDS 파일을 사용할 수 있습니다. COBOL 프로그램에서 파일 구성을 다음과 같이 지정하십시오.Sequential 및 액세스 모드 Sequential ESDS 데이터 세트로.

ESDS 클러스터 정의

다음 구문은 ESDS 클러스터를 생성하는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

DEFINE CLUSTER (NAME(esds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NONINDEXED                               -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(esds-file-name.data))

다음 예제는 IDCAMS 유틸리티를 사용하여 JCL에서 ESDS 클러스터를 만드는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.ESDSFILE)  -
   NONINDEXED                              -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.ESDSFILE.DATA))      
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행되어야하며 MY.VSAM.ESDSFILE VSAM 파일이 생성됩니다.

ESDS 클러스터 삭제

ESDS 클러스터는 IDCAMS 유틸리티를 사용하여 삭제됩니다. DELETE 명령은 카탈로그에서 VSAM 클러스터의 항목을 제거하고 선택적으로 파일을 제거하여 오브젝트가 차지하는 공간을 확보합니다.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

위의 구문은 ESDS 클러스터를 삭제하는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 ESDS 클러스터를 삭제하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.ESDSFILE CLUSTER
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.ESDSFILE VSAM 클러스터를 삭제합니다.

KSDS는 키 시퀀스 데이터 세트로 알려져 있습니다. 키 시퀀스 데이터 세트 (KSDS)는 ESDS 및 RRDS보다 더 복잡하지만 더 유용하고 다재다능합니다. 우리는 코딩해야합니다INDEXEDKSDS 데이터 세트에 대한 DEFINE CLUSTER 명령 내부. KSDS 클러스터는 다음 두 가지 구성 요소로 구성됩니다.

  • Index− KSDS 클러스터의 인덱스 구성 요소는 데이터 구성 요소의 해당 레코드에 대한 포인터와 함께 클러스터의 레코드에 대한 키 값 목록을 포함합니다. 인덱스 구성 요소는 KSDS 레코드의 물리적 주소를 나타냅니다. 이는 각 레코드의 키를 데이터 세트에서 레코드의 상대 위치와 관련시킵니다. 레코드가 추가되거나 삭제되면 그에 따라이 색인이 업데이트됩니다.

  • Data− KSDS 클러스터의 데이터 구성 요소에는 실제 데이터가 포함되어 있습니다. KSDS 클러스터의 데이터 구성 요소에있는 각 레코드는 동일한 수의 문자를 가진 키 필드를 포함하며 각 레코드에서 동일한 상대 위치에서 발생합니다.

다음은 KSDS의 주요 기능입니다-

  • KSDS 데이터 세트 내의 레코드는 항상 키 필드별로 정렬됩니다. 레코드는 오름차순으로 저장되며 키별로 배열됩니다.

  • 기록은 순차적으로 액세스 할 수 있으며 직접 액세스도 가능합니다.

  • 레코드는 키를 사용하여 식별됩니다. 각 레코드의 키는 레코드 내 미리 정의 된 위치에있는 필드입니다. 각 키는 KSDS 데이터 세트에서 고유해야합니다. 따라서 기록의 복제는 불가능합니다.

  • 새 레코드가 삽입되면 레코드의 논리적 순서는 키 필드의 배열 순서에 따라 달라집니다.

  • KSDS 데이터 세트의 레코드는 고정 길이 또는 가변 길이 일 수 있습니다.

  • KSDS는 다음에서 사용할 수 있습니다. COBOL다른 파일과 같은 프로그램. JCL에서 파일 이름을 지정하고 KSDS 파일을 프로그램 내부 처리에 사용할 수 있습니다. COBOL 프로그램에서 파일 구성을 다음과 같이 지정하십시오.Indexed 모든 액세스 모드를 사용할 수 있습니다. (Sequential, Random or Dynamic) KSDS 데이터 세트로.

KSDS 파일 구조

특정 레코드를 검색하기 위해 고유 한 키 값을 제공합니다. 인덱스 구성 요소에서 키 값이 검색됩니다. 키를 찾으면 데이터 구성 요소를 참조하는 해당 메모리 주소가 검색됩니다. 메모리 주소에서 데이터 구성 요소에 저장된 실제 데이터를 가져올 수 있습니다. 다음 예는 인덱스 및 데이터 파일의 기본 구조를 보여줍니다-

KSDS 클러스터 정의

다음 구문은 KSDS 클러스터를 생성하는 동안 사용할 수있는 매개 변수를 보여줍니다.

매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

DEFINE CLUSTER (NAME(ksds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
INDEXED                                  -
KEYS(length offset)                      -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(ksds-file-name.data))           -
INDEX                                    -
   (NAME(ksds-file-name.index))

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 KSDS 클러스터를 만드는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   KEYS(6 1)	                           -	
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))    -
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행되어야하며 MY.VSAM.KSDSFILE VSAM 파일이 생성됩니다.

KSDS 클러스터 삭제

KSDS 클러스터는 IDCAMS 유틸리티를 사용하여 삭제됩니다. DELETE 명령은 카탈로그에서 VSAM 클러스터의 항목을 제거하고 선택적으로 파일을 제거하여 오브젝트가 차지하는 공간을 확보합니다.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

위의 구문은 KSDS 클러스터를 삭제하는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 KSDS 클러스터를 삭제하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.KSDSFILE VSAM 클러스터를 삭제합니다.

RRDS는 상대 레코드 데이터 세트로 알려져 있습니다. RRDS 클러스터는 ESDS 클러스터와 유사합니다. 유일한 차이점은 RRDS 레코드는Relative Record Number (RRN), 우리는 코딩해야합니다 NUMBEREDDEFINE CLUSTER 명령 내부. 다음은 RRDS의 주요 기능입니다-

  • 상대 레코드 데이터 세트에는 다음으로 식별되는 레코드가 있습니다. Relative Record Number (RRN), 첫 번째 레코드에 상대적인 시퀀스 번호입니다.

  • RRDS는 레코드 1, 레코드 2 등과 같은 번호로 레코드에 액세스 할 수 있도록합니다. 이것은 랜덤 액세스를 제공하고 응용 프로그램이 원하는 레코드 번호를 얻는 방법을 가지고 있다고 가정합니다.

  • RRDS 데이터 세트의 레코드는 상대 레코드 번호 순서로 순차적으로 액세스하거나 원하는 레코드의 상대 레코드 번호를 제공하여 직접 액세스 할 수 있습니다.

  • RRDS 데이터 세트의 레코드는 고정 길이 슬롯에 저장됩니다. 각 레코드는 슬롯 수로 참조되며, 수는 1에서 데이터 세트의 최대 레코드 수까지 다양합니다.

  • RRDS의 레코드는 빈 슬롯에 새 레코드를 삽입하여 쓸 수 있습니다.

  • RRDS 클러스터에서 레코드를 삭제하여 빈 슬롯을 남길 수 있습니다.

  • 고정 길이 레코드 또는 RRDS 데이터 세트를 사용할 수있는 컨텍스트 의미의 레코드 번호를 사용하는 애플리케이션.

  • RRDS는 다음에서 사용할 수 있습니다. COBOL다른 파일과 같은 프로그램. JCL에서 파일 이름을 지정하고 KSDS 파일을 프로그램 내부 처리에 사용할 수 있습니다. COBOL 프로그램에서 파일 구성을 다음과 같이 지정하십시오.RELATIVE 모든 액세스 모드를 사용할 수 있습니다. (Sequential, Random or Dynamic) RRDS 데이터 셋으로.

RRDS 파일 구조

공간은 RRDS 파일 구조에서 고정 길이 슬롯으로 나뉩니다. 슬롯은 완전히 비어 있거나 완전히 차있을 수 있습니다. 따라서 빈 슬롯에 새 레코드를 추가하고 채워진 슬롯에서 기존 레코드를 삭제할 수 있습니다. 상대 레코드 번호를 제공하여 모든 레코드에 직접 액세스 할 수 있습니다. 다음 예제는 데이터 파일의 기본 구조를 보여줍니다-

데이터 구성 요소

상대 레코드 번호 레코드 필드 1 레코드 필드 2
1 지도 시간 포인트
2 Mohtashim 미디엄.
Nishant 말릭

RRDS 클러스터 정의

다음 구문은 RRDS 클러스터를 생성하는 동안 사용할 수있는 매개 변수를 보여줍니다.

매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

DEFINE CLUSTER (NAME(rrds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NUMBERED                                 -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(rrds-file-name.data))

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 RRDS 클러스터를 만드는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.RRDSFILE)  -
   NUMBERED                                -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   REUSE                                   - 
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.RRDSFILE.DATA))      
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.RRDSFILE VSAM 파일을 생성합니다.

RRDS 클러스터 삭제

RRDS 클러스터는 IDCAMS 유틸리티를 사용하여 삭제됩니다. DELETE 명령은 카탈로그에서 VSAM 클러스터의 항목을 제거하고 선택적으로 파일을 제거하여 오브젝트가 차지하는 공간을 확보합니다.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

위의 구문은 RRDS 클러스터를 삭제하는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 RRDS 클러스터를 삭제하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.RRDSFILE CLUSTER
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.RRDSFILE VSAM 클러스터를 삭제합니다.

LDS는 선형 데이터 세트로 알려져 있습니다. 선형 데이터 세트는 기존 운영 체제 파일에서 사용되는 유일한 바이트 스트림 데이터 세트입니다. 선형 데이터 세트는 거의 사용되지 않습니다. 다음은 LDS의 주요 기능입니다-

  • 선형 데이터 세트에는 CI에 포함 된 제어 정보가 없기 때문에 RDF 및 CIDF가 포함되지 않습니다.

  • 선형 데이터 세트의 가상 스토리지에서 바이트 주소 지정이 가능한 문자열로 액세스 할 수있는 데이터입니다.

  • 선형 데이터 세트의 제어 간격 크기는 4KB입니다.

  • LDS는 카탈로그에서 IDCAMS 및 VSAM 특정 정보 사용과 같은 일부 VSAM 기능이있는 일종의 비 vsam 파일입니다.

  • DB2는 현재 선형 데이터 세트의 가장 큰 사용자입니다.

  • IDCAMS는 LDS를 정의하는 데 사용되지만 DIV (Data-In-Virtual) 매크로를 사용하여 액세스됩니다.

  • 선형 데이터 세트에는 레코드 개념이 없습니다. 모든 LDS 바이트는 데이터 바이트입니다.

LDS 클러스터 정의

다음 구문은 LDS 클러스터를 만드는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

DEFINE CLUSTER (NAME(lds-file-name)      -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
LINEAR                                   -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(lds-file-name.data))

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 LDS 클러스터를 만드는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.LDSFILE)   -
   LINEAR                                  -
   TRACKS(1,1)                             -
   CISZ(4096) )                            -                            
   DATA (NAME(MY.VSAM.LDSFILE.DATA))      
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행되어야하며 MY.VSAM.LDSFILE VSAM 파일이 생성됩니다.

LDS 클러스터 삭제

LDS 클러스터는 IDCAMS 유틸리티를 사용하여 삭제됩니다. DELETE 명령은 카탈로그에서 VSAM 클러스터의 항목을 제거하고 선택적으로 파일을 제거하여 오브젝트가 차지하는 공간을 확보합니다.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

위의 구문은 LDS 클러스터를 삭제하는 동안 사용할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

다음 예는 IDCAMS 유틸리티를 사용하여 JCL에서 LDS 클러스터를 삭제하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.LDSFILE CLUSTER
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.LDSFILE VSAM 클러스터를 삭제합니다.

VSAM 명령은 VSAM 데이터 세트에서 특정 작업을 수행하는 데 사용됩니다. 다음은 가장 유용한 VSAM 명령입니다.

  • Alter
  • Repro
  • Listcat
  • Examine
  • Verify

바꾸다

ALTER 명령은 VSAM 파일 속성을 수정하는 데 사용됩니다. VSAM 클러스터 정의에서 언급 한 VSAM 파일의 속성을 변경할 수 있습니다. 다음은 속성을 변경하는 구문입니다-

ALTER  file-cluster-name [password] 
   [ADDVOLUMES(volume-serial)] 
   [BUFFERSPACE(size)] 
   [EMPTY / NOEMPTY] 
   [ERASE / NOERASE] 
   [FREESPACE(CI-percentage CA-percentage)] 
   [KEYS(length offset)] 
   [NEWNAME(new-name)] 
   [RECORDSIZE(average maximum)] 
   [REMOVEVOLUMES(volume-serial)] 
   [SCRATCH / NOSCRATCH] 
   [TO(date) / FOR(days)] 
   [UPGRADE / NOUPGRADE] 
   [CATALOG(catalog-name [password]]

위의 구문은 기존 VSAM 클러스터에서 변경할 수있는 매개 변수를 보여줍니다. 매개 변수 설명은 VSAM-클러스터 모듈에서 언급 한 것과 동일합니다.

다음 예는 ALTER 명령을 사용하여 여유 공간을 늘리고 볼륨을 더 추가하고 키를 변경하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   ALTER  MY.VSAM.KSDSFILE 
   [ADDVOLUMES(2)] 
   [FREESPACE(6 6)] 
   [KEYS(10 2)] 
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 여유 공간, 볼륨 및 키를 변경합니다.

재현

REPRO 명령은 데이터를 VSAM 데이터 세트로로드하는 데 사용됩니다. 또한 한 VSAM 데이터 세트에서 다른 데이터 세트로 데이터를 복사하는 데 사용됩니다. 이 명령을 사용하여 순차 파일에서 VSAM 파일로 데이터를 복사 할 수 있습니다. IDCAMS 유틸리티는 REPRO 명령을 사용하여 데이터 세트를로드합니다.

REPRO INFILE(in-ddname) 
   OUTFILE(out-ddname)

위 구문에서 in-ddname은 레코드가있는 입력 데이터 세트의 DD 이름입니다. out-ddname은 입력 데이터 집합 레코드가 복사되는 출력 데이터 집합의 DD 이름입니다.

다음 예제는 한 데이터 세트에서 다른 VSAM 데이터 세트로 레코드를 복사하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//IN  DD DSN = MY.VSAM.KSDSFILE,DISP = SHR
//OUT DD DSN = MY.VSAM1.KSDSFILE,DISP = SHR
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   REPRO INFILE(IN) 
      OUTFILE(OUT)
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.KSDSFILE의 모든 레코드를 MY.VSAM1.KSDSFILE VSAM 파일로 복사합니다.

Listcat

LISTCAT 명령은 VSAM 데이터 세트의 카탈로그 세부 사항을 가져 오는 데 사용됩니다. Listcat 명령은 VSAM 데이터 세트에 대한 다음 정보를 제공합니다-

  • SMS 정보
  • RLS 정보
  • 볼륨 정보
  • 구 정보
  • 할당 정보
  • 데이터 세트 속성
LISTCAT ENTRY(vsam-file-name) ALL

위의 구문에서 vsam-file-name은 모든 정보가 필요한 VSAM 데이터 세트 이름입니다. 모든 카탈로그 세부 사항을 가져 오기 위해 ALL 키워드가 지정됩니다.

다음 예는 VSAM 데이터 세트에 대해 Listcat 명령을 사용하여 모든 세부 정보를 가져 오는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   LISTCAT ENTRY(MY.VSAM.KSDSFILE) 
   ALL 
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.KSDSFILE 데이터 세트에 대한 모든 카탈로그 세부 정보를 표시합니다.

조사

Examine 명령은 키 시퀀스 데이터 세트 클러스터의 구조적 무결성을 확인하는 데 사용됩니다. 인덱스 및 데이터 구성 요소를 확인하고 문제가 발견되면 오류 메시지가 스풀로 전송됩니다. IDCxxxxx 메시지를 확인할 수 있습니다.

EXAMINE NAME(vsam-ksds-name) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)

위의 구문에서 vsam-ksds-name은 VSAM 클러스터의 인덱스 및 데이터 부분을 검사해야하는 VSAM 데이터 세트 이름입니다.

다음 예제는 KSDS 데이터 셋의 Index와 Data 부분이 동기화되었는지 확인하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   EXAMINE NAME(MY.VSAM.KSDSFILE) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 스풀의 IDCxxxxx 메시지 중 하나에있는 VSAM 데이터 세트의 모든 문제를 보여줍니다.

검증

확인 명령은 오류 발생 후 제대로 닫히지 않은 VSAM 파일을 확인하고 수정하는 데 사용됩니다. 이 명령은 올바른 데이터 끝 레코드를 파일에 추가합니다.

VERIFY DS(vsam-file-name)

위의 구문에서 vsam-file-name은 오류를 확인해야하는 VSAM 데이터 세트 이름입니다.

다음 예는 VSAM 데이터 세트에서 오류를 확인하고 수정하는 방법을 보여줍니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   VERIFY DS(MY.VSAM.KSDSFILE)                                  
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 VSAM 데이터 세트의 오류를 수정합니다.

대체 인덱스는 기본 인덱스 외에 KSDS / ESDS 데이터 세트에 대해 생성되는 추가 인덱스입니다. 대체 색인은 둘 이상의 키를 사용하여 레코드에 대한 액세스를 제공합니다. 대체 색인의 키는 고유하지 않은 키일 수 있으며 중복 될 수 있습니다.

대체 색인 생성

다음 단계는 대체 색인을 만드는 데 사용됩니다-

  • 대체 색인 정의
  • 경로 정의
  • 건물 색인

대체 색인 정의

대체 색인은 다음을 사용하여 정의됩니다. DEFINE AIX 명령.

DEFINE AIX                              -
(NAME(alternate-index-name)             -
RELATE(vsam-file-name)                  -
CISZ(number)                            -
FREESPACE(CI-Percentage,CA-Percentage)  -
KEYS(length offset)                     -
NONUNIQUEKEY / UNIQUEKEY                -
UPGRADE / NOUPGRADE                     -
RECORDSIZE(average maximum))            -
DATA                                    -
   (NAME(vsam-file-name.data))          -
INDEX                                   -
   (NAME(vsam-file-name.index))

위의 구문은 대체 색인을 정의하는 동안 사용되는 매개 변수를 보여줍니다. 우리는 이미 Define Cluster Module에서 몇 가지 매개 변수에 대해 논의했으며 여기에서 논의 할 대체 색인을 정의하는 데 일부 새 매개 변수가 사용됩니다.

Sr. 아니요 설명이있는 매개 변수
1

DEFINE AIX

AIX 명령 정의는 대체 색인을 정의하고 해당 구성 요소에 대한 매개 변수 속성을 지정하는 데 사용됩니다.

2

NAME

NAME은 대체 색인의 이름을 지정합니다.

RELATE

RELATE는 대체 색인이 작성되는 VSAM 클러스터의 이름을 지정합니다.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY는 대체 색인이 고유함을 지정하고 NONUNIQUEKEY는 중복이 존재할 수 있음을 지정합니다.

5

UPGRADE / NOUPGRADE

UPGRADE는 기본 클러스터가 수정 된 경우 대체 인덱스를 수정하도록 지정하고 NOUPGRADE는 기본 클러스터가 수정 된 경우 대체 인덱스를 그대로 두도록 지정합니다.

다음은 JCL에서 대체 색인을 정의하는 방법을 보여주는 기본 예입니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE AIX (NAME(MY.VSAM.KSDSAIX)      -
   RELATE(MY.VSAM.KSDSFILE)               -
   CISZ(4096)                             -
   FREESPACE(20,20)                       -
   KEYS(20,7)                             -
   NONUNIQUEKEY                           -
   UPGRADE                                -
   RECORDSIZE(80,80))                     -
   DATA(NAME(MY.VSAM.KSDSAIX.DATA))       -
   INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 MY.VSAM.KSDSAIX 대체 인덱스를 생성합니다.

경로 정의

경로 정의는 대체 인덱스를 기본 클러스터에 연결하는 데 사용됩니다. 경로를 정의하는 동안 경로의 이름과이 경로가 관련된 대체 색인을 지정합니다.

DEFINE PATH                        -
NAME(alternate-index-path-name)    -
PATHENTRY(alternate-index-name))

위 구문에는 두 개의 매개 변수가 있습니다. NAME은 대체 색인 경로 이름을 지정하는 데 사용되며 PATHENTRY는 대체 색인 이름을 지정하는 데 사용됩니다.

다음은 JCL에서 경로를 정의하는 기본 예입니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
DEFINE PATH                          -
   NAME(MY.VSAM.KSDSAIX.PATH)    -
   PATHENTRY(MY.VSAM.KSDSAIX))
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행되어야하며 대체 인덱스와 기본 클러스터 사이에 경로가 생성됩니다.

건물 색인

BLDINDEX 명령은 대체 색인을 작성하는 데 사용됩니다. BLDINDEX는 VSAM 색인화 된 데이터 세트 (또는 기본 클러스터)의 모든 레코드를 읽고 대체 색인을 빌드하는 데 필요한 데이터를 추출합니다.

BLDINDEX                           -
INDATASET(vsam-cluster-name)       -
OUTDATASET(alternate-index-name))

위 구문에는 두 개의 매개 변수가 있습니다. INDATASET은 VSAM 클러스터 이름을 지정하는 데 사용되며 OUTDATASET는 대체 인덱스 이름을 지정하는 데 사용됩니다.

다음은 JCL에서 색인을 작성하는 기본 예입니다.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   BLDINDEX                           -
   INDATASET(MY.VSAM.KSDSFILE)        -
   OUTDATASET(MY.VSAM.KSDSAIX))
/*

메인 프레임 서버에서 위의 JCL을 실행하는 경우. MAXCC = 0으로 실행해야하며 인덱스를 빌드합니다.

카탈로그는 데이터 세트가있는 단위와 볼륨을 유지합니다. 카탈로그는 데이터 세트 검색에 사용됩니다. 비 VSAM 데이터 세트는 JCL의 처리 매개 변수를 사용하여 카탈로그 항목을 작성합니다. VSAM 데이터 세트는 KSDS 클러스터 형태로 자체 카탈로그를 유지합니다. 다음 이미지에서 VSAM 카탈로그의 유형을 볼 수 있습니다.

마스터 카탈로그

마스터 카탈로그는 그 자체로 VSAM의 작업을 모니터링하고 관리하는 파일입니다. 시스템 데이터 세트 및 VSAM 데이터 세트에 대한 항목을 포함하는 모든 시스템에서 유일한 마스터 카탈로그입니다. VSAM 및 비 VSAM 데이터 세트에는 마스터 카탈로그에 항목이있을 수 있지만 이는 좋은 방법이 아닙니다. 마스터 카탈로그는 시스템 생성 프로세스 중에 생성되며 시스템 볼륨에 상주합니다. 마스터 카탈로그는 운영 체제의 모든 VSAM 자원을 소유합니다. VSAM에서 사용되는 모든 파일은 마스터 카탈로그에 의해 제어됩니다. 마스터 카탈로그는 다음 작업을 담당합니다.

  • 파일에 대한 비밀번호 인증
  • 보안 강화
  • 파일에 대한 VSAM 액세스
  • 파일 공간 관리
  • 파일 위치
  • 파일에서 사용 가능한 여유 공간

위의 파일 속성이 변경되면 마스터 카탈로그에서 자동으로 업데이트됩니다. 마스터 카탈로그는 IDCAMS 프로그램을 사용하여 정의됩니다.

사용자 카탈로그

사용자 카탈로그는 마스터 카탈로그와 구조 및 개념이 동일합니다. 마스터 카탈로그 이후 다음 계층 수준에 있습니다. 사용자 카탈로그는 시스템에서 필수는 아니지만 VSAM 시스템의 보안을 강화하는 데 사용됩니다. 마스터 카탈로그는 VSAM 파일을 가리 키지 만 사용자 카탈로그가있는 경우 마스터 카탈로그는 사용자 카탈로그를 가리 킵니다. 사용자 카탈로그는 시스템 요구 사항에 따라 많을 수 있습니다. VSAM 구조에서 마스터 카탈로그가 제거되면 사용자 카탈로그에 영향을주지 않습니다. 사용자 카탈로그에는 애플리케이션 별 데이터 세트에 대한 항목이 포함되어 있습니다. 사용자 카탈로그의 정보는 마스터 카탈로그에 저장됩니다.

데이터 공간

데이터 공간은 VSAM 사용을 위해 독점적으로 할당 된 직접 액세스 저장 장치의 영역입니다. VSAM 클러스터를 작성하기 전에 데이터 공간을 작성해야합니다. 데이터 공간이 차지하는 영역은 VTOC (Volume Table of Contents)에 기록되므로 VSAM 또는 비 VSAM과 같은 다른 용도로 공간을 할당 할 수 없습니다. VTOC에는 공간이 차지하는 영역의 항목이 있습니다. VSAM은 사용자 카탈로그 항목을 보유 할 데이터 공간을 작성합니다. VSAM은이 공간을 제어하고 VSAM 파일에서 필요에 따라이 공간을 모니터하고 유지합니다.

고유 한 클러스터

고유 클러스터는 내부에서 생성 된 클러스터가 완전히 활용하는 별도의 데이터 공간으로 구성됩니다. 직접 액세스 스토리지의 할당되지 않은 공간에서 고유 클러스터가 생성됩니다.

하위 할당 된 클러스터

하위 할당 VSAM 파일은 다른 하위 할당 파일과 VSAM 공간을 공유합니다. 파일이 기존 VSAM 공간 내에서 하위 할당되어야 함을 지정합니다. 하위 할당은 VSAM 공간을보다 쉽게 ​​관리하고 제어하는 ​​데 사용됩니다.

비 VSAM 데이터 세트

비 VSAM 데이터 세트는 테이프 및 직접 액세스 스토리지 모두에 있습니다. 비 VSAM 데이터 세트에는 마스터 카탈로그와 사용자 카탈로그 모두에 항목이있을 수 있습니다. 비 VSAM 데이터 세트를 카탈로그 화하는 주요 기능은 단위 및 볼륨 일련 정보를 유지하는 것입니다.

VSAM 데이터 세트로 작업하는 동안 이상 종료가 발생할 수 있습니다. 다음은 문제를 해결하는 데 도움이되는 설명과 함께 일반적인 파일 상태 코드입니다.

암호 기술
00 작업이 성공적으로 완료되었습니다.
02 고유하지 않은 대체 색인 중복 키 발견
04 잘못된 고정 길이 레코드
05 OPEN 파일을 수행하는 동안 파일이 없습니다.
10 파일 끝이 발견되었습니다.
14 파일 경계 외부에서 상대 레코드를 읽으려고했습니다.
20 VSAM KSDS 또는 RRDS에 대한 잘못된 키
21 WRITE를 수행하거나 REWRITE에서 키를 변경하는 동안 시퀀스 오류
22 기본 중복 키 발견
23 레코드를 찾을 수 없거나 파일을 찾을 수 없음
24 파일 경계 외부의 키
30 영구 I / O 오류
34 파일 경계 외부 기록
35 OPEN 파일을 수행하는 동안 파일이 없습니다.
37 잘못된 모드로 파일 열기
38 잠긴 파일을 열려고했습니다.
39 파일 속성 충돌로 인해 OPEN에 실패했습니다.
41 이미 열려있는 파일을 열려고했습니다.
42 열려 있지 않은 파일을 닫으려고했습니다.
43 레코드를 먼저 읽지 않고 다시 쓰려고했습니다.
44 길이가 다른 레코드를 다시 쓰려고했습니다.
46 파일 끝을 넘어서 읽으려고했습니다.
47 IO 또는 INPUT이 열리지 않은 파일에서 읽기를 시도했습니다.
48 IO 또는 OUTPUT이 열리지 않은 파일에 쓰기를 시도했습니다.
49 IO가 열리지 않은 파일에 대해 삭제 또는 다시 쓰기를 시도했습니다.
91 비밀번호 또는 인증 실패
92 논리 오류
93 리소스를 사용할 수 없습니다.
94 순차 레코드를 사용할 수 없거나 동시 열기 오류
95 파일 정보가 유효하지 않거나 불완전합니다.
96 파일에 대한 DD 문이 없습니다.
97 OPEN 성공 및 파일 무결성 확인
98 파일이 잠겼습니다. 열기에 실패했습니다.
99 레코드 잠금-레코드 액세스 실패