VSAM - 集群


VSAM集群在JCL中定义。JCL 使用IDCAMS实用程序创建集群。IDCAMS 是 IBM 开发的一个用于访问方法服务的实用程序。它主要用于定义VSAM数据集。

定义集群

以下语法显示了分组在Define Cluster、DataIndex下的主要参数。

.DEFINE CLUSTER (NAME(vsam-file-name)      -
BLOCKS(number)                             -
VOLUMES(volume-serial)                     -
[INDEXED / NONINDEXED / NUMBERED / LINEAR] -
RECSZ(average maximum)                     -
[FREESPACE(CI-Percentage,CA-Percentage)]   -
CISZ(number)                               -
[KEYS(length offset)]                      -
[READPW(password)]                         -
[FOR(days)|TO(date)]                       -
[UPDATEPW(password)]                       -
[REUSE / NOREUSE] )                        -
DATA                                       -
   (NAME(vsam-file-name.data))             -
INDEX                                      -
   (NAME(vsam-file-name.index))            -
CATALOG(catalog-name[/password]))            

CLUSTER 级别的参数适用于整个集群。DATA 或 INDEX 级别的参数仅适用于数据或索引组件。

我们将在下表中详细讨论每个参数 -

先生编号 参数及说明
1

定义集群

Define Cluster命令用于定义集群并指定集群及其组件的参数属性。

2

姓名

NAME 指定我们为其定义集群的 VSAM 文件的名称。

3

积木

Blocks 指定分配给集群的块数。

4

成交量

卷指定将包含集群或组件的一个或多个卷。

5

索引/非索引/编号/线性

该参数可以采用三个值:INDEXED、NONINDEXED 或 NUMBERED,具体取决于我们创建的数据集的类型。对于键序 (KSDS) 文件,使用 INDEXED 选项。对于条目排序 (ESDS) 文件,使用 NONINDEXED 选项。对于相对记录 (RRDS) 文件,需要 NUMBERED 选项。对于线性 (LDS) 文件,需要 LINEAR 选项。该参数的默认值为 INDEXED。我们将在接下来的模块中详细讨论 KSDS、ESDS、RRDS 和 LDS。

6

雷克萨斯

记录大小参数有两个值:平均和最大记录大小。平均值指定文件中逻辑记录的平均长度,最大值表示记录的长度。

7

可用空间

可用空间指定为数据组件的控制间隔 (CI) 和控制区域 (CA) 保留的可用空间的百分比。该参数的默认值是零百分比。

8

CISZ

CISZ 称为控制间隔大小。它指定控制间隔的大小。

9

按键

Keys 参数仅在密钥序列 (KSDS) 文件中定义。它指定主键距第一列的长度和偏移量。该参数的取值范围为1~255字节。

10

读PW

READPW参数中的值指定读取级别的密码。

11

为/至

此参数的值指定保留文件的时间量(以日期和天数表示)。此参数的默认值是零天。

12

更新PW

UPDATEPW 参数中的值指定更新级别的密码。

13

重复使用/不重复使用

REUSE 参数允许定义可以重置为空状态的集群,而无需删除和重新定义它们。

14

数据-名称

簇的 DATA 部分包含数据集名称,其中包含文件的实际数据。

15

索引名称

簇的 INDEX 部分包含主键和数据部分中相应记录的内存指针。它是在使用 Key Sequenced 簇时定义的。

16

目录

Catalog 参数表示将在其下定义文件的目录。我们将在接下来的模块中单独讨论目录。

例子

以下是一个基本示例,展示如何在 JCL 中定义集群 -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   KEYS(5  0)                              -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))
/*

如果您将在大型机服务器上执行上述 JCL。它应该以 MAXCC = 0 执行,并将创建 MY.VSAM.KSDSFILE VSAM 文件。

删除集群

要删除 VSAM 文件,需要使用 IDCAMS 实用程序删除 VSAM 集群。DELETE 命令从目录中删除 VSAM 簇的条目,并可选择删除文件,从而释放对象占用的空间。如果 VSAM 数据集未过期,则不会被删除。要删除此类类型的数据集,请使用 PURGE 选项。

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

上面的语法显示了我们可以与删除语句一起使用的参数。我们将在下表中详细讨论它们 -

先生编号 参数及说明
1

擦除/不擦除

指定 ERASE 选项可覆盖为目录中的对象指定的 ERASE 属性。默认情况下采用 NOERASE 选项。

2

力/无力

指定 FORCE 选项可删除 SPACE 和 USERCATALOG,即使它们不为空。默认情况下采用 NOFORCE 选项。

3

净化/不净化

如果数据集尚未过期,PURGE 选项用于删除 VSAM 数据集。默认情况下采用 NOPURGE 选项。

4

划痕/无划痕

指定 SCRATCH 选项是为了从卷目录中删除对象的关联条目。它主要用于非 vsam 数据集,例如 GDG。默认情况下采用 NOSCRATCH 选项。

例子

以下是一个基本示例,展示如何在 JCL 中删除集群 -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
	PURGE
/*

如果您将在大型机服务器上执行上述 JCL。它应该以 MAXCC = 0 执行,并将删除 MY.VSAM.KSDSFILE VSAM 文件。