SEARCH 文

SEARCH 文には 2 つのタイプがあります。

1 つ目のタイプである逐次表引きは、関連付けられた指標の設定によって決定される要素から始まります。表全体を検索するには、指標を 1 に設定する必要があります。

もう 1 つのタイプは二分表引きです。このタイプでは、関連付けられた指標の初期設定は無視され、表全体が検索されます。

いずれの形式でも次のようになります。

以下の両方の SEARCH 文の例で次のデータ記述を使用します。二分表引きでは OCCURS 句に KEY 指定を含める必要がありますが、逐次表引きでは必要ありません (指定してもかまいません)。

 working-storage section.
 01 states.
   03 state-abbr pic x(2) occurs 50 ascending key state-abbr indexed by i. 
 01 state-code pic x(2). 

2 つのコーディング例は同等です。これらは、逐次表引きと二分表引きの違いを示しています。どちらの例でも、ユーザーが入力した 2 文字の州の省略形について、それらが表にリストされた有効な省略形と一致するかどうかを SEARCH 文を使用して判定します。省略形が無効な場合は、もう一度入力する必要があります。検証の後に追加の処理が必要な場合のために、有効な州の省略形を処理する位置に CONTINUE 文が記述されています。

逐次表引き

 enter-state. 
     accept state-code
     set i to 1
     search state-abbr
      at end display "invalid state code, please reenter" 
         go to enter-state
      when state-code = state-abbr (i)
         continue
     end-search
     stop run.

二分表引き

 enter-state. 
     accept state-code
     search all state-abbr
      at end display "invalid state code, please reenter" 
             go to enter-state
      when state-code = state-abbr (i)
         continue
     end-search
     stop run.

これらの 2 つの SEARCH 文の例の異なる点は次のとおりです。