- 学习 VSAM 教程
- VSAM - 首页
- VSAM - 概述
- VSAM - 组件
- VSAM - 集群
- VSAM - ESDS
- VSAM - KSDS
- VSAM - RRDS
- VSAM - LDS
- VSAM - 命令
- VSAM - 备用索引
- VSAM - 目录
- VSAM - 文件状态
- VSAM - 面试问题
- VSAM 有用资源
- VSAM - 快速指南
- VSAM - 有用资源
- VSAM - 讨论
VSAM - KSDS
KSDS 称为键顺序数据集。键顺序数据集 (KSDS) 比 ESDS 和 RRDS 更复杂,但更有用且用途广泛。对于 KSDS 数据集,我们必须在 DEFINE CLUSTER 命令中编码INDEXED。KSDS 集群包含以下两个组件:
索引 - KSDS 集群的索引组件包含集群中记录的键值的列表,以及指向数据组件中相应记录的指针。索引组件引用 KSDS 记录的物理地址。这将每个记录的键与记录在数据集中的相对位置相关联。当添加或删除记录时,此索引会相应更新。
数据 - KSDS 集群的数据组件包含实际数据。KSDS 集群数据组件中的每个记录都包含一个键字段,该字段具有相同数量的字符,并且在每个记录中的相对位置相同。
以下是 KSDS 的主要特征:
KSDS 数据集中的记录始终按键字段排序。记录按键的升序排序。
记录可以顺序访问,也可以直接访问。
记录使用键进行识别。每个记录的键是记录中预定义位置的一个字段。每个键在 KSDS 数据集中必须唯一。因此,不允许重复记录。
插入新记录时,记录的逻辑顺序取决于键字段的排序顺序。
KSDS 数据集中的记录可以是固定长度或可变长度。
KSDS 可以像其他文件一样在COBOL程序中使用。我们将在 JCL 中指定文件名,并且可以在程序内部使用 KSDS 文件进行处理。在 COBOL 程序中,将文件组织指定为Indexed,并且您可以对 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))
示例
以下示例显示了如何在 JCL 中使用 IDCAMS 实用程序创建 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 - 集群模块中提到的相同。
示例
以下示例显示了如何在 JCL 中使用 IDCAMS 实用程序删除 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 集群。