サイクル・プログラミング
システムがデータを処理する際、システムは特定の順序で処理を行わなけれ
ばなりません。 この論理順序は次のものによって与えられます。
- ILE RPG コンパイラー
- プログラム・コーディング
コンパイラーによって提供される論理は、プログラム・サイクルと呼ばれます。 ユーザーが、コンパイラーにプログラムの論理を提供させる時には、 サイクル・プログラミングと呼ばれます。
プログラム・サイクルとは、ファイル終了状態に達するまで、プログラムが 反復する一連のステップのことです。 コーディングした仕様書によって、プログラムでサイクル内の 各ステップを使用することもあればしないこともあります。
ファイルをサイクルで制御したい場合には、ソース・プログラム中の RPG 仕様書でコ ーディングした情報は、これらのファイルのレコードが読み取られる時に指定 する必要がありません。 ソース・プログラムのコンパイル時に、コンパイラーによって、これらの操作およ び出力操作の論理順序が設定されます。
ファイルをサイクルで制御させたくない場合には、その他の方法でプログラム
を終了する必要があります。最終レコード (LR) 標識をオンに設定すること
によってファイル終了状態を作成するか、戻り (RT) 標識をオンに設定する
ことによって戻り状態を作成するか、または RETURN 命令を使用して直接戻る
方法があります。
注: 制御仕様書に MAIN または NOMAIN が指定されている時には、サブプロシージャー用に
サイクル・コードは生成されません。
図 1 は、RPG プログラム・サイクルの一般的流れに特有のステップを示したものです。
図 1. RPG プログラムの論理サイクル

- 1
- RPG は、すべての見出し行および明細行 (出力仕様書の 17 桁目の H または D) を処理します。
- 2
- RPG は次のレコードを読み取り、レコード識別標識および制御レベル標識 をオンに設定します。
- 3
- RPG は合計演算 (制御レベル標識 L1 ~ L9、LR 標識あるいは L0 項目によって 条件付けされる) を処理します。
- 4
- RPG はすべての合計出力行 (出力仕様書の 17 桁目の T によって識別) を処理します。
- 5
- RPG は LR 標識がオンかどうかを判定します。 オンであれば、プログラムは終了します。
- 6
- 選択した入力レコードのフィールドがレコードから処理域に 移されます。 RPG はフィールド標識をオンに設定します。
- 7
- RPG はすべての明細演算 (演算仕様書の 7 ~ 8 桁目の制御レベル標識では条件付けされていない) を処理します。 RPG はサイクルの始めにあるレコードからのデータを使用します。
最初のサイクル
プログラム・サイクルを通過する場合、最初と最後はそれ以外のサイクルと多少異なります。
サイクルの最初で最初のレコードを読み取る前に、
プログラムは次の 3 つのことを実行します。
- 入力パラメーターの処理、ファイルのオープン、プログラム・データの初期設定
- 1P (1 ページ目) 標識で条件付けられたレコードの書き出し
- すべての見出しおよび明細出力命令の処理
例えば、最初のレコードを読み取る前に印刷される見出し行は、固定情報、 ページ見出し情報、または PAGE および *DATE などの特殊なフィールドから 構成されるようにすることができます。プログラムはまた、最初のサイクルでの合計演算および合計出力ステップをバ イパスします。
最後のサイクル
レコードがなくなるとプログラムは最後のサイクルに進み、LR (最終レコード) 標識 および L1 ~ L9 (制御レベル) 標識をオン に設定 します。 プログラムは、合計演算および合計出力を処理し、すべてのファイルをクローズ してから終了します。