Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据结构用Cobol创建表?_Cobol - Fatal编程技术网

从数据结构用Cobol创建表?

从数据结构用Cobol创建表?,cobol,Cobol,我需要用下面的数据结构制作一个表格,因为我不确定输入文件中每行有多少条记录。如果我能做一个表格,那么我将能够在以后的时间循环通过它们,这就是我需要能够做到的 **问题:以前如何用数据结构制作表格? 第二部分:Cobol中的数组是一个发生100次的数组 01 PRECORD. 05 JE. 10 NE PIC X(6) VALUE SPAC

我需要用下面的数据结构制作一个表格,因为我不确定输入文件中每行有多少条记录。如果我能做一个表格,那么我将能够在以后的时间循环通过它们,这就是我需要能够做到的

**问题:以前如何用数据结构制作表格? 第二部分:Cobol中的数组是一个发生100次的数组

01 PRECORD.                             
    05 JE.                              
       10 NE          PIC X(6)  VALUE SPACES.
       10 NM          PIC X(2)  VALUE SPACES.
    05 FILL1          PIC X(16) VALUE SPACES.
    05 TM             PIC X(7)  VALUE SPACES.
    05 FILL2          PIC X(6)  VALUE SPACES.
    05 TT             PIC X(7)  VALUE SPACES.
    05 FILL3          PIC X(13) VALUE SPACES.
    05 TTY            PIC X(10) VALUE SPACES.
    05 FILL4          PIC X(13) VALUE SPACES.

我只是不确定Cobol表的结构。我的问题是Cobol数据结构的格式是什么?

就我个人而言,我将
表计数器
声明为77级,带有PIC 9(03)。你真的应该删除
VALUE
子句。当然,这需要是一个
WORKING-STORAGE
条目,而不是
FD
,因为该表不在文件中。除此之外,你所说的似乎是正确的——但很难看出你在问什么问题

您的桌面计数器需要一张图片

什么照片?众说纷纭

有三种数字格式对此很有用:二进制、压缩十进制和显示数字

nn table-counter COMP/COMP-4/BINARY/COMP-5 PIC 9(4).
nn table-counter COMP-3/PACKED-DECIMAL PIC 9(3).
nn table-counter  PIC 9(3).
最有效的定义是二进制定义。如果使用压缩十进制,编译器将生成代码,在与用于订阅的任何内容(文字除外)进行比较时,将其转换为二进制。使用display numeric时,编译器将生成代码,首先转换为压缩十进制,然后再转换为二进制

这些事情和现在机器的速度有关系吗?好吧,如果它们不重要的话,也可能是有效的,但意见确实不同

这幅画多大尺寸?9(4)对于二进制,允许最大值为9999。您可以编码999,但它并没有给您带来太多的优势(不能将其限制为300),因此我选择大小的最佳值(对于压缩小数(COMP-3),它将是999,因为您不会免费获得第四位数字)。如果使用显示数字,则相同。同样,意见各不相同

如果这些是记录,正如Magoo所指出的,您不能只将计数添加到记录的开头。您不能将文件部分中的表保留在和FD下。它需要进入工作存储区

然后是保持两个结构“同步”以确定它们应该匹配的位置的问题

你可能有一个记录布局的抄本。最好的方法是,如果您可以参数化copybook中的名称,这样您就可以在COPY语句中使用replacement,从而允许您将同一个copybook用于两个不同的目的。因此,重要的是,copybook不包含01级别。同样,对于在文案中包含01的问题,意见也不尽相同,但你可能会幸运


考虑到所有的意见,这让我们想到“好吧,我该怎么办?”。你所做的就是他们在你的网站上做这件事的方式。应该有当地标准的文件。这可能不包括所有内容,您可能需要征求同事的意见。如果所有人都以大致相同的方式编写代码,那么代码就更容易理解。

我认为您需要更清楚地了解自己想要实现的目标。我们读一条记录,处理记录,读下一条。继续,直到文件结束。有时您需要存储以前的记录,或存储一组记录。对于已知最大大小的引用文件,出于性能原因,我们可能会将其加载到工作存储器中。我们不做的只是将任何旧文件读入内存,然后对其进行处理。除非您有EnterpriseCoblV5.1,否则不能有一个包含无限条目的表。请澄清,我没有。工作的那个家伙让我做一张有200次出现的桌子。工作中的文件是一个parmcard,其中包含用于从文件中更新或删除记录的记录。所有记录都只有一行。他不认为每个作业运行会有超过40条记录。我们必须使用JCL来运行Cobol进程,这与Java或C#部分不同。77s不再有好处,它现在相当于带有图片的01,看起来更整洁,也不会提出“77有什么特别之处?”的问题,这没什么(现在)“@BillWoodger当然77s有好处。比如说,与当地的博士展开辩论,了解是否应该使用77s。(我假设你不是博士…)离博士还差得远。需要什么是77的知识。但是,这些天来,这只是意味着“这是一个拼写糟糕的01,非常糟糕”。
  01 mytable.
     02 counter...
     02 tablevar occures 200 times.
        05 var...
        05 var2..
nn table-counter COMP/COMP-4/BINARY/COMP-5 PIC 9(4).
nn table-counter COMP-3/PACKED-DECIMAL PIC 9(3).
nn table-counter  PIC 9(3).