VSAM - 集群

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

定义集群

以下语法显示了主要参数,这些参数分为 定义集群、数据索引

.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 级别的参数仅适用于数据或索引组件。

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

Sr.No 带说明的参数
1

DEFINE CLUSTER

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

2

NAME

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

3

BLOCKS

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

4

VOLUMES

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

5

INDEXED / NONINDEXED / NUMBERED / LINEAR

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

6

RECSZ

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

7

FREESPACE

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

8

CISZ

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

9

KEYS

Keys 参数仅在键序列 (KSDS) 文件中定义。它指定主键相对于第一列的长度和偏移量。此参数的值范围为 1 到 255 个字节。

10

READPW

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

11

FOR/TO

此参数的值以日期和天数指定保留文件的时间量。此参数的默认值为零天。

12

UPDATEPW

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

13

REUSE / NOREUSE

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

14

DATA - NAME

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

15

INDEX-NAME

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

16

CATALOG

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))
/*

如果您要在 Mainframes 服务器上执行上述 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]

以上语法显示了我们可以与 Delete 语句一起使用的参数。我们将在下表中详细讨论它们中的每一个 −

Sr.No 带说明的参数
1

ERASE / NOERASE

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

2

FORCE / NOFORCE

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

3

PURGE / NOPURGE

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

4

SCRATCH / NOSCRATCH

指定 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 文件。