搜索表(COBOL)

时间:2011-02-06 21:46:16

标签: cobol

我第一次尝试使用桌子而且我遇到了一个小问题。我已经弄清楚如何制作一个表,但我无法弄清楚如何搜索表或将存储的信息移动到另一个字段。这是表格:

   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

但它表示即使SALESMAN-NAME是字母数字,DL-NAME-COLUMN也应该是数字。我该怎么办?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您应该使用以下内容对表进行索引:

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

然后你可以使用SEARCH动词:

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

表索引始终是数字,因为它们用作指针(它们包含内存地址)。 SET动词通常用于修改表索引。

答案 1 :(得分:0)

使用

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

而不是

SET DL-NAME-COLUMN TO SALESMAN-NAME