备用索引是除了主索引之外为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))
上面的语法显示了定义备用索引时使用的参数.我们已经在定义集群模块中讨论了一些参数,并且一些新参数用于定义备用索引,我们将在这里讨论和减去;
Sr.No | 带参数的参数 |
---|---|
1 |
DEFINE AIX 定义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执行,它将构建索引.