我有一个现有的 MF COBOL 4.0 程序,ISAM 文件中有多年的数据,但我需要在现有文件中添加一个新字段。该记录目前有 1208 个字符,我需要再添加 10 个字符。
如果我只是将额外的 PIC X(10) 字段放在我的字帖中,它会给我一个错误。
我有一个现有的 MF COBOL 4.0 程序,ISAM 文件中有多年的数据,但我需要在现有文件中添加一个新字段。该记录目前有 1208 个字符,我需要再添加 10 个字符。
如果我只是将额外的 PIC X(10) 字段放在我的字帖中,它会给我一个错误。
您需要修改基础数据文件以匹配您在 COBOL 中的文件定义。这样做的一种方法是定义一行输出,就像现在的数据行一样,但在它的末尾有一个额外的 Pic x(10)。然后,您将逐行读取数据,并将其输出到一个新位置,并在其末尾有 10 个额外的空格。这样,您的数据就多了 10 个字符,您可以返回并将额外的 Pic x(10) 添加到您的主程序中。它应该在那之后工作。
通过更改字帖,您只需更改程序中使用的数据的表示形式。您不应该也重组数据源(即 ISAM 文件)吗?
迟到的答案,但我想你可能会感兴趣。
我已经在我们的 Cobol 系统上工作了 20 多年,我们已经多次遇到这个问题。
对索引文件结构的更改是我们认为的“主要版本”。这些需要特定的转换程序,这些程序:
当然,这些转换需要系统“关闭”,因此它们被视为主要版本。
如果您的文件将来可能会添加字段,则可以在索引文件的末尾添加额外的 FILLER 以应对添加的新字段。我们倾向于添加 50 或 100 的 FILLER。当然,如果您更改现有字段之一,甚至更改任何键的结构,这对您没有帮助。
对于文件错误,您需要保留一份方便的列表。我建议从您在网上找到的列表开始,每当您遇到无法在 5 秒内弄清楚的错误时,请添加对解决方案的详细说明,以便下次发生时将其包含在您的笔记中。这里有几个不错的清单开始
在我的列表中,文件状态 39 是:
这来自个性化注释:检查您在 JCL 中分配给 ddname 的文件。尤其是长度分配。在您的情况下,您知道长度不匹配,因为您刚刚更改了程序。
有一些实用程序可以重新格式化数据集,尤其是 SYNCSORT。或者,当然你也可以自己写。