3

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

4

1 回答 1

6

DISP=MOD

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

请注意以下事项:

多卷数据集

的行为DISP=MOD取决于您是否指定特定卷。您应该查看此参考 以了解规则

分区数据集

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

如果不指定成员名称,系统会将读/写机制置于数据集的末尾。系统不会自动进入目录。

将数据添加到 PDS/PDSE 成员的末尾有点小技巧。您通常必须删除并重写添加新记录的整个成员。

顺序数据集和 COBOL OPEN 动词

DISPJCL 中的给定和 COBOLOPEN动词之间存在一些“相互作用” 。

如果您DISP=MOD在 JCL 中指定,COBOL 程序将在顺序数据集的末尾添加OPEN OUTPUT和的记录OPEN EXTEND

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

VSAM 数据集

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

  • KSDS(关键序列数据集)
  • ESDS(输入序列数据集)
  • RRDS(相对记录数据集)
  • LSD(线性空间数据集)

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

VSAM 数据集必须在 COBOL 程序引用它们之前进行预定义。这通常作为单独的 IDCAMS作业完成。一旦定义了 VSAM 数据集,就可以通过 COBOL(或其他)程序对其进行访问。本 参考资料很好地概述了在 COBOL 下操作 VSAM 数据集。部分:将记录添加到 VSAM 数据集 涵盖了从 COBOL 程序将记录添加到 VSAM 数据集的细节。使用OPEN EXTEND COBOL open 语句的版本将记录添加到现有 ESDS 或 KSDS VSAM 数据集的末尾。请注意,对于 KSDS 数据集,必须按照键的递增顺序添加记录。

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

于 2010-07-12T13:42:17.133 回答