Поиск в таблице (COBOL) - PullRequest
       5

Поиск в таблице (COBOL)

1 голос
/ 07 февраля 2011

Я пытался использовать стол впервые и столкнулся с небольшим препятствием.Я выяснил, как составить таблицу, но не могу понять, как искать в таблице или перемещать сохраненную информацию в другое поле.Вот таблица:

   01  SALESMAN-TABLE.
       05  TABLE-ENTRIES OCCURS 99 TIMES.
           10 SALESMAN-NUMBER              PIC 99    VALUE ZEROS.
           10 SALESMAN-NAME                PIC X(20) VALUE SPACES.
   01  SALESMAN-COUNT                      PIC 9(3)  VALUE ZEROS.

Это то, что я до сих пор пытался найти и искать данные:

   510-TABLE-SEARCH.
       SEARCH TABLE-ENTRIES
           WHEN SALESMAN-NUMBER (ROUTINE-CHECK) = ROUTINE-CHECK
               PERFORM 520-WRITE-FILE
           WHEN SALESMAN-NUMBER (ROUTINE-CHECK) = 0
               CONTINUE
       END-SEARCH.

И это то, что я использую для перемещения данных:

       SET DL-NAME-COLUMN TO SALESMAN-NAME

но он говорит, что DL-NAME-COLUMN должен быть числовым, даже если SALESMAN-NAME является буквенно-цифровым.Что я должен делать?Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Вы должны проиндексировать свою таблицу, используя что-то вроде:

05  TABLE-ENTRIES OCCURS 99 TIMES INDEXED BY IND-TABLE-ENTRIES.

Тогда вы можете использовать глагол ПОИСК:

510-TABLE-SEARCH.
   SEARCH TABLE-ENTRIES
       UNTIL SALESMAN-NUMBER (IND) = 0
       WHEN SALESMAN-NUMBER (IND) = ROUTINE-CHECK
           PERFORM 520-WRITE-FILE
   END-SEARCH.

Индексы таблиц всегда числовые, так как они используются в качестве указателей (они содержат адрес памяти). Глагол SET обычно используется для изменения табличных индексов.

0 голосов
/ 05 ноября 2015

Используйте

MOVE SALESMAN-NAME (IND)   TO DL-NAME-COLUMN

вместо

SET DL-NAME-COLUMN TO SALESMAN-NAME
...