VSAM - ESDS

ESDS 称为条目顺序数据集。条目顺序数据集的行为类似于顺序文件组织,但包含更多功能。我们可以直接访问记录,出于安全目的,我们也可以使用密码。我们必须在 ESDS 数据集的 DEFINE CLUSTER 命令中编码 NONINDEXED。以下是 ESDS 的主要功能 −

  • ESDS 集群中的记录按插入数据集的顺序存储。

  • 记录由物理地址引用,该地址称为相对字节地址 (RBA)。假设在 ESDS 数据集中,我们有 80 个字节记录,则第一个记录的 RBA 将为 0,第二个记录的 RBA 将为 80,第三个记录的 RBA 将为 160,依此类推。

  • 可以通过 RBA 按顺序访问记录,这称为寻址访问

  • 记录按插入顺序保存。新记录插入到末尾。

  • 无法在 ESDS 数据集中删除记录。但可以将它们标记为非活动状态。

  • ESDS 数据集中的记录可以是固定长度或可变长度。

  • ESDS 未编入索引。ESDS 数据集中不存在键,因此它可能包含重复记录。

  • ESDS 可以像任何其他文件一样在 COBOL 程序中使用。我们将在 JCL 中指定文件名,并且可以使用 ESDS 文件在程序内部进行处理。在 COBOL 程序中,使用 ESDS 数据集将文件组织指定为 Sequential,并将访问模式指定为 Sequential

定义 ESDS 集群

以下语法显示了创建 ESDS 集群时可以使用哪些参数。参数描述与 VSAM - 集群模块中提到的相同。

DEFINE CLUSTER (NAME(esds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NONINDEXED                               -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(esds-file-name.data))  

示例

以下示例展示了如何使用 IDCAMS 实用程序在 JCL 中创建 ESDS 集群 −

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

如果您要在 Mainframes 服务器上执行上述 JCL。它应使用 MAXCC = 0 执行,并将创建 MY.VSAM.ESDSFILE VSAM 文件。

删除 ESDS 集群

使用 IDCAMS 实用程序删除 ESDS 集群。DELETE 命令从目录中删除 VSAM 集群的条目,并可选择删除文件,从而释放对象占用的空间。

DELETE 数据集名称 CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]

以上语法显示了删除 ESDS 集群时可以使用哪些参数。参数描述与 VSAM - 集群模块中提到的相同。

示例

以下示例显示如何使用 IDCAMS 实用程序删除 JCL 中的 ESDS 集群 −

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

如果您要在大型机服务器上执行上述 JCL。它应以 MAXCC = 0 执行,并将删除 MY.VSAM.ESDSFILE VSAM 集群。