READP (前のレコードの読み取り)

自由形式構文 READP{(EN) } 名前 {データ構造 }
コード 演算項目 1 演算項目 2 結果フィールド 標識
READP (E N)   名前 (ファイルまたはレコード様式) データ構造 _ ER BOF

READP 命令は、全手順ファイルから、前のレコードを読み取ります。

名前 オペランドは、読み取るファイルまたはレコード様式の名前でなければなりません。 レコード様式名を使用できるのは、外部記述ファイルの場合だけです。名前 にレコード様式名が指定されている場合には、検索されるレコードは、指定したタイプで前にある最初のレコードです。間にあるレコードは回避されます。

変更の始まりデータ構造 オペランドが指定されている場合、レコードはデータ構造に直接読み込まれます。 名前プログラム記述 ファイルを参照する場合、データ構造は、 宣言されたファイルのレコード長と同じ長さの任意のデータ構造にできます。 名前 が外部記述ファイルまたは外部記述ファイルのレコード様式を参照する場合、データ構造は EXTNAME(...:*INPUT or *ALL) または LIKEREC(...:*INPUT or *ALL) で定義されているデータ構造にする必要があります。 データ構造の定義方法、およびファイルとデータ 構造の間でどのようにデータが転送されるかについては、ファイル命令を参照してください。変更の終わり

READP 命令が正常に実行された場合には、ファイルは、その読み取りを満たす 前のレコードに位置付けられます。

読み取るファイルが更新ディスク・ファイルの場合には、命令拡張 N を指 定して、読み取り時にレコードをロックする必要がないことを指示することがで きます。 詳細については、Rational Development Studio for i ILE RPG プログラマーの手引き を参照してください。

READP 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、ファイル例外/エラーを 参照してください。

ファイルに前のレコードが存在しない (ファイルの始め状態) 場合にオンに設定 される標識を 75 から 76 桁目に指定することができます。 この情報は %EOF 組み込み関数からも入手することができます。この関数 は、BOF 条件が発生した場合に '1' を戻します。それ以外の場合には '0' を戻します。

レコード・ロック・エラー (状況コード 1218) が発生した場合、ロックされたレコードにファイルが置かれたままになり、そのレコードの読み取りが次の読み取り操作において再試行されます。 その他の何らかのエラーが発生するか、ファイルの先頭条件が存在する場合には、(CHAIN 命令、SETLL 命令、または SETGT 命令を使用して) ファイルの位置を変更する必要があります。

ヌル値可能フィールドを持つレコードの読み取りについて は、データベースのヌル値サポートを参照してください。

詳細については、ファイル命令を参照してください。

図 1 に、演算項目 2 にファイル名およびレコード様式 名を指定した READP 命令を示します。

図 1. READP 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 *
 *  The READP operation reads the prior record from FILEA.
 *
 *  The %EOF built-in function is set to return '1' if beginning
 *  of file is encountered.  When %EOF returns '1', the program
 *  branches to the label BOF specified in the GOTO operation.
C                   READP     FILEA
C                   IF        %EOF
C                   GOTO      BOF
C                   ENDIF
 *
 *  The READP operation reads the next prior record of the type
 *  REC1 from an externally described file.  (REC1 is a record
 *  format name.)  Indicator 72 is set on if beginning of file is
 *  encountered during processing of the READP operation.  真の場合に選択
 *  indicator 72 is set on, the program branches to the label BOF
 *  specified in the GOTO operation.
C                   READP     PREC1                                  72
C   72              GOTO      BOF
 *
C     BOF           TAG