嘿,大家好。我在一个编码项目中遇到了一些问题,我正试图在zOS环境中使用COBOL语言来解决这个问题。我需要读入一个文件并将它们放入一个索引表中(我知道将会有不到90条记录)。
让我大吃一惊的是,我们受项目参数的约束,必须使用一个名为"Table-Size“的变量(声明时设置为零)。
考虑到这一切,我需要做一些类似于“根据table-size发生1到90次”的事情,但是我不明白如果table-size必须这样做(据我所知),这将如何工作,因为table -size随着添加到表中的每个条目而递增。有人能帮我把这个弄清楚吗?
谢谢!
发布于 2009-03-28 04:34:37
听起来你最关心的问题是:如果数组的大小在运行时发生变化,编译器如何知道在数组中分配多少?
答案是它分配了最大的空间量(足以容纳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。
发布于 2009-03-28 04:16:14
我们在这里没有足够的信息,但基本的事情是,在DEPENDING ON子句中命名的变量必须具有组的变量数量的计数。所以你需要像这样的东西
01 TABLE-SIZE PIC 99
01 TABLE OCCURS 1 TO 90 TIMES
DEPENDING ON TABLE-SIZE
03 FIELD-1
03 FIELD-2诸若此类。
请参阅Publib上的this article或this article。
https://stackoverflow.com/questions/692005
复制相似问题