В моей программе я продолжаю заполнять следующий массив данными, полученными из таблицы базы данных, затем проверяю его, чтобы найти определенные слова:
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 first product-line Второй product-line et c
Он работает, однако останавливается, только когда CNT1 равен 11, как я могу заполнить процедуру переменной CNT1, основываясь на том, сколько строк на самом деле находится в PRODUCTS- ТАБЛИЦА каждый раз?