KSDS称为密钥序列数据集.密钥序列数据集(KSDS)比ESDS和RRDS更复杂,但更有用和通用.我们必须在DEFINE CLUSTER命令中为KSDS数据集编码 INDEXED . KSDS集群由以下两个组成部分组成 :
- 索引 : KSDS集群的索引组件包含集群中记录的键值列表,其中包含指向数据组件中相应记录的指针.索引组件是指KSDS记录的物理地址.这将每条记录的关键字与记录在数据集中的相对位置联系起来.添加或删除记录时,此索引会相应更新.
- 数据 : KSDS集群的数据组件包含实际数据. KSDS群集的数据组件中的每条记录都包含一个具有相同字符数的键字段,并且在每条记录中的相对位置相同.
以下是KSDS的主要特点 :
- KSDS数据集内的记录始终按键排序 - 领域.记录按键按升序整理顺序存储.
- 记录可以按顺序访问,也可以直接访问.
- 使用密钥识别记录.每条记录的关键字是记录中预定义位置的字段.每个密钥在KSDS数据集中必须是唯一的.因此无法复制记录.
- 插入新记录时,记录的逻辑顺序取决于关键字段的整理顺序.
- KSDS数据集中的记录可以是固定长度或可变长度.
- KSDS可以是用于 COBOL 程序,与任何其他文件一样.我们将在JCL中指定文件名,我们可以使用KSDS文件来处理程序内部.在COBOL程序中,将文件组织指定为索引,您可以使用任何访问模式(顺序,随机或动态)和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在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)) - /*
如果您将在Mainframes服务器上执行上述JCL.它应该以MAXCC = 0执行,它将创建MY.VSAM.KSDSFILE VSAM文件.
删除KSDS群集
使用IDCAMS删除KSDS群集效用. DELETE命令从目录中删除VSAM集群的条目,并可选择删除该文件,从而释放该对象占用的空间.
DELETE data-set-name CLUSTER [ERASE / NOERASE] [FORCE / NOFORCE] [PURGE / nopURGE] [SCRATCH / NOSCRATCH]
上面的语法显示了我们在删除KSDS集群时可以使用的参数.参数说明与VSAM - Cluster模块中提到的相同.
示例
以下示例说明如何使用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 /*
如果您将在Mainframes服务器上执行上述JCL.它应该以MAXCC = 0执行,它将删除MY.VSAM.KSDSFILE VSAM集群.