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

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

2

NAME

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

3

BLOCKS

Blocks指定为集群分配的块数.

4

VOLUMES

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

5

INDEXED/NONINDEXED/NUMBERED/LINEAR

此参数可以取三个值INDEXED,NONINDEXED或NUMBERED,具体取决于我们创建的数据集类型.对于密钥序列(KSDS)文件,使用INDEXED选项.对于输入顺序(ESDS)文件,使用NONINDEXED选项.对于相对记录(RRDS)文件,需要NUMBERED选项.对于线性(LDS)文件,需要LINEAR选项.此参数的默认值为INDEXED.我们将在即将发布的模块中讨论有关KSDS,ESDS,RRDS和LDS的更多信息.

6

RECSZ

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

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

目录参数表示将在其下定义文件的目录.我们将在即将发布的模块中单独讨论目录.

示例

以下是一个基本示例,展示如何在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语句一起使用.我们将在下表&minus中详细讨论它们;

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选项以从中删除对象的关联条目卷目录.它主要用于GDG等非vsam数据集.默认情况下采用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文件.