Cobol索引具有可变记录长度的文件

时间:2015-03-04 08:37:52

标签: file cobol

我有一个没有COBOL的COBOL索引文件。现在我必须创建一个FD来打开并读取COBOL中的记录。

记录的关键部分具有固定长度。我也有一个数据部分。两个字段具有可变长度。该字段的长度存储在记录的其他字段中。

文件说明如下:

FD ind-file
  01 FD-REC.
    03 FD-KEY.
      05 key1 PIC 9.
      05 key2 PIC 9.
    03 FD-DATA.
      05 data-length1 PIC9(03).
      05 data1       ???? (length depending on data-length1)
      05 data-length2 PIC9(03).
      05 data2       ???? (length depending on data-length2)

显然这不起作用。有没有人知道我应该如何配置这个文件才能打开它?

我应该在文件控件中定义这些变量记录大小吗?

1 个答案:

答案 0 :(得分:3)

FD  ind-file
01  FD-REC.
    03 FD-KEY.
      05 key1                            PIC 9.
      05 key2                            PIC 9.
    03 FD-DATA.
      05 data-length1                    PIC 9(03).
      05 data1.
        07  FILLER OCCURS 0 TO 999 TIMES
            DEPENDING ON data-length1.
          09  FILLER                     PIC X.
      05 data-length2                    PIC 9(03).
      05 data2.
        07  FILLER OCCURS 0 TO 999 TIMES
            DEPENDING ON data-length2.
          09  FILLER                     PIC X.

这应该适合你的定义。排序。

问题是data-length2“可变地定位”。这是愚蠢的。它应该在记录的固定部分。

因此,对于符合1985年“OCCURS依赖标准”的COBOL编译器,您会被卡住。您应该更改记录布局。

如果由于某些不可能的异常原因,那么您需要定义一个新的字段(在WORKING-STORAGE或LOCAL-STORAGE中),您将数据长度2移动到。

显然,在上面的示例中,您可以根据表项目所需的任何定义替换FILLER PIC Xs,以及TIMES的最大值(我刚刚使用了PIC 9(3)给出的最大值。)< / p>

缩进和间隔代码使其更易于阅读。