有効な検索引数

ファイル名やレコード名を指定する ILE RPG 命令である CHAIN、DELETE、 READE、READPE、SETGT、および SETLL に、検索引数を指定することができます。

ファイル名に対する命令の場合、検索引数に指定できるフィールドの最大数は、 ファイルのキーとして有効なキー・フィールドの合計数です。例えば、ファイルのすべてのレコード・タイプに同じキー・フィールドが入 っていない場合には、キー・リスト (KLIST) を使用して、ファイルのすべての レコード・タイプに共通のフィールドの数だけからなる検索引数を指定するこ とができます。ファイルに 3 つのレコード・タイプがあり、キー・フィールドが次 のとおり定義されていたとします。

–  REC1 にはキー・フィールド A があります。
–  REC2 にはキー・フィールド A および B があります。
–  REC3 にはキー・フィールド A、B、および C があります。

すべてのレコード・タイプに共通のキー・フィールドはフィールド A のみで あるため、検索引数はフィールド A と同じ属性だけをもつ単一フィールドとしかなれません。

注: ヌル可能キー・フィールドは、ALWNULL(*YES) または ALWNULL(*INPUTONLY) と共に使用できません。

レコード名に対する命令の場合には、検索引数に指定できるフィールドの 最大数は、そのレコード・タイプのキーとして有効なキー・フィールドの 合計数と同じです。

検索引数が 1 つ以上のフィールドから成り立つ場合は、 表意定数 KLIST、および自由形式演算では式のリスト (小括弧で囲む) または %KDS を指定することができます。 単一のフィールドからなる検索引数の場合には、上記に加えて、リテラルまたは変数名も指定できます。

ヌル値キーを処理するには、以下のいずれかを行います。
  • KLIST を使用して検索引数をコーディングします。この場合、KFLD 命 令コードの演算項目 2 にヌル標識を指定できます。
  • ヌル可能フィールドを検索引数としてリスト内に (括弧で囲んで) コーディングします。
  • ヌル可能フィールドを %KDS で指定されたデータ構造内にコーディングします。
後の 2 つのケースでは、検索引数に対する %NULLIND() の現在の値が検索に使用されます。

検索引数の各フィールドの属性は、 ファイルまたはレコード・キー内の対応するフィールドの属性と同じでなければなりません。 属性には長さ、データ・タイプ、および小数部分の桁数があります。 属性は、コンパイラー・リストのキー・フィールド情報データ・テーブルに リストされます。キー・フィールド情報の例を参照してください。自由形式演算 の入出力操作で使用されるリストまたは %KDS の検索引数で必要になるのは、型の一致のみです。 長さおよび形式は、ファイル内で定義されているキーと異なっても構いません。

これらすべてのファイル命令 (CHAIN、DELETE、READE、READPE、SETGT、およ び SETLL) の中では、ファイルまたはレコードに有効なフィールドの合計数より も少ないフィールドで検索引数を指定することもできます。 このような 検索引数は部分キーと呼びます。