COBOL可变表大小
当我需要将数量可变的记录加载到表中时,我通常使用以下三种方法之一:COBOL可变表大小,cobol,Cobol,当我需要将数量可变的记录加载到表中时,我通常使用以下三种方法之一: 猜测表的最大大小(“MAX-table-size”)。根据INPUT-FILE-RECORD-COUNT,使表格出现1到最大表格大小的时间。在将输入记录加载到表中时统计输入记录的数量。如果输入文件中的记录数大于MAX-TABLE-SIZE,则显示所需的表格大小并停止运行。然后手动使用更高的MAX-TABLE-SIZE值重新编译程序,然后重新运行该程序 使用两个程序。第一个程序统计输入文件中的记录数,编写第二个源代码文件(具有必要
COBOL中是否有其他技术用于处理可变数量的记录?它们的优点/缺点是什么?除非已知性能是一个问题,否则您无法改进(3)。前两种方法在生产软件中使用的开销太大&手动处理。今天的硬盘在缓存数据方面做得很好,在大多数情况下,性能应该不是问题 如果您必须将记录读入内存,那么您最好的办法(过去通常是这样做的)是估计您需要的记录数量,并将其大量增加,以便在大多数情况下只需运行一次,而无需重新编译。如果出错,则必须增加表分配。仅仅基于糟糕的编程/设计技术,使这种方法优于(3)需要大量的性能考虑
这些基本上是你的选择。如果你想提供更多关于你正在努力完成的事情的信息,可能会有进一步的建议。。。GLTY.正如@RegularExpression所说,如果可能的话,应该避免选择1和2。 除了3之外,我没有通用的解决方案(注意:除了索引文件,还可以使用临时(本地???)DB表)。 在大多数情况下,此选项将足够快 有几种解决方案在特定情况下有效
- 我曾经在一个人事系统上工作过,这个系统有数千份名册,公司99%的员工每周工作40小时。在这种情况下,最后使用的2元素表产生了奇迹
为什么需要将一个大文件加载到内存中???Valdis,很抱歉,虽然很有趣,但这与堆栈溢出无关。你自己已经想出了三个答案,在这两个答案中确实还有几个,我对现有的答案有些同意,有些不同意。试着找到适合你的特定COBOL的地方,并在那里提问。正如@BruceMartin在对他的回答的评论中指出的,如果你有一个特定的情况,你应该能够在这个基础上制定一个主题问题。如果这只是一个一般性的问题,那就不适用于这里。这是一个一般性的问题。虽然StackOverflow的主题“离题”,但答案很有启发性。谢谢。嗯,我不同意你接受的答案,还有很多其他的事情。我希望你会说GNUCobol,因为他们有一个讨论区。你使用什么COBOL/OS?为什么第一个是开销,你觉得它包括什么?完全取决于数据,但3)的大多数用法都可以轻而易举地完成。我在64位DebianLinux上使用GNUCobol。然而,与其在那个操作系统上为Cobol寻找解决方案,我宁愿有几个通用选项。然后,我可以在我使用的任何平台上尝试每一个,并找到哪一个是最有效的、可维护的,等等。两个文件匹配。另外,根据数据的不同,内存解决方案是无问题的。Enterprise COBOL V4有128MB的工作存储空间。V5具有2GB的工作存储空间。如果使用内存效率不高,这些内存就不会太大。数据的正确方法。正如您的项目符号所示,了解您的数据。这个问题绝对没有明确的答案。@BillWoodger我已经有一段时间没有在大型机上工作了,同时运行大量内存不足的程序会有什么影响???这要看情况而定。如果程序正在做一些愚蠢的事情,你可以杀死机器(这一定是很多程序现在非常愚蠢)。如果选择的解决方案适合这个问题,你不会注意到。和过去一样,只是比例不同。因为最好的方法取决于数据,所以OPs在这里是一个不可能回答的问题。我同意不可能回答位,给出具体细节的问题会更好