自由形式構文 | READPE{(ENHMR)} 検索引数|*KEY 名前 {データ構造} |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
READPE (E N) | 検索引数 | 名前 (ファイルまたはレコード様式) | データ構造 | _ | ER | BOF |
READPE 命令は、レコードのキーが検索引数と一致した場合に、全手順ファ イルから 1 つ前の順次レコードを検索します。レコードのキーが検索引数と一致しない場合には、BOF 条件が発生し、 レコードはプログラムに戻されません。BOF 条件 は、ファイルの先頭になった場合にも適用されます。
検索引数 (検索引数) は、検索するレコードを識別します。 検索引数 オペランドは、従来型の構文においては任意指定ですが、自由形式構文では必須です。 検索引数 は次のいずれかが可能です。
図形キーと UCS-2 キーは CCSID が同じでなければなりません。
名前 オペランドは、検索するファイルまたはレコード様式の名前でなければなりません。 レコード様式名を使用できるのは、外部記述ファイル (ファイル仕様の 22 桁目の E によって識別される) の場合だけです。
データ構造 オペランドが指定されている場合、レコードはデータ構造に直接読み込まれます。 名前 がプログラム記述ファイル (ファイル記述仕様書の 22 桁目の F によって識別される) を参照する場合、 データ構造は宣言されているファイルのレコード長と同じ長さの任意のデータ構造にすることができます。 名前 が外部記述ファイルまたは外部記述ファイルのレコード様式 を参照する場合、データ構造は EXTNAME(...:*INPUT) または LIKEREC(...:*INPUT) で定義されているデータ構造にする 必要があります。 データ構造の定義方法、およびファイルとデータ 構造の間でどのようにデータが転送されるかについては、ファイル命令を参照してください。
読み取るファイルが更新ディスク・ファイルの場合には、命令拡張 N を指 定して、読み取り時にレコードをロックする必要がないことを指示することがで きます。 詳細については、「WebSphere Development Studio: ILE RPG プログラマーの手引き」を参照してください。
READPE 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、ファイル例外/エラーを 参照してください。
BOF 条件が発生した場合、すなわち、検索引数と等しいキーを持つレコードが見付から ないか、またはファイルの先頭になった場合にオンに設定される標識 を 75 から 76 桁目に指定することができます。 この情報は %EOF 組み込み関数からも入手することができます。この関数 は、BOF 条件が発生した場合に '1' を戻します。それ以外の場合には '0' を戻します。
READPE 命令が正常に実行されなかった場合には、ファイルを (例えば、CHAIN、SETGT、 または SETLL 命令によって) 再度位置決めしなければなりません。 CHAIN (ファイルからのランダム検索)、SETGT (より大きい設定)、または SETLL (下限の設定)を参照してください。
ほとんどの場合、 RPG は、一致するレコードがあるかどうかの判別に一時的レ コード・ロックを取得する必要がないシステム・サポートを使用して READPE を実行できます。 ただし、RPG がこのサポートを使用できない場合があり、その場合は次のレコードを要求してから、READPE 要求でレコードの一致を判別する必要があります。
以下の理由により、RPG は、READPE 命令に対し次のレコードの一時的ロックを取得することを必要とします。
通常、指定されたキーとファイル内の実際のキーの比較は、データ管理機能により実行されます。 データ管理機能でこれを実行できない場合は、16 進数照合シーケンスを使用して比較が実行されます。 この場合、予想通りの結果が得られないことがあります。 詳しくは、WebSphere Development Studio: ILE RPG プログラマーの手引きのセクション『キー付きファイルの使用による予期しない結果』を参照してください。
OPEN 命令または BOF 条件の直後の READPE に検索引数 オペランドが指定された場合は BOF を戻します。 検索引数 が指定されていない、OPEN 命令または BOF 条件の直後の READPE は、エラー条件を招きます。73 桁目 と 74 桁目のエラー標識が指定されている場合、オンに設定されるか、 または %ERROR によって検査される 'E' 拡張が指定されている場合、オンに 設定されます。ファイルは、演算項目 1 がブランクの READPE 命令を出す前に、検索引数 が指定された CHAIN、SETLL、READ、READE、または READP を使用して再度位置決めされなければなりません。 READPE (検索引数 を指定しないで) を出す前に SETGT 命令コードを使用してファイルの位置決めを行うと該当レコードなしの状況になります。 そのような使い方はしないでください (SETGT が出された後では、現行レコードの前のレコードが現行レコードと同じキーを持つことはないからです)。 両方の命令コードに同じキーを使用して検索引数 を指定した場合は、このエラー状況は生じません。
ヌル値可能フィールドおよびキーを持つレコードの処理については、データベースのヌル値サポートを参照してください。
詳細については、ファイル命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... * * With Factor 1 Specified... * * The previous record is read and the key compared to FieldA. * Indicator 99 is set on if the record's key does not match * FieldA. C FieldA READPE FileA 99 * * The previous record is read from FileB and the key compared * to FieldB. The record is placed in data structure Ds1. If * the record key does not match FieldB, indicator 99 is set on. C FieldB READPE FileB Ds1 99 * * The previous record from record format RecA is read, and * the key compared to FieldC. Indicator 88 is set on if the * operation is not completed successfully, and 99 is set on if * the record key does not match FieldC. C FieldC READPE RecA 8899 * * With No Factor 1 Specified... * * The previous record in the access path is retrieved if its * key value equals the key value of the current record. * Indicator 99 is set on if the key values are not equal. C READPE FileA 99 * * The previous record is retrieved from FileB if its key value * matches the key value of the record at the current position * in the file. The record is placed in data structure Ds1. * Indicator 99 is set on if the key values are not equal. C READPE FileB Ds1 99 * * The previous record from record format RecA is retrieved if * its key value matches the key value of the current record in * the access path. Indicator 88 is set on if the operation is * not successful; 99 is set on if the key values are unequal. C READPE RecA 8899
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.