- 学习 VSAM 教程
- VSAM - 首页
- VSAM - 概述
- VSAM - 组件
- VSAM - 集群
- VSAM - ESDS
- VSAM - KSDS
- VSAM - RRDS
- VSAM - LDS
- VSAM - 命令
- VSAM - 备用索引
- VSAM - 目录
- VSAM - 文件状态
- VSAM - 面试问题
- VSAM 有用资源
- VSAM - 快速指南
- VSAM - 有用资源
- VSAM - 讨论
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))
以上语法显示了定义备用索引时使用的参数。我们在“定义集群模块”中已经讨论了一些参数,在定义备用索引时使用了一些新的参数,我们将在本文中讨论这些参数:
序号 | 参数及描述 |
---|---|
1 | DEFINE AIX Define AIX 命令用于定义备用索引并指定其组件的参数属性。 |
2 | NAME NAME 指定备用索引的名称。 |
3 | 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 执行,并且将构建索引。