部分キーの参照

部分キーを指定する場合は、 KFLD 指定の数が少ない KLIST を使用することができます。 自由形式演算では、キーの数を示す 2 つ目のパラメーターがある %KDS、 または必要なキーをすべて持つ式のリストも使用できます。 例えば、ファイルにキーが 3 つあるのに、そのうちの 2 つしか指定する必要がない場合は、 次のいずれの方法でも部分キーを指定することができます。
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++ 
D keys            DS                  LIKEREC(rec : *KEY)
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
C     klist2        KLIST
C                   KFLD                    k1
C                   KFLD                    k2
 /free
        CHAIN klist2 rec;                // KLIST with two KFLD entries
        CHAIN %KDS(keys : 2) rec;        // %KDS with two keys
        CHAIN (name : %char(id_no)) rec; // a list of two expressions
部分キーを参照する検索引数の指定規則は次のとおりです。
  • 検索引数は、ファイルまたはレコードのキーの左端 (高位) のフィールドに 対応するフィールドから構成されます。
  • 部分キーを参照する検索引数のキー・リストから 省略できるのは右端のフィールドのみです。 例えば、ファイルまたはレコードの合計キーが キー・フィールド A、B、および C から構成されている場合には、部分キーを参照する有効な 検索引数はフィールド A、およびフィールド A と B になります。
  • 検索引数内の各フィールドは、ファイルまたはレコード内の対応する キー・フィールドと属性が同じでなければなりません。 自由形式演算 の入出力操作で使用されるリストまたは %KDS の検索引数で必要になるのは、型の一致のみです。 長さおよび形式は、ファイル内で定義されているキーと異なっても構いません。属性には長さ、データ型、小数部分の桁数、および形式 (例えば、パックまたはゾーン) があります。
  • 検索引数でキー・フィールドの一部分を参照することはできません。

検索引数で部分キーを参照した場合には、ファイルは検索引数を満たす最初 のレコードに位置付けられるか、あるいは検索引数を満たす最初のレコードが 検索されるレコードです。 例えば、SETGT および SETLL 命令では、その命令および検索引数を満たす アクセス・パス上の最初のレコードにファイルが位置付けられます。 CHAIN 命令では、検索引数を満たすアクセス・パス上の最初のレコードが検索 されます。DELETE 命令では、検索引数を満たすアクセス・パス上の最初のレコードが削除 されます。 READE 命令では、アクセス・パス上のそのレコード (指定したタイプの レコード) のキーの一部が検索引数を満たす場合に、その次のレコードが検索 されます。 READPE 命令では、アクセス・パス上のそのレコード (指定したタイプの レコード) のキーの一部が検索引数を満たす場合に、その前のレコードが検索 されます。 上の命令コードの詳細については、「IBM® Rational® Development Studio for i: ILE RPG 解説書」を参照してください。