ファイル処理のプログラム制御

プログラムの入力のすべてまたは一部を制御するためには、全手順ファイル ( ファイル仕様書の 18 桁目に F) を指定してください。 全手順ファイルでは、 入力 がプログラム指定の演算命令 (たとえば、READ、CHAIN) によっ て制御されることを指示します。 全手順ファイルと 1 次ファイル (フ ァイル仕様書の 18 桁目に P) の両方がプログラムに指定されている場合に は、入力の一部はプログラムによって制御され、その他の入力はサイクルによっ て制御されます。 プログラム・サイクルは全手順ファイルが指定されている時に存在しますが、フ ァイル処理は、全手順ファイルの明細または合計の演算時に行われます。

ファイル命令コードを入力のプログラム制御に使用することができます。 これらの ファイル命令コードは、ファイル命令で説明されています。

図 8. プログラム・サイクル内の入力操作のプログラマー制御
REQTEXT
図 9. RPG IV 例外/エラー処理の詳細な流れ ルーチン
REQTEXT

RPG IV 例外/エラー処理ルーチン

図 9 は、RPG IV 例外/エラー処理ルーチンの特定のス テップを示しています。 以下の説明の項目番号は、図の中の 番号を示しています。

 1 
ファイル情報データ構造またはプロシージャー状況データ構造が指定された 場合には、それが状況情報によってセットアップされます。
 2 
例外/エラーが 73 から 74 桁目に標識の指定がある命令コードで起こった場合 には、標識がオンに設定され、演算の次の順序の命令に制御が戻されます。
 3 
該当する例外/エラー処理サブルーチン (INFSR または *PSSR) がプロシージ ャーに存在する場合には、プロシージャーはステップ 13 に分岐し、そうでない 場合には、プロシージャーはステップ 4 から続行されます。
 4 
状況コードが 1121 から 1126 の場合には (ファイル状況コードを参照)、 演算の現在の命令に制御が戻されます。 そうでない場合には、プロシージャーはステップ 5 から続行されます。
 5 
例外が機能チェックである場合には、プロシージャーはステップ 6 から続行 されます。そうでない場合には、ステップ 15 に分岐します。
 6 
照会メッセージが要求元端末に出されます。 対話式ジョブの場合には、メッ セージは要求元に送られます。 バッチ・ジョブの場合には、 メッセージは QSYSOPR に送られます。 QSYSOPR が中断モードでなければ、デフォルトの応答が出さ れます。
 7 
ユーザーの応答がプロシージャーを取り消すためのものである場合には、 プロシージャーはステップ 8 から続行されます。 そうでない場合には、プロシージャーは 続行されます。
 8 
ユーザーの応答がダンプをとってプロシージャーを取り消すためのものであ る場合には、プロシージャーはステップ 9 から続行されます。 そうでない場合 には、プロシージャーはステップ 10 に分岐します。
 9 
ダンプが出力されます。
 10 
すべてのファイルがクローズされ、データ域はアンロックされます。
 11 
プロシージャーは再び呼び出せるように設定されます。
 12 
戻りコードが設定され、機能チェックがパーコレートされます。
 13 
制御が例外/エラー処理サブルーチン (INFSR または *PSSR) に渡されます。
 14 
例外/エラー処理サブルーチンの ENDSR 命令の演算項目 2 に戻り点が指定され ている場合には、プロシージャーは指定された戻り点に進みます。 戻り点が指定 されていない場合には、プロシージャーはステップ 4 に進みます。 ENDSR 命令の 演算項目 2 にフィールド名が指定されていて、その内容が RPG IV 定義の戻り 点 (*GETIN または *DETC など) の 1 つではない場合には、プロシージャーはス テップ 6 に進みます。 エラーは示されず、元のエラーは演算項目 2 の指定がブラ ンクであるかのように処理されます。
 15 
呼び出しで例外が処理されない場合には、 機能チェックへプロモートされ、プロシージャーはステップ 5 に分岐します。 そうでない場合には、処理プログラムによってとられた処置に応じて、 ステップ 10 でか、または例外が起こった点の後の次の機械命令のいずれかで このプロシージャーにおける制御が再開されます。