假设我在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.
Run Code Online (Sandbox Code Playgroud)
当这个程序运行时,它最初会分配这个表可能需要的空间,还是分配内存更动态?我猜这个DEPENDING ON
子句会使它更具动态性,因为它会随着ITEM-COUNT
变量的增加而分配更多的内存.一位同事告诉我,但他不是百分百肯定.所以我真的想知道这是如何工作的,以便尽可能有效地构建我的程序.
PS:是的,我正在写一个新的COBOL程序!它实际上是一个CICS Web服务.我认为这种语言永远不会死:(
小智 6
您没有提到您正在使用的编译器,但是,至少通过当前的2002 COBOL标准,为OCCURS分配的空间...依赖于(ODO)数据项不需要是动态的.(实际上只是数据项的出现次数而不是长度变化.)虽然您的编译器供应商可能已经实现了标准的扩展,但我不知道任何供应商在此领域已经这样做了.
下一个但尚未批准的标准修订包括支持具有新OCCURS DYNAMIC格式的动态容量表.