VSAM - ESDS

ESDS称为条目序列数据集.入门序列数据集的行为类似于顺序文件组织,其中包含更多功能.我们可以直接访问记录,出于安全考虑,我们也可以使用密码.我们必须在ESF数据集的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数据集的顺序.

定义ESDS群集

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

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实用程序创建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))      
/*

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

删除ESDS群集

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

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

上面的语法显示删除ESDS群集时我们可以使用的参数.参数说明与VSAM  -  Cluster模块中提到的相同.

示例

以下示例说明如何使用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
/*

如果您将在Mainframes服务器上执行上述JCL.它应该以MAXCC = 0执行,它将删除MY.VSAM.ESDSFILE VSAM集群.