如果我想将记录附加到现有文件,我需要使用哪些DISP参数?
答案 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 OUTPUT
和OPEN EXTEND
的连续数据集的结尾。
如果在JCL中指定DISP=OLD
,则COBOL程序会将记录添加到
OPEN EXTEND
的顺序数据集的结尾。如果您将顺序数据集打开为OPEN OUTPUT
,
删除数据集的原始内容,您将有效
再次从空数据集开始(就像您已删除并重新分配它一样)。
VSAM数据集
虚拟存储访问方法(VSAM)文件完全不同 水壶的鱼。 VSAM数据集来自各种组织:
每个组织都有自己的特点和用法。
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=MOD
与DISP=OLD
相同(使用任何一个 - 它不会
区别)。如果您没有更新,请使用DISP=SHR
数据集并且不希望阻止其他程序进行并发访问。