📅  最后修改于: 2020-11-22 17:20:54             🧑  作者: Mango
KSDS被称为密钥排序数据集。密钥排序的数据集(KSDS)比ESDS和RRDS更为复杂,但更加有用和通用。我们必须在KSDS数据集的DEFINE CLUSTER命令内编码INDEXED 。 KSDS集群包含以下两个组件-
索引-KSDS集群的索引组件包含集群中记录的键值列表,并带有指向数据组件中相应记录的指针。索引组件是指KSDS记录的物理地址。这会将每个记录的关键字与记录在数据集中的相对位置相关联。添加或删除记录时,此索引将相应更新。
数据-KSDS集群的数据组件包含实际数据。 KSDS集群的数据组件中的每个记录都包含一个具有相同字符数的键字段,并且该键字段出现在每个记录中的相对位置相同的位置。
以下是KSDS的主要功能-
KSDS数据集中的记录始终按键字段进行排序。记录按键升序排列。
记录可以顺序访问,也可以直接访问。
使用密钥识别记录。每个记录的关键字是记录内预定义位置的字段。每个密钥在KSDS数据集中必须唯一。因此,不可能重复记录。
插入新记录时,记录的逻辑顺序取决于键字段的整理顺序。
KSDS数据集中的记录可以是固定长度或可变长度。
KSDS可以像任何其他文件一样在COBOL程序中使用。我们将在JCL中指定文件名,并且可以使用KSDS文件在程序内部进行处理。在COBOL程序中,将文件组织指定为“已索引” ,您可以对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文件。
使用IDCAMS实用程序删除KSDS群集。 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群集。