2010-07-12 102 views

回答

4

DISP=MOD

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

当心以下的:

多体积数据集

DISP=MOD的行为因您是否指定 特定卷而异。如果您在DSNAME参数指定一个成员的名字,您应该查看该reference 的规则

分区数据集

, 成员名称不得存在。系统将读/写机制定位在数据集的末尾 处。如果成员名称已存在,系统将终止该作业。

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

将数据添加到一个PDS/PDSE的构件的端部是一个位一招。您通常必须 删除并用添加的新记录重写整个成员。

顺序数据集和COBOL OPEN动词

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

如果您在JCL指定DISP=MOD,COBOL程序会记录添加到一个连续数据集的 结束两个OPEN OUTPUTOPEN EXTEND

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

VSAM数据集

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

  • KSDS(主要测序数据集)
  • ESDS(输入序列数据集)
  • RRDS(相对记录数据集)
  • LSD(线性空间数据套)

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

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

用于将VSAM数据集连接到程序的JCL实际上非常简单,并且是 所述的here。 对于现有的VSAM数据集,使用DISP=MODDISP=OLD相同(使用任意一个 - 它不会产生 差异)。如果您未更新 数据集并且不想阻止其他程序进行并发访问,请使用DISP=SHR

+0

嗨尼尔,感谢repy。如果我使用DISP = MOD,那么当我打开文件光标已经定位在最后一个记录时,它是否就像我一样? – Saisha 2010-07-13 05:14:06

+0

@Manasi使用DISP = MOD打开顺序数据集将读/写机制放在数据集中的最后一条记录之后。您的程序发出的下一次写入会为数据集添加一条新记录(不会覆盖现有记录)。 DISP = MOD意味着您将写入数据集(而不是从中读取数据)。注意:术语“游标”通常与数据库操作相关联(例如,相对于多行SQL查询的游标位置)。对于数据集操作,我们通常引用数据集中的读/写位置。 – NealB 2010-07-13 14:10:22

+0

谢谢Neal,如果我使用DISP = MOD,我必须在EXTEND模式下打开文件,对吧? 我可以在DISP = OLD中使用EXTEND吗? 如果我使用DISP = OLD来追加记录,那么我的数据集中的读/写位置是什么? – Saisha 2010-07-14 05:55:37