COBOL85:如何动态查找数组中的行数
COBOL85: How to find number of rows in an array dynamically
在我的程序中,我一直用从数据库中获得的数据填充以下数组 table 然后检查它以找到某些单词:
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-TABLE 中实际有多少行为过程提供一个变量 CNT1?
我通过添加一个数组行计数器 (LINE-COUNTER-1) 来计算 (ADD 1 TO LINE-COUNTER-1) 向数组添加数据并在 "WRITE-COUNTER = LINE-COUNTER-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.
在我的程序中,我一直用从数据库中获得的数据填充以下数组 table 然后检查它以找到某些单词:
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-TABLE 中实际有多少行为过程提供一个变量 CNT1?
我通过添加一个数组行计数器 (LINE-COUNTER-1) 来计算 (ADD 1 TO LINE-COUNTER-1) 向数组添加数据并在 "WRITE-COUNTER = LINE-COUNTER-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.