精通cobol--9.14.2 SEARCH ALL语句的实际应用

  此处以一个图书管理系统对于读者的管理为例,讲解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 语句是对整张表进行查找的,因此不必指定索引值。

你可能感兴趣的:(精通cobol--9.14.2 SEARCH ALL语句的实际应用)