在我的程序中,我不断地用从数据库表中获得的数据填充下面的数组,然后检查它以查找特定的单词:
01 PRODUCTS-TABLE.
03 PRODUCT-LINE PIC X(40) OCCURS 50 TIMES.有时它会发生6次,有时会超过6次。
我想在每次写入数据的时候找到数组中的行数,我该怎么做呢?
我试过了,但它是基于固定长度的:
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?
发布于 2020-02-27 23:44:31
我通过添加一个数组行计数器( line - count -1)来计数(将1加到LINE-count-1),从而解决了这个问题。当“WRITE-count=LINE-count-1”时,我向数组中添加了多少次数据,并停止写入报告。
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. https://stackoverflow.com/questions/60097749
复制相似问题