KLIST (複合キーの定義)

自由形式構文 (許可されていない - %KDS を使用)
コード 演算項目 1 演算項目 2 結果フィールド 標識
KLIST KLIST 名          

KLIST 命令は宣言命令で、KFLD のリストに名前を付けます。 このリストを 検索引数として使用すれば、複合キーを持つファイルからレコードを検索する ことができます。

KLIST は演算の中の任意の場所に指定することができます。 制御レベル項目 (7 から 8 桁目) はブランクにするか、 あるいは L1 から L9 標識、LR 標識、または L0 項目を入れてプログラムの該当する セクション内のステートメントをグループにまとめることができます。 条件付け標識の指定 (9 から 11 桁目) は使用できません。演算項目 1 には固有の名前を入れなければなりません。

KLIST 命令を指定する場合には、次のことに留意してください。
  • 検索引数が複数のフィールド (複合キー) から構成される場合には、複数 の KFLD を持つ KLIST を指定しなければなりません。
  • KLIST 名を検索引数として指定できるのは、外部記述ファイルの場合だけ です。
  • KLIST とそれに対応する KFLD フィールドは演算の中の任意の場所に入れ ることができます。
  • KLIST の直後には少なくとも 1 つの KFLD がなければなりません。
  • KLIST は、KFLD 以外の命令が見付かると終了します。
  • KLIST 名は、CHAIN、DELETE、READE、READPE、SETGT、または SETLL 命令 の演算項目 1 に入れることができます。
  • 同じ KLIST 名を複数のファイルに検索引数として使用するか、あるいは同 じファイルに検索引数として複数回使用することができます。
  • サイクル・メイン・プロシージャーの KLIST は、対応する大域の KFLD だけを持つことができます。 サブプロシージャーの KLIST は内部および大域の KFLD を持つことが できます。 詳細については、定義の有効範囲を参照してください。

詳細については、宣言命令を参照してください。

図 1. KLIST および KFLD 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
A*  DDS ソース・ステートメント
A          R RECORD
A            FLDA           4
A            SHIFT          1  0
A            FLDB          10
A            CLOCK#         5  0
A            FLDC          10
A            DEPT           4
A            FLDD           8
A          K DEPT
A          K SHIFT
A          K CLOCK#
A*
A*  DDS ソース・ステートメントの終わり
A*
A***********************************************************************
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 *
 *  KLIST 命令は、検索引数を指定できる名前 FILEKY
 *  を指示します。
 *
C     FILEKY        KLIST
C                   KFLD                    DEPT
C                   KFLD                    SHIFT
C                   KFLD                    CLOCK#

次の図に、検索引数がどのようなものであるかを示します。 フィールド DEPT、SHIFT、および CLOCK# はこのレコードのキー・フィールド です。

検索引数