将记录追加到现有文件

Sai*_*sha 2 cobol mainframe dataset jcl

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

Nea*_*alB 5

DISP=MOD

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

注意以下几点:

多卷数据集

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

分区数据集

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

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

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

顺序数据集和COBOL OPEN动词

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

如果您指定DISP=MOD在JCL,COBOL程序会记录添加到两个连续的数据集的结尾OPEN OUTPUTOPEN 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如果你没有更新的数据集,并且不希望阻止并发访问其他程序。