将记录追加到现有文件

发布于 2024-09-08 17:30:27 字数 38 浏览 6 评论 0原文

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

If I want to append records to an existing file what DISP parameters do I need to use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不喜欢何必死缠烂打 2024-09-15 17:30:27

DISP=MOD

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

请注意以下事项:

多卷数据集

DISP= 的行为MOD 根据您是否指定而变化
特定的体积。您应该查看此 参考
对于规则

分区数据集

如果您在 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(或其他)程序访问。这
参考提供
关于在 COBOL 下操作 VSAM 数据集的一个很好的概述。该部分:将记录添加到 VSAM 数据集
涵盖从 COBOL 程序向 VSAM 数据集添加记录的细节。使用OPEN EXTEND
COBOL open 语句的版本,用于将记录添加到现有 ESDS 或 KSDS VSAM 数据集的末尾。笔记
对于 KSDS 数据集,必须按照密钥的升序添加记录。

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

DISP=MOD

This will append to the end of an existing sequential dataset. If the specified dataset does not yet exist, it will be created (in this case DISP=MOD and DISP=NEW are equivalent)

Beware of the following:

Multi-Volume Datasets

Behaviour of DISP=MOD varies depending on whether or not you specify
a specific volume. You should review this reference
for the rules

Partitioned Datasets

If you specify a member name in the DSNAME parameter,
the member name must not already exist. The system positions the read/write mechanism at the end
of the data set. If the member name already exists, the system terminates the job.

If you do not specify a member name,
the system positions the read/write mechanism at the end of the data set. The system
does not make an automatic entry into the directory.

Adding data to the end of a member of a PDS/PDSE is a bit of a trick. You generally have to
delete and rewrite the entire member with the new records added to it.

Sequential Datasets and the COBOL OPEN verb

There is some "interplay"
between the DISP given in JCL and the COBOL OPEN verb.

If you specify DISP=MOD in your JCL, a COBOL program will add records to the
end of a sequential dataset for both OPEN OUTPUT and OPEN EXTEND.

If you specify DISP=OLD in your JCL, a COBOL program will add records to the
end of a sequential dataset for OPEN EXTEND. If you open the sequential dataset as OPEN OUTPUT,
the original contents of the dataset are deleted and you will effectively
be starting with an empty dataset again (just as if you had deleted and reallocated it).

VSAM Datasets

Virtual Storage Access Method (VSAM) files are a whole different
kettle of fish. VSAM datasets come in a variety of organizations:

  • KSDS (Key Sequenced Data Set)
  • ESDS (Entry Sequenced Data Set)
  • RRDS (Relative Record Data Set)
  • LSD (Linear Space Data Set)

Each of organization has its own characteristics and usages.

VSAM datasets must be pre-defined before a COBOL program may reference them. This is often done as a separate
IDCAMS job. Once
the VSAM dataset has been
defined, it
may accessed through a COBOL (or other) program. This
reference provides
a good overview for manipulating VSAM datasets under COBOL. The section: Adding records to a VSAM dataset
covers the specifics of adding records to a VSAM dataset from a COBOL program. Use the OPEN EXTEND
version of the COBOL open statement to add records to the end of an existing ESDS or KSDS VSAM dataset. Note
that for KSDS datasets, records must be added in increasing order with respect to the key.

The JCL used to connect a VSAM dataset to program is actually pretty simple, and is
described here.
Using DISP=MOD is the same as DISP=OLD for existing VSAM datasets (use either one - it makes no
difference). Use DISP=SHR if you are not updating
the dataset and do not want to block other programs from concurrent access.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文