0

我有一个现有的 MF COBOL 4.0 程序,ISAM 文件中有多年的数据,但我需要在现有文件中添加一个新字段。该记录目前有 1208 个字符,我需要再添加 10 个字符。

如果我只是将额外的 PIC X(10) 字段放在我的字帖中,它会给我一个错误。

4

4 回答 4

2

您需要修改基础数据文件以匹配您在 COBOL 中的文件定义。这样做的一种方法是定义一行输出,就像现在的数据行一样,但在它的末尾有一个额外的 Pic x(10)。然后,您将逐行读取数据,并将其输出到一个新位置,并在其末尾有 10 个额外的空格。这样,您的数据就多了 10 个字符,您可以返回并将额外的 Pic x(10) 添加到您的主程序中。它应该在那之后工作。

于 2010-03-02T15:24:19.077 回答
0

通过更改字帖,您只需更改程序中使用的数据的表示形式。您不应该也重组数据源(即 ISAM 文件)吗?

于 2010-02-18T18:52:42.560 回答
0

迟到的答案,但我想你可能会感兴趣。

我已经在我们的 Cobol 系统上工作了 20 多年,我们已经多次遇到这个问题。

对索引文件结构的更改是我们认为的“主要版本”。这些需要特定的转换程序,这些程序:

  1. 重命名物理文件,将其移至“旧”文件
  2. 打开文件的“旧”版本(使用更改前的字帖版本)
  3. 打开(创建)文件的“新”版本
  4. 将每个“旧”记录的内容移动到“新”记录并写入它

当然,这些转换需要系统“关闭”,因此它们被视为主要版本。

如果您的文件将来可能会添加字段,则可以在索引文件的末尾添加额外的 FILLER 以应对添加的新字段。我们倾向于添加 50 或 100 的 FILLER。当然,如果您更改现有字段之一,甚至更改任何键的结构,这对您没有帮助。

于 2012-03-12T03:36:48.787 回答
0

对于文件错误,您需要保留一份方便的列表。我建议从您在网上找到的列表开始,每当您遇到无法在 5 秒内弄清楚的错误时,请添加对解决方案的详细说明,以便下次发生时将其包含在您的笔记中。这里有几个不错的清单开始

在我的列表中,文件状态 39 是:

  • OPEN-CONFLICT-FILE-ATR - 'open' 语句不成功,因为在程序中为该文件指定的固定文件属性之间检测到冲突。这些属性包括文件的组织(顺序、相对或索引)、主要记录键、备用记录键、代码集、最大记录大小和记录类型(固定或可变)。

这来自个性化注释:检查您在 JCL 中分配给 ddname 的文件。尤其是长度分配。在您的情况下,您知道长度不匹配,因为您刚刚更改了程序。

有一些实用程序可以重新格式化数据集,尤其是 SYNCSORT。或者,当然你也可以自己写。

于 2012-04-06T21:12:12.413 回答