搜索表(COBOL)
我第一次尝试使用桌子时遇到了一个小问题。我已经知道了如何创建一个表,但我不知道如何搜索该表或将存储的信息移动到另一个字段。这是表格:搜索表(COBOL),cobol,Cobol,我第一次尝试使用桌子时遇到了一个小问题。我已经知道了如何创建一个表,但我不知道如何搜索该表或将存储的信息移动到另一个字段。这是表格: 01 SALESMAN-TABLE. 05 TABLE-ENTRIES OCCURS 99 TIMES. 10 SALESMAN-NUMBER PIC 99 VALUE ZEROS. 10 SALESMAN-NAME PIC X(20)
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应该是数字的,即使销售人员的姓名是字母数字的。我该怎么办?任何帮助都将不胜感激。您应该使用以下内容为表格编制索引:
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动词通常用于修改表索引。使用
MOVE SALESMAN-NAME (IND) TO DL-NAME-COLUMN
而不是
SET DL-NAME-COLUMN TO SALESMAN-NAME
检查进一步的读数。