我有一个没有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)
显然这不起作用。有没有人知道我应该如何配置这个文件才能打开它?
我应该在文件控件中定义这些变量记录大小吗?
答案 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>
缩进和间隔代码使其更易于阅读。