指標を用いた配列の検索

LOOKUP 検索条件を満たす要素を見付けるためには、配列中の特定の要素から検索 を開始してください。 このタイプの検索を実行するためには、指標を用いない配列の場合と同様に、演 算仕様書に指定をしてください。 しかし、演算項目 2 には、検索する配列の名前 と、その後に検索を開始する要素の番号が入った (小数点以下の桁数のない) 数 値フィールドを括弧で囲んで続けてください。 この数値定数または数値フィールドは、配列中の特定の要素を指し示すため 、指標と呼ばれます。 指標は、検索条件を満たした要素番号によって更新されたり、あるいは検索が正 常に実行されなかった場合には 0 に設定されます。

数値定数を指標として使用して、1 以外の要素から始まる検索条件を満たす 要素の存在をテストすることができます。

指標を用いない配列に適用されるこれ以外の規則は、すべて、指標を用いた配列 にも適用されます。

図 75 は、指標を用いた配列の LOOKUP を示しています。

図 75. 指標を用いた配列に対する LOOKUP 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
FARRFILE   IT   F   25            DISK
F*
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
DDPTNOS           S              5S 0 DIM(50) FROMFILE(ARRFILE)
DDPTDSC           S             20A   DIM(50) ALT(DPTNOS)
D*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
C* The Z-ADD operation begins the LOOKUP at the first element in DPTNOS.
C                   Z-ADD     1             X                 3 0
C* At the end of a successful LOOKUP, when an element has been found
C* that contains an entry equal to the search argument DPTNUM,
C* indicator 20 is set on and the MOVE operation places the department
C* description, corresponding to the department number, into DPTNAM.
C     DPTNUM        LOOKUP    DPTNOS(X)                              20
C* If an element is not found that is equal to the search argument,
C* element X of DPTDSC is moved to DPTNAM.
C                   IF        NOT *IN20
C                   MOVE      DPTDSC(X)     DPTNAM           20
C                   ENDIF

この例は、図 74 の場合と同じ部門番号の配列 DPTNOS を示し ています。 しかし、部門名称の交互配列 DPTDSC も定義されています。 DPTDSC の各要素の長さは 20 桁です。 ファイル中のデータでは配列全体を初期化するのに不十分な場合には、 DPTNOS の残りの要素にゼロが埋め込まれ、DPTDSC の残りの要素にはブランクが 埋め込まれます。