嘿大家.我在使用COBOL在zOS环境中尝试解决的编码项目中遇到了一些麻烦.我需要读取一个文件并将它们放入一个索引表(我知道将有少于90个记录).
抛弃我的是我们受项目参数的约束,使用一个名为"Table-Size"的变量(在声明时设置为零).
鉴于这一切,我需要做一些类似"发生1到90次取决于表大小"的事情,但我不明白如果表大小必须(据我所知),这将如何工作因为表 - size随着添加到表中的每个条目一起递增.有人可以帮我清楚一下吗?
谢谢!
听起来你的主要关注点是:如果在运行时大小发生变化,编译器如何知道在数组中分配多少?
答案是它分配了最大的空间量(足够90个条目).请注意,这是用于工作存储空间.将记录写入文件时,仅写入相关部分.
一个例子:
01 TABLE-SIZE PIC 9 01 TABLE OCCURS 1 TO 9 TIMES DEPENDING ON TABLE-SIZE 03 FLD1 PIC X(4)
这将为TABLE
工作存储分配36个字符(9乘以4).如果TABLE-SIZE
将记录写入文件时设置为2 ,则只写入8个字符TABLE
(TABLE-SIZE
当然,在写入的字符之上和之上).
因此,例如,如果占用的内存TABLE
是AaaaBbbbCcccDdddEeeeFfffGgggHhhhIiii
,写入文件的日期可能会缩短(包括大小)2AaaaBbbb
.
类似地,当读回记录时,将从文件中填充两者TABLE-SIZE
和相关位TABLE
(仅设置大小和前两个元素).
当发生这种情况时,我不相信未使用的TABLE
条目被初始化为任何东西.不管怎样,最好不要假设,如果你需要在表格中添加另一个项目,请明确填充它们.
为了提高效率,您可能需要考虑设置TABLE-SIZE
为USAGE IS COMP
.