我是COBOL(和OpenCOBOL)的新手,我的问题是关于OpenCOBOL中的"complex-odo“(OCCURS...DEPENDING ON)。
我在下面的代码中使用了1.0
.
01 W-PTDO-PROC-TBL.
05 W-PTDO-PROC-ENTRY OCCURS 0 TO 450 TIMES
DEPENDING ON W-PTDO-PROC-MAX
INDEXED BY W-PTDO-PROC-INDX.
10 W-PTDO-PROC-APC PIC X(05).
10 W-PTDO-PROC-LNSUB PIC S9(07) COMP-3.
10 W-PTDO-PROC-KEY.
15 W-PTDO-PROC-WA-OFFSET PIC 9(08)V99.
15 W-PTDO-PROC-UNITS PIC 9(09).
10 W-PTDO-PROC-DEVICE-CNT PIC 9(03).
10 W-PTDO-PROC-DARRAY OCCURS 0 TO 450 TIMES
DEPENDING ON W-PTDO-DARRAY-MAX
INDEXED BY W-PTDO-DARRAY-INDX.
15 W-PTDO-PROC-DHCPCS PIC X(05).
10 W-PTDO-DARRAY-SIZE PIC 9(03).
10 W-PTDO-PROC-TOT-DCHRGS PIC 9(10)V99.
10 W-PTDO-PROC-TOT-DUNITS PIC 9(05).
10 W-PTDO-PROC-USED PIC X(01)..
并且cobc返回此错误消息:
错误:由于'W-PTDO-PROC-DARRAY‘,'W-PTDO-PROC-ENTRY’不能包含OCCURS子句
上面的错误消息是从field.c发出的。c我在那里找到了这条注释/*包含contains子句的数据项不能从属于包含contains子句的数据项*/
有没有办法让OpenCOBOL支持这个“复杂的odo”?
根据IBM's COBOL Programming Guide的附录,我上面的代码片段带有嵌套在更高级别的“发生”子句下的“发生依赖”,看起来是一个定义良好的"complex-odo“。
谢谢,
比利·荣
发布于 2011-03-14 14:12:59
你不能在另一个数组中有一个可变长度的数组(发生取决于)!
所需的处理太复杂了。如果允许内部数组项的长度变化,则计算外部数组的第N个条目的开始的唯一可能方法是从1到N顺序访问每个内部成员,并使用依赖于计数来计算其长度,从而计算出下一个数组条目的开始。
https://stackoverflow.com/questions/5101422
复制相似问题