ファイル入出力の一時変更および指定変更

コンパイル時または実行時に、ファイル仕様書に指定されたパラメーターを 一時変更するかあるいはファイルを指定変更するためには、IBM® i コマンドを 使用することができます。 ファイル指定変更によって、(コンパイル時に) プログラムに指定された ファイルを置き換えるファイルを実行時に指定することができます。

図 1. ファイル入出力の一時変更 例
ファイル入出力の一時変更
例

上記の例では、CL コマンド OVRDBF (データベース・ファイル一時変更) によって、コンパイル時に指定された装置ファイルとはまったく異なる装置 ファイルを用いて、プログラムを実行することができます。

実行時にファイルを一時変更するためには、両方のファイルのレコード名が 間違いなく同じでなければなりません。 RPG プログラムは READ 命令などの入出力命令でレコード様式名を使用します が、その命令ではこのレコード様式名が必要なレコード・タイプを指定します。

変更の始まりOVRDBF コマンドを SHARE(*YES) とともに使用し、プログラムの 1 つが DATA(*NOCVT) を有効にしてファイルを定義する場合、そのファイルを開くすべてのプログラムが DATA(*NOCVT) を使用してファイルを定義する必要があります。 別のデータ変換オプションを使用してファイルを開くと、実行時に CPF417C が表示されることがあります。変更の終わり

すべてのファイル指定変更または一時変更が有効なわけではありません。 実行時 に、RPG プログラム内の仕様書が処理中のファイルに対して有効である かを確認するための検査が行われます。 IBM i システムでは、プログラムに装置の仕様書が入っていても、一部のファイル の指定変更を行うことができます。 例えば、RPG 装置名が PRINTER で、プログラムが接続している実際のファイ ルがプリンターでない場合には、IBM i システムは RPG の印刷スペースおよびスキップ仕様書を無視します。

IBM i システムが使用できずに、プログラムを終了することになる、その他の ファイル指定変更があります。例えば、RPG 装置名が WORKSTN で、プログラムで EXFMT 命令が指定された場合には、プログラムが接続している実際のファイルが表示装置ファイルまたは ICF ファイルでない場合に、プログラムは停止します。

ILE では、一時変更は活動化グループ・レベル、ジョブ・レベル、または呼び出 しレベルまで拡大されます。 活動化グループ・レベルまで拡大された一時変更は、削除または置き換えられ るか、あるいはその一時変更が指定されている活動化グループが終了するまで 有効となっています。 ジョブ・レベルまで拡大された一時変更は、削除または置き換えられ るか、あるいはその一時変更が指定されているジョブが終了するまで 有効となっています。 これは、一時変更が指定されている活動化グループに関係なく 適用されます。 呼び出しレベルまで拡大された一時変更は、削除または置き換えられるか、 あるいはその一時変更が指定されているプログラムまたはプロシージャーが終了するまで 有効となります。

共用ファイルのデフォルトの有効範囲は、活動化グループです。 ジョブ・レベルの有効範囲の場合には、一時変更コマンドに OVRSCOPE(*JOB) を指定してください。 呼び出しレベルの 有効範囲の場合には、一時変更コマンドに OVRSCOPE(*CALLLVL) を指定してください。

変更の始まり有効なファイル指定変更およびファイル一時変更についての詳細は、Web サイト http://www.ibm.com/systems/i/infocenter/IBM i Information Center の中の『データベースおよびファイル・システム』カテゴリーの『DB2® for i』の節を参照してください。変更の終わり

ILE 概念」にも、一時変更に関する情報、および活動化グループとジョブ・レベルの有効範囲に関する情報があります。