首页
学习
活动
专区
圈层
工具
发布

COBOL混淆
EN

Stack Overflow用户
提问于 2009-03-28 01:55:01
回答 2查看 1.3K关注 0票数 3

嘿,大家好。我在一个编码项目中遇到了一些问题,我正试图在zOS环境中使用COBOL语言来解决这个问题。我需要读入一个文件并将它们放入一个索引表中(我知道将会有不到90条记录)。

让我大吃一惊的是,我们受项目参数的约束,必须使用一个名为"Table-Size“的变量(声明时设置为零)。

考虑到这一切,我需要做一些类似于“根据table-size发生1到90次”的事情,但是我不明白如果table-size必须这样做(据我所知),这将如何工作,因为table -size随着添加到表中的每个条目而递增。有人能帮我把这个弄清楚吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-28 04:34:37

听起来你最关心的问题是:如果数组的大小在运行时发生变化,编译器如何知道在数组中分配多少?

答案是它分配了最大的空间量(足以容纳90个条目)。请注意,这是用于工作存储中的空间。将记录写入文件时,仅写入相关部分。

举个例子:

代码语言:javascript
复制
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-SIZETABLE的相关位都将从文件中填充(仅设置大小和前两个元素)。

我不相信当发生这种情况时,未使用的TABLE条目会被初始化为任何东西。如果需要向表中添加另一项,最好假定不是这样,并显式地填充它们。

为了提高效率,您可能需要考虑将TABLE-SIZE设置为USAGE IS COMP

票数 9
EN

Stack Overflow用户

发布于 2009-03-28 04:16:14

我们在这里没有足够的信息,但基本的事情是,在DEPENDING ON子句中命名的变量必须具有组的变量数量的计数。所以你需要像这样的东西

代码语言:javascript
复制
01   TABLE-SIZE     PIC 99
01   TABLE OCCURS 1 TO 90 TIMES
       DEPENDING ON TABLE-SIZE
    03 FIELD-1
    03 FIELD-2

诸若此类。

请参阅Publib上的this articlethis article

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/692005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档