残りの明細、合計、例外、およびオーバーフロー標識によって条件付けられた 見出し行を印刷するために十分なスペースがページ上に残っていない場合には 、フェッチ・オーバーフロー・ルーチンを呼び出すことができます。 このルーチンがオーバーフローを起こします。 オーバーフロー・ルーチンをいつ取り出すかを決めるために、考えられるオーバーフローのすべての状況を 研究してください。 行およびスペースを数えることによって、各明細行、合計行、および例外行で オーバーフローが起こるとどうなるか予測することができます。
フェッチ・オーバーフロー・ルーチンを使用すると、基本 ILE RPG オーバーフロー論理を変更して、ミシン線を超えて印刷が行われるのを防ぎ、ページを可能な限り無駄なく使用することができます。 通常のプログラム・サイクルでは、オーバーフロー標識がオンになっているか、合計出力の直後に コンパイラーによって 1 回だけ検査されます。 フェッチ・オーバーフロー機能を指定した場合には、 フェッチ・オーバーフローが指定されている各行ごとに、コンパイラーによって オーバーフローが検査されます。
図 180 は、フェッチ・オーバーフロー・ルーチンがオンに設定された場合とオフに設定された場合のオーバーフロー印刷の通常の処理を 示したものです。
フェッチ・オーバーフローは、PRINTER ファイルの詳細行、合計行、または例外行のどの出力仕様書にしても、18 桁目 に F を指定します。フェッチ・オーバーフロー・ルーチンは、用紙を自動的に次のページへ 進めることはしません。
出力中、出力行の条件標識は、その行が書き出されるべきものかどうかを判別するかめに テストされます。その行が書き出されるべきもので 18 桁目に F が指定されていると、 コンパイラーはオーバーフロー標識がオンかどうかを判別するために テストします。オーバーフロー標識がオンのときは、オーバーフロー・ルーチンが 取り出され、以下の処理がなされます。
各 OR 行の 18 桁目は、オーバーフロー・ルーチンが OR 関係で各レコードに使われるものである 場合は、F でなければなりません。フェッチ・オーバーフローは、オーバーフロー標識が 同じ仕様書行の 21 から 29 桁目で指定されていると使われることはありま せん。その場合は、オーバーフロー・ルーチンは取り出され ません。
図 181 は、フェッチ・オーバーフローの使い方を示します。
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... * OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+............................. OPRINTER H OA 3 05 O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat++ O 15 'EMPLOYEE TOTAL' O TF L1 1 O EMPLTOT 25 O T L1 1 O EMPLTOT 35 O T L1 1 O EMPLTOT 45 O TF L1 1 O EMPLTOT 55 O T L1 1 O EMPLTOT 65 O T L1 1 O EMPLTOT 75 O T L1 1 O*
18 桁目に F がコーディングされている合計行はオーバーフロー・ルーチン を取り出すことができます。 これらの行の印刷の前にオーバーフローが検知された場合にのみ、これを実行 します。 フェッチ・オーバーフローが処理される前に、オーバーフロー標識がオンになっているかどうかを判別する ための検査が行われます。 オンになっている場合には、オーバーフロー・ルーチンが取り出され、 オーバーフロー標識によって条件付けられた見出し行が印刷されて、合計演算が 処理されます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.