在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-Table
AT END DISPLAY "Name not found."
WHEN Name-Value(I) = Search-Name
DISPLAY "Name found at index " I
EXIT.
在上面的示例中,我们定义了一个名为Names-Table
的有序表,并初始化了其中的数据项。然后,我们使用SEARCH语句来在Names-Table
中搜索名为"John"
的数据项。在搜索过程中,我们使用了一个条件WHEN Name-Value(I) = Search-Name
来指定搜索条件,当找到匹配的数据项时,显示相应的信息并退出搜索。
请注意,Name-Value(I)
中的I
是一个控制变量,用于在搜索过程中逐个检查每个数据项。在实际使用时,您需要根据具体情况来定义和使用相应的有序表和条件语句。