假设我在中定义了以下可变长度表WORKING-STORAGE
...
01 SOAP-RECORD.
05 SOAP-INPUT PIC X(8) VALUE SPACES.
05 SOAP-STATUS PIC 9 VALUE ZERO.
05 SOAP-MESSAGE PIC X(50) VALUE SPACES.
05 SOAP-ITEMS OCCURS 0 TO 500 TIMES
DEPENDING ON ITEM-COUNT
INDEXED BY ITEM-X.
10 SI-SUB-ITEMS OCCURS 0 TO 100 TIMES
DEPENDING ON SUB-COUNT
INDEXED BY SUB-X.
15 SS-KEY PIC X(8) VALUE SPACES.
15 SS-AMOUNT PIC -9(7).99 VALUE ZEROS.
15 SS-DESCR PIC x(100) VALUE SPACES.
当这个程序运行时,它最初会分配该表可能需要的尽可能多的空间,还是在分配内存方面更加动态?我猜想DEPENDING ON
子句将使其更加动态,因为它会分配更多内存ITEM-COUNT
变量递增。一位同事告诉我情况并非如此,但他并不能 100% 确定。所以我真的很想知道它是如何工作的,以便尽可能有效地构建我的程序。
PS:是的,我am编写一个新的 COBOL 程序!它实际上是一个 CICS Web 服务。我不认为这种语言会消亡:(
您没有提及您正在使用哪个编译器,但是,至少在当前的 2002 COBOL 标准之前,为 OCCURS...DEPENDING ON (ODO) 数据项分配的空间不需要是动态的。 (实际上,数据项的变化只是出现的次数,而不是长度。)尽管您的编译器供应商可能已经实现了标准的扩展,但我不知道有任何供应商在该领域这样做了。
该标准的下一个(但尚未批准)修订包括对具有新 OCCURS DYNAMIC 格式的动态容量表的支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)