开发手册 欢迎您!
软件开发者资料库

VSAM - 备用索引

VSAM备用索引 - 从基本概念到高级概念,从简单而简单的步骤学习VSAM,其中包括概述,组件,集群,KSDS,ESDS,RRDS,LDS,命令,备用索引,目录和文件状态。

备用索引是除了主索引之外为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执行,它将构建索引.