在COBOL中,SEARCH语句用于在一个有序表中查找特定的数据项。
SEARCH语句的一般语法如下:
SEARCH <table> AT END <end-statement>WHEN <condition-1><perform-statement-1>WHEN <condition-2><perform-statement-2>...WHEN <condition-n><perform-statement-n>END-SEARCH其中,<table>是需要查找的有序表,可以是一个数组或一个带有索引的表。<end-statement>是当查找到达表尾时执行的语句,可以是任意合法的COBOL语句。
<condition-1>, <condition-2>, …, <condition-n>是用来指定搜索条件的条件语句。每个条件语句后面都跟着一个相应的<perform-statement>,用于指定在满足该条件时需要执行的语句。在执行时,SEARCH语句会按照条件的顺序依次检查每个条件,直到找到匹配的条件为止。
以下是一个使用SEARCH语句的示例:
01 Names-Table.05 Name OCCURS 10 TIMES.10 Name-Value PIC X(20).01 Search-Name PIC X(20).PROCEDURE DIVISION.PERFORM INITIALIZATION.PERFORM SEARCH-NAME.INITIALIZATION.MOVE "John" TO Name-Value(1)MOVE "Mary" TO Name-Value(2)MOVE "David" TO Name-Value(3)...MOVE "Alice" TO Name-Value(10).SEARCH-NAME.MOVE "John" TO Search-Name.SEARCH Names-TableAT END DISPLAY "Name not found."WHEN Name-Value(I) = Search-NameDISPLAY "Name found at index " IEXIT.在上面的示例中,我们定义了一个名为Names-Table的有序表,并初始化了其中的数据项。然后,我们使用SEARCH语句来在Names-Table中搜索名为"John"的数据项。在搜索过程中,我们使用了一个条件WHEN Name-Value(I) = Search-Name来指定搜索条件,当找到匹配的数据项时,显示相应的信息并退出搜索。
请注意,Name-Value(I)中的I是一个控制变量,用于在搜索过程中逐个检查每个数据项。在实际使用时,您需要根据具体情况来定义和使用相应的有序表和条件语句。