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