- ILE RPG では、更新用にオープンされ、SHARE(*YES) で作成または
一時変更されたファイルからレコードを読み取った後、同じファイルを更新用に
オープンしている別のプログラムで、このロックされたレコードを更新することが
できます。
- プログラムが順次入力操作を実行し、ファイルの終わり状態になる場合、通常の操作とは、同じモジュール内の任意の後続の順次入力操作で、データベースへの物理的入力要求なしに即時にファイルの終わり状態になることです。
ただし、ファイルが共有される場合は、RPG ランタイムは常時物理的入力要求をデータベースに送信し、共用ファイルを使用してファイルが別のプログラムまたはモジュールへの呼び出しで位置変更されている場合に、入力操作は成功します。
- MOVE または SETON 命令を使用して MR 標識を変更することはできません
。(RPG III では MR に対して SETON を使用できないだけです。)
- ファイル仕様書のファイル・タイプ項目は、演算仕様書になければならな
い入出力命令のタイプをもはや指示しません。
例えば、RPG III では、更新ファイルとしてファイルを定義した場合には、
後からプログラムで UPDAT 命令を指定しなければなりません。 RPG IV では、これはもはや必要ではありません。 ただし、ファイル定義については、プログラムにある入出力命令と一貫性がな
ければなりません。 したがって、ソースに UPDATE 命令がある場合には、ファイルは更新ファイルと
して定義しなければなりません。
- ILE RPG では、ファイル仕様書に COMMIT キーワードが指定されていても、
レコードのブロック化が可能です。
- RPG IV では、更新用にオープンされたファイルが削除可能としてもオープン
されます。このファイルを削除可能にするために、DELETE 命令は不要です。
- RPG IV では、複数装置ファイルに使用される装置の数として実際の数を
コーディングする必要はありません。 ファイル仕様書に MAXDEV(*FILE) を指定した場合には、SAVEDS および
SAVEIND 用に作成される記憶域の数は、ユーザーのファイルが扱える装置の数
に基づいて決められます。 (RPG IV ファイル仕様書の SAVEDS、SAVEIND、および MAXDEV キーワードは
、RPG III ファイル仕様書の継続行の SAVDS、IND、および NUM オプションとそれぞれ対応
します。)
ILE RPG では、プログラムが獲得できるプログラム装置の合計数を、
装置ファイルで定義された装置の最大数と異なって指定することはできません。OPM RPG/400 では NUM オプションによってこれが可能でした。
- ILE RPG では、ACQ および REL 命令コードを単一装置ファイルに対し
て使用することができます。
- ILE RPG では、ブロック化された読み取りを実行する時、各入力命令ごと
に、INFDS のデータベース固有フィードバック・セクションにある
相対レコード番号およびキー・フィールドが更新されます。
- OPM RPG/400 で参照制約エラーが起こると、状況コードが "01299" (入出力エラー) に設定されます。
ILE RPG では、
起こった参照制約エラーのタイプに応じて、状況コードが
"01022"、"01222"、または "01299" に設定されます。
- 参照制約エラーのためにデータ管理がレコードを割り振ることができ
ない場合には、CPF502E 通知メッセージが出されます。 ILE RPG は
状況コードを "01222" に、OPM RPG/400 は
状況コードを "01299" に設定します。
エラー標識、'E' 拡張、または INFSR エラー処理サブルーチンがなければ
、ILE RPG は RNQ1222 照会メッセージを出し、OPM RPG/400 は RPG1299 照会メッセージを
出します。この 2 つのメッセージの主な違いは、RNQ1222 の場合には操作を再試行できる
ということです。
- データ管理に CPF503A、CPF502D、または CPF502F 通知メッセージを
出させるような参照制約エラーをデータ管理が検出した場合には
、ILE RPG は状況コードを "01022" に設定し、OPM RPG/400 用 は状況コード
を "01299" に設定します。
エラー標識、'E' 拡張、または INFSR エラー処理サブルーチンがなければ
、ILE RPG は RNQ1022 照会メッセージを出し、OPM RPG は RPG1299 照会メッセージを
出します。
- データ管理にエスケープ・メッセージを出させる参照制約エラーをデータ
管理が検出した場合には、そのすべては、OPM と ILE RPG の両方が状況コードを
"01299" に設定する原因となります。
- ILE RPG では、
INFDS のデータベース固有フィードバック・セクションは、入出力操作の
結果にかかわらず更新されます。 OPM RPG/400 では、このフィードバック・セクションは、
レコードが見付からない状態が検出されると更新されません。
- ILE RPG は、OPM RPG/400 と比べてデータ管理エラー処理に頼る点がよ
り多くあります。このことは、場合によっては、ユーザーが OPM RPG/400
プログラムではないが ILE RPG プログラムのジョブ・ログではある種の
エラー・メッセージが見つかるということを意味します。 エラー処理でユーザーの
目に止まると思われる相違点のいくつかを次に示します。
- 前の入力命令でロックされていないデータベース・ファイルのレコード
に対して UPDATE を実行すると、ILE RPG も OPM RPG/400 も状況コードを
"01211" に設定します。 ILE RPG は、データ管理が CPF501B 通知メッセージを出してそれをジョブ
・ログに入れた時にこの状況を検出します。
- WORKSTN ファイルを処理し、獲得または定義されていない装置に対して入出力を行おうとすると
、ILE と OPM RPG の両方とも状況を "01281" に設定します。 ILE RPG は、データ管理
が CPF5068 エスケープ・メッセージを出して、それをジョブ・ログに入れた時に、この状況を検出します。
- データベース・ファイルに対して READE、REDPE (ILE では READPE)、
SETLL を行う時、
またはレコード・アドレス・ファイルにより限界内順次処理を行う時には、OPM RPG/400 は *HEX 照合順序を
使用してキー比較を行います。ファイルに与えられたキーと 2 つ以上の検索引数が一致してしまう DDS 機能を使うと、
予想と異なる結果になることがあります。
例えば、ABSVAL を数字キーに使うと、ファイル
の中で 1 の値を持つキーに対して、-1 と 1 の両方の検索引数が一致してしまいます。16 進の
照合順序を使うと、-1 の検索引数は 1 の値を持つ実際のキーには
一致しません。
ILE RPG は、V3R1 より前の DDM ファイルの場合にのみ、*HEX 照合順序を使用して
キーの比較を行います。 詳細については、V3R1 より前の DDM ファイルの使用を参照してください。
- ILE RPG では、実行前の配列およびテーブルに対して指定する TO ファイルおよ
び FROM ファイルが異なっていても構いません。
OPM RPG では、両方のファイル名が同じでなければならず、
もし異なっている場合には、診断メッセージ QRG3038 が出されます。
- RAF 制御ファイルの変換が指定された時には、ILE RPG を使用した結果は、
変換テーブルによっては OPM RPG/400 と異なることがあります。 これは異なる操作順序によるものです。 OPM RPG/400 では、順序は、レコードの検索、変換、および比較であり、ILE RPG では、
順序は、レコードの変換、比較、および検索です。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.