RPG IV 初期化サブルーチンの詳細については、図 6 を 参照してください。
初期化サブルーチンによって、1P 出力の前に演算仕様書を処理することができます。 プログラムの初期化時に実行される特定のサブルーチンは、そのサブルーチン の BEGSR 命令の演算項目 1 に *INZSR を指定することによって定義することがで きます。 初期化サブルーチンとして定義できるのは、1 つのサブルーチンだけ です。 それは、プログラム・サイクルのプログラム初期化ステップの終了時に 呼び出されます (すなわち、データ構造およびサブフィールドが初期化され、 外部標識およびユーザー・データ・フィールドが検索され、ファイルがオープン され、データ域データ構造、配列、およびテーブルがロードされ、*ENTRY PLIST の PARM の結果のフィールドが演算項目 1 へ転送された後になります)。 *INZSR をファイル/プログラム・エラー/例外サブルーチンとして指定すること はできません。
プログラムが LR をオフにして終了した場合には、サブルーチンはプログラムの 初期化ステップの一部なので、初期化サブルーチンはそのプログラムの次の 呼び出し時には自動的に実行されません。 しかし、LR をオフにしたプログラムから出口が 作成される前に初期化サブルー チンが完了していない場合には、そのプログラムの次の呼び出し時に初期化サブ ルーチンが再実行されます。
初期化サブルーチンは、プログラムの初期化時に呼び出される点を除き、プ ログラム内の他のサブルーチンと類似のものです。 これは、EXSR または CASxx 命令によって呼び出したり、このサブルーチンから他のサブルーチンまたは他の プログラムを呼び出すことができます。 サブルーチン内で有効な命令は、RESET 命令を 除いて、初期化サブルーチン内 でもすべて有効です。 RESET 命令が例外であるのは、変数のリセットに使用され る値が、初期化サブルーチンが実行された後でなければ定義されないためです。
初期化サブルーチンの実行中に変数を変更すると、後続の RESET 命令でその変 数が設定される値に影響します。 レコード様式内のフィールドのデフォルトの値 については、たとえば、それを初期化サブルーチンに設定しておき、そのデフォルトの 値を使用するたびにレコード様式に対して RESET を使用することによって、定義 することができます。 初期化サブルーチンでは、また、1P 出力の現在の時刻な どの情報を検索することができます。
サブプロシージャーと関連した *INZSR はありません。 サブプロシージャーがモジュール 内で最初に呼び出されるプロシージャーであっ た場合には、他のグローバル・データの初期化は実行されても、メインプロシージ ャーの *INZSR は実行されません。 メイン・プロシージャーの *INZSR は、そのメイン・プロシージャーが呼び出され た時に実行されます。
図 7 は、RPG IV 突き合わせフィールド・ルーチンの特定の ステップを示しています。 以下の説明の項目番号は、図の中の番号を示しています。
図 7 は、RPG IV オーバーフロー・ルーチンの特定のス テップを示しています。 以下の説明の項目番号は、図の中の番号を示しています。
フェッチ・オーバーフロー・ルーチンによって、ミシン線上への印刷を防止し、 ページをできるだけ有効に使用できるように、基本 RPG IV オーバーフローの 論理を変更することができます。 通常のプログラム・サイクル中は、オーバーフロー標識がオンになっているかどう かを確認するために、合計出力の直後に RPG IV プログラムによって一度だけ 検査が行われます。 フェッチ・オーバーフロー機能を指定した場合には、フェッチ・オーバーフロー が指定されている各行ごとに RPG IV プログラムによるオーバーフローの検査 が行われます。
フェッチ・オーバーフローは、出力仕様書で PRINTER ファイルに関する任意 の明細行、合計行、または例外行の 18 桁目に F を記入して指定し ます。フェッチ・オーバーフロー・ルーチンによって、次のページへ用紙が進められる ことは自動的になくなります。
出力時には、出力行の条件付け標識がテストされ、その行が書き出されるかど うかが判別されます。 それが書き出される行で、しかも 18 桁目に F が指定されて いる場合には、オーバーフロー標識がオンになっているかどうかが RPG IV プロ グラムによってテストされ判別されます。 オーバーフロー標識がオンになってい る場合には、オーバーフロー・ルーチンが取り出され (ページ送りされ)、以下 の操作が行われます。
OR 関係の各レコードでオーバーフロー・ルーチンを使用する場合には、各 OR 行の 18 桁目に F が入っていなければなりません。 同じ仕様行の 21 から 29 桁目 にオーバーフロー標識が指定されている場合には、フェッチ・オーバーフローを 使用することはできません。 これを使用した場合には、オーバーフロー・ルーチ ンは取り出されません。
オーバーフロー標識によって条件付けされた残りの明細行、合計行、例外行、 および見出し行を印刷するのに十分なスペースがページ上に残されていない場合 には、フェッチ・オーバーフロー・ルーチンを使用してください。 オーバーフロ ー・ルーチンの取り出し時期を決定するためには、考えられるオーバーフローのす べての状況を検討してください。 行およびスペースをカウントすることによって、 各明細行、合計行、および例外 行でオーバーフローが起こるとどうなるかを推測することができます。
図 7 は、RPG IV 先読みルーチンの特定のステップを 示しています。 以下の説明の項目番号は、図の中の番号を示しています。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.