在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
是一個控制變量,用于在搜索過程中逐個檢查每個數據項。在實際使用時,您需要根據具體情況來定義和使用相應的有序表和條件語句。