サイクル・プログラミング

システムがデータを処理する際、システムは特定の順序で処理を行わなけれ ばなりません。 この論理順序は次のものによって与えられます。

コンパイラーによって提供される論理は、プログラム・サイクルと呼ばれます。 ユーザーが、コンパイラーにプログラムの論理を提供させる時には、 サイクル・プログラミングと呼ばれます。

プログラム・サイクルとは、ファイル終了状態に達するまで、プログラムが 反復する一連のステップのことです。 コーディングした仕様書によって、プログラムでサイクル内の 各ステップを使用することもあればしないこともあります。

ファイルをサイクルで制御したい場合には、ソース・プログラム中の RPG 仕様書でコ ーディングした情報は、これらのファイルのレコードが読み取られる時に指定 する必要がありません。 ソース・プログラムのコンパイル時に、コンパイラーによって、これらの操作およ び出力操作の論理順序が設定されます。

ファイルをサイクルで制御させたくない場合には、その他の方法でプログラム を終了する必要があります。最終レコード (LR) 標識をオンに設定すること によってファイル終了状態を作成するか、戻り (RT) 標識をオンに設定する ことによって戻り状態を作成するか、または RETURN 命令を使用して直接戻る 方法があります。

注:
制御仕様書に 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 つのことを実行します。

例えば、最初のレコードを読み取る前に印刷される見出し行は、固定情報、 ページ見出し情報、または PAGE および *DATE などの特殊なフィールドから 構成されるようにすることができます。プログラムはまた、最初のサイクルでの合計演算および合計出力ステップをバ イパスします。

最後のサイクル

レコードがなくなるとプログラムは最後のサイクルに進み、LR (最終レコード) 標識 および L1 〜 L9 (制御レベル) 標識をオン に設定 します。 プログラムは、合計演算および合計出力を処理し、すべてのファイルをクローズ してから終了します。