将记录附加到现有文件

时间:2010-07-12 08:21:54

标签: cobol dataset mainframe jcl

如果我想将记录附加到现有文件,我需要使用哪些DISP参数?

1 个答案:

答案 0 :(得分:4)

DISP=MOD

这将附加到现有顺序数据集的末尾。如果指定的数据集尚不存在,则会创建它(在这种情况下,DISP = MOD和DISP = NEW是等效的)

请注意以下事项:

多卷数据集

DISP=MOD的行为取决于您是否指定 一个特定的卷。你应该查看这个reference 对于规则

分区数据集

如果您在DSNAME参数中指定成员名称, 成员名称​​必须不存在。系统将读/写机制定位在最后 的数据集。如果成员名称已存在,则系统将终止作业。

如果您没有指定会员名称, 系统将读/写机制定位在数据集的末尾。系统 不会自动进入目录。

将数据添加到PDS / PDSE成员的末尾是一个小技巧。你一般都要这样做 删除并重写添加了新记录的整个成员。

顺序数据集和COBOL OPEN动词

有一些“相互作用” 在JCL中给出的DISP和COBOL OPEN动词之间。

如果在JCL中指定DISP=MOD,则COBOL程序会将记录添加到 OPEN OUTPUTOPEN EXTEND的连续数据集的结尾。

如果在JCL中指定DISP=OLD,则COBOL程序会将记录添加到 OPEN EXTEND的顺序数据集的结尾。如果您将顺序数据集打开为OPEN OUTPUT, 删除数据集的原始内容,您将有效 再次从空数据集开始(就像您已删除并重新分配它一样)。

VSAM数据集

虚拟存储访问方法(VSAM)文件完全不同 水壶的鱼。 VSAM数据集来自各种组织:

  • KSDS(密钥序列数据集)
  • ESDS(条目序列数据集)
  • RRDS(相对记录数据集)
  • LSD(线性空间数据集)

每个组织都有自己的特点和用法。

VSAM数据集必须在COBOL程序引用它们之前预先定义。这通常是单独完成的 IDCAMS工作。一旦 VSAM数据集已经存在 定义,它 可以通过COBOL(或其他)程序访问。这个 reference提供 在COBOL下操作VSAM数据集的一个很好的概述。部分:Adding records to a VSAM dataset 介绍了从COBOL程序向VSAM数据集添加记录的细节。使用OPEN EXTEND COBOL open语句的版本,用于将记录添加到现有ESDS或KSDS VSAM数据集的末尾。注意 对于KSDS数据集,必须按照与密钥相关的递增顺序添加记录。

用于将VSAM数据集连接到程序的JCL实际上非常简单,而且是 描述here。 对于现有的VSAM数据集,使用DISP=MODDISP=OLD相同(使用任何一个 - 它不会 区别)。如果您没有更新,请使用DISP=SHR 数据集并且不希望阻止其他程序进行并发访问。