# SEARCH文

説明書の該当箇所: 6.5.24 SEARCH文

  SEARCH文.cob    Standard 版

表(OCCURS で定義した繰り返し項目)から、条件に合う要素を探します。
文房具5件(NOTEBOOK / PENCIL / ERASER / RULER / CUTTER)の名前と単価を
表に持ち、名前で引いて単価を取り出す形です。

正しく動くと OK だけが並びます。

# 前提となる書き方

SEARCH文 で使う表には、指標名(INDEXED BY)を付けておきます。

  01 REDEFINES GOODS-DATA.
     02 GOODS OCCURS 5 TIMES INDEXED BY IX IY IZ.
        03 NAME   PIC X(10).
        03 PRICE  PIC 9(4).

  ・VALUE で並べたデータを REDEFINES で表として見せています
  ・指標名は1つの表に複数付けられます(ここでは IX IY IZ)
  ・指標は添字とは別のもので、SET文 で動かします

# 書き方1(順次探索)

  SET IX TO 1.
  SEARCH GOODS
     WHEN NAME(IX) = GET-GOODS
        MOVE PRICE(IX) TO TOTAL
  END-SEARCH.

  ・探し始める位置は、あらかじめ SET しておきます
  ・見つかった時点で終わり、そのときの位置が指標に残ります
    そのため、続けて SEARCH を書くと続きから探せます
  ・見つからなかったときの処理は AT END に書きます

サンプルでは "ERASER" を探したあと IX が 3 になっていることを
IF文 で確かめています。表の3番目が ERASER だからです。
見つかった位置が指標に残る、という点がこの文の要です。

# ソースの読み方

節ごとに、意図を枠のコメントで書いてあります。
表の中身も画面に一覧表示されるので、探した結果と見比べられます。
