此处以一个图书管理系统对于读者的管理为例,讲解SEARCH ALL语句在实际中的应用。对于读者数据而言,主要应包含读者的借书证号和读者的姓名这两项数据。假设表中只包含4名读者,则定义并初始化相应的索引表如下。
01 READERS-DATA.
05 FILLER PIC 9(4) VALUE 1002.
05 PIC X(10) VALUE ‘XIAO MING’.
05 PIC 9(4) VALUE 1005.
05 PIC X(10) VALUE ‘XIAO HONG’.
05 PIC 9(4) VALUE 1023.
05 PIC X(10) VALUE ‘XIAO GANG’.
05 PIC 9(4) VALUE 1036.
05 PIC X(10) VALUE ‘XIAO WANG’.
01 READERS-TABLE REDEFINES READERS-DATA.
05 READERS OCCURS 4 TIMES
INDEXED BY READER-NDX
ASCENDING KEY READER-CODE.
10 READER-CODE PIC 9(4).
10 READER-NAME PIC X(10).
假设这里要查找借书证号为“1023”的读者姓名。若找到,将该读者姓名存放在FOUND-NAME变量中,同时置FOUND-FLAG变量为“Y”。否则将FOUND-NAME置空,同时将FOUND-FLAG置为“N”。则使用SEARCH ALL语句进行查找的代码如下。
SEARCH ALL READERS-ENTRY
AT END
MOVE SPACES TO FOUND-NAME
MOVE ‘N’ TO FOUND-FLAG
WHEN READER-CODE (READER-NDX) = 1023
MOVE READER-NAME ( READER-NDX) TO FOUND-NAME
MOVE ‘Y’ TO FOUND-FLAG
END-SEARCH.
该段代码执行后的结果如下所示。
q FOUND-FLAG变量中保存为“Y”。
q FOUND-NAME变量中保存为“XIAO GANG”。
最后需要注意的是,由于SEARCH ALL语句是对整张表进行查找的,因此不必指定索引值。