COBOL の SEARCH ステートメントの使い方を教えてください

SEARCH命令は、COBOLでソートされたテーブル中の特定のデータ項目を検索するために使用されます。

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

ここで、

は検索するべき順序付き表であって、配列または索引付き表にできます。 は表の最後に到達したときに実行されるステートメントであって、合法なCOBOL ステートメントであることができます。条件、条件、…、条件は、検索条件を指定するための条件文です。各条件文には、その条件を満たした場合に実行すべき文を指定する対応するが続きます。実行時に、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”というデータ項目を検索しました。検索中に、Name-Value(I) = Search-Nameという条件を使用して検索条件を指定し、一致するデータ項目が見つかった場合は、該当する情報を表示して検索を終了します。なお、Name-Value(I)の”I”は、検索中にデータ項目を1つずつチェックするための制御変数です。実際の利用にあたっては、その都度、適宜の順序表や条件文を定義して使用してください。

bannerAds