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 集群。