首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COBOL85:如何动态查找数组中的行数

COBOL85:如何动态查找数组中的行数
EN

Stack Overflow用户
提问于 2020-02-06 22:53:20
回答 1查看 16关注 0票数 0

在我的程序中,我不断地用从数据库表中获得的数据填充下面的数组,然后检查它以查找特定的单词:

代码语言:javascript
复制
01 PRODUCTS-TABLE.
     03 PRODUCT-LINE                 PIC X(40) OCCURS 50 TIMES.

有时它会发生6次,有时会超过6次。

我想在每次写入数据的时候找到数组中的行数,我该怎么做呢?

我试过了,但它是基于固定长度的:

代码语言:javascript
复制
 INSPECT-PROCESS.
     MOVE 0 TO TALLY-1.
     INSPECT PRODUCTS-TABLE TALLYING TALLY-1 FOR ALL "PRODUCT"
     IF TALLY-1 > 0
     MOVE SER-NUMBER TO HITS-SN-OUTPUT
     MOVE FILLER-SYM TO FILLER-O
     MOVE PRODUCT-LINE(1) TO HITS-PR-OUTPUT
     WRITE HITS-REC
     PERFORM WRITE-REPORT VARYING CNT1 FROM 2 BY 1 UNTIL CNT1 = 11.

 WRITE-REPORT.
     MOVE "   " TO HITS-SN-OUTPUT
     MOVE PRODUCT-LINE(CNT1) TO HITS-TX-OUTPUT
     WRITE HITS-REC.

在第一个输出行中,它写入SN和第一个产品线,然后在接下来的几行中,它写入所有剩余的产品线并空白输出SN。

例如: 12345678第一产品线第二产品线等等

它正在工作,但是,它只在CNT1为11时停止,我如何根据每次PRODUCTS表中的实际行数向过程提供变量CNT1?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-27 23:44:31

我通过添加一个数组行计数器( line - count -1)来计数(将1加到LINE-count-1),从而解决了这个问题。当“WRITE-count=LINE-count-1”时,我向数组中添加了多少次数据,并停止写入报告。

代码语言:javascript
复制
 INSPECT-PROCESS.                                                 
     MOVE 0 TO TALLY-1                       
     INSPECT PRODUCTS-TABLE TALLYING TALLY-1 FOR ALL "PRODUCT"       
     IF TALLY-1 > 0            
     MOVE HOLD-SER-NUM TO HITS-SN-OUTPUT                          
     MOVE FILLER-SYM TO FILLER-O                                  
     MOVE PRODUCT-LINE(1) TO HITS-PR-OUTPUT                         
     WRITE HITS-REC                                               
     PERFORM WRITE-REPORT VARYING WRITE-COUNTER FROM 2 BY 1       
     UNTIL WRITE-COUNTER = LINE-COUNTER-1.              
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60097749

复制
相关文章

相似问题

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