📜  VSAM-备用索引

📅  最后修改于: 2020-11-22 17:22:37             🧑  作者: Mango


备用索引是除其主要索引之外,还为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 Parameters with Description
1

DEFINE AIX

Define AIX command is used to define Alternate Index and specify parameter attributes for its components.

2

NAME

NAME specifies the name of Alternate Index.

3

RELATE

RELATE specifies the name of the VSAM cluster for which the alternate index is created.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY specifies that the alternate index is unique and NONUNIQUEKEY specifies that duplicates may exist.

5

UPGRADE / NOUPGRADE

UPGRADE specifies that the alternate index should be modified if the base cluster is modified and NOUPGRADE specifies that the alternate indexes should be left alone if the base cluster is modified.

以下是一个基本示例,显示了如何在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中定义Path的基本示例-

//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的情况下执行,并且将在Alternate Index与基础集群之间创建路径。

建筑指标

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执行,并将建立索引。