レコードデータが矩形項目内に収まらない場合に、以下のどの動作を行うかを矩形項目のプロパティで指定することができます。
指定なし
項目の範囲に収まるデータのみ出力します。
文字ピッチなどを縮小して出力
行の高さや文字間隔を詰めたり、フォントを小さくして全データを出力します。
縦幅を拡張して出力
項目の縦幅を拡張して全データを出力します。パーティションの下端まで拡張しても全データを出力できない場合、パーティションを拡張して出力するかどうかをパーティションのプロパティで指定可能です。パーティションが拡張できない場合、パーティションの下端まで項目の縦幅を拡張して出力可能なデータを出力します。
縦幅の拡張および文字ピッチなどの縮小
項目の縦幅を拡張しても全データを出力できない場合、拡張後の縦幅に全データを出力できるように文字ピッチなどを縮小して出力します。
定義された矩形項目のサイズに全データが収まるように文字間隔や行の高さ、文字サイズを自動調整する機能です。以下に述べる1.~4.のいずれかの方法で調整を行います。
文字ピッチを文字サイズと同じ幅になるまで縮小する。
文字ピッチが文字サイズより大きい場合に、文字ピッチを文字サイズと同じ幅になるまでに縮小し、全データを出力できるならば文字ピッチを詰めて出力します。
行の高さを縮小する。
行の高さが文字サイズより大きい場合に、行の高さを調整することで全データを出力できるならば行を詰めて出力します。最小の大きさは文字サイズです。行の高さを文字サイズ未満にすることはありません。
行の高さ、文字ピッチを文字サイズと同じ大きさまで縮小する。
1.と2.の両方の縮小を行います。
文字サイズを小さくする。
1.~3.のいずれでも全データを出力できない場合、文字サイズを小さくして出力します。その際の文字ピッチ、行の高さは小さくした文字サイズと同じです。文字サイズの縮小は3ポまで行われます。3ポでも全データを出力できない場合は出力可能なデータだけを3ポで出力します。
注意
縮小処理は文字データを均等に配置する機能ではないため、特にデータの文字数が多い場合など、各種縮小を行うことで矩形項目の上の方に詰まって出力される場合もあります。
行の高さや文字ピッチ、文字サイズを変更することなく、項目やパーティションの縦サイズを拡張してデータをすべて出力する機能です。
項目のみ拡張する場合
以下のような場合、パーティションを拡張することなく項目の縦幅を拡張して出力されます。項目の縦幅は矩形項目のプロパティで指定する「行の高さ」単位で拡張されます。
出力するデータがパーティションの下端までの範囲に収まる場合
パーティションの拡張が許可されていない場合
パーティションの拡張が許可されていない場合の例を図に示します。
この場合、パーティション下端までに収まるだけの文字を出力します。
パーティションも拡張する場合
定義されたパーティションの下端までに項目の全データが収まらない場合、パーティションのプロパティで「高さを拡張して出力」がONであれば、拡張して全データを出力した矩形項目の下端がパーティションの下端となるようにパーティションを拡張してデータを出力します。
パーティションは、自由パーティション形式や集計表形式の場合は帳票定義体の下端まで、フリーフレーム形式の帳票定義体の場合はフレームの下端まで拡張可能です。
プリンタ装置の制御でパーティション出力可能な下端情報を指定したパーティションの場合、指定位置まで拡張可能となります。
パーティション出力時に上記の拡張可能なサイズを超えた場合、以下のエラーが発生します。
フリーフレーム形式以外の場合
パーティション拡張が発生した結果、拡張可能な下端を超える場合はMEFP_RC_MALINE(62)エラーで復帰します。段組が指定されている場合、最終段でない場合にはMEFP_RC_ENDBLOCK(65)エラーで復帰します。ただし最終段はMEFP_RC_MALINE(62)エラーで復帰します。
フリーフレーム形式の場合
フレームの出力方向が「縦」のフレームではフレームの下端、「横」のフレームでは右端を超えると、リンクフレームがある場合はMEFP_RC_ENDFRAME(6C)エラーで、リンク先がある場合にはMEFP_RC_ENDFRAMELINK(6B)エラーで復帰します。
拡張時、パーティションの下端に接する(罫線の縦の終了位置=パーティションの縦幅※)場合、パーティション罫線も連動します。
ただし、パーティションの縦幅が帳票定義体の行ピッチより小さい場合、パーティションが拡張してもパーティション罫線は連動せず、帳票定義体に定義された位置/サイズで出力されます。
※罫線の縦の終了位置とパーティションの縦幅の値はドット単位で一致している必要があります。帳票定義体の設計時には、その表示上でこれらの値がインチ単位やミリメートル単位では一致している場合でもドット単位では微妙に異なっていることがあります。その場合には罫線は連動しないので単位をドット単位に変更して一致させるようにしてください。
罫線
縦方向の開始位置または終了位置の下端に接している方が、拡張された位置に変わります。横線の場合、縦方向の開始位置および終了位置の両方が変わります。
枠
拡張されたサイズ分拡張します。網がけが指定されている場合、網も拡張します。
下記の例では2番目のDEが矩形項目(「ディスプレイ」というデータ)の拡張により拡張されたため、パーティション下端に接するパーティション罫線も連動して拡張されています。
拡張される矩形項目と同じパーティション上の他の項目は、定義された位置/サイズで出力されます。矩形項目の拡張と連動して位置やサイズが変わることはありません。その結果、他の項目と重なって出力される場合があります。
ひとつのパーティション内で複数の矩形項目があり、それぞれがパーティションの縦幅を超えて拡張する場合、項目の下端が一番下の項目が収まるようにパーティションを拡張します。
項目を拡張した場合でも、下端の余白は有効です。
従って、余白がパーティションに収まらないことによりパーティションが拡張されたり、余白が拡張可能な範囲を超えることでMEFP_RC_MALINE(62)、MEFP_RC_ENDBLOCK(65)、MEFP_RC_ENDFRAME(6C)、MEFP_RC_ENDFRAMELINK(6B)エラーとなる場合があります。
拡張可能な範囲までに収まる場合には矩形項目を拡張します。収まらない場合は縮小を行います。縮小は、拡張した項目の大きさを基準として行われます。
パーティションのサイズが拡張する場合に利用者プログラムで注意すべき点があります。
固定パーティション(PH,PF)と浮動パーティション(DE)を定義した集計表形式の帳票定義体を例に説明します。
PHとPFの間にDEを複数出力する場合、DEの縦幅が固定なら、PH-PF間に出力できるDEの個数は固定であるため、DEの出力回数による1ページの出力制御が可能です。
パーティション拡張によりDEの縦幅が可変の場合、レコードデータの内容によってパーティションの縦幅が変わる可能性があり出力可能なパーティションの個数を特定することができないため、上記のように固定的な数値を使用した1ページの出力制御を行うことができません。
利用者プログラムでは、データ量によりパーティションが拡張することを想定する必要があります。例えば、データの最大バイト数をあらかじめ決めておくことで最大の拡張量を限定し、最大に拡張した場合に出力可能なパーティション個数分出力するなどの制御が必要となります。
なお、プリンタ装置の制御で下端情報設定を実施することで、最大の拡張量を限定することなく制御することも可能です。
プリンタ装置の制御で下端情報設定を実施した場合、特定の位置を超えてパーティションを配置しようとするとMEFP_RC_MALINE(62)、MEFP_RC_ENDBLOCK(65)、MEFP_RC_ENDFRAME(6C)、MEFP_RC_ENDFRAMELINK(6B)エラーを通知できるようになります。
例のような帳票定義体を使用する場合、以下の手順となります。
DEの出力可能な下端情報としてPFの開始位置を指定します。
3回目のDEをパーティション出力するとパターン1ではPFの開始位置を超えるためエラーが通知されます。(パターン2はPFまでの残り領域に収まるため正常に出力)エラーが通知された場合、PFを出力し改ページを行い、3個目のDEは次のページに配置する制御を行うことが可能になります。
例
一般的な手順は以下のようになります。
* 下端情報設定(下端パーティション指定) MOVE "CT" TO 処理種別. MOVE "ULMT" TO 制御情報. MOVE "PT" TO 詳細情報. MOVE "DE" TO 指定パーティション. MOVE "PF" TO 下端パーティション. WRITE SAMP FROM 下端情報レコード. * レコードの初期化 MOVE LOW-VALUE TO SAMP. *ヘッダ(PH)を出力します ヘッダ出力. MOVE "PW" TO 処理種別. MOVE "PH" TO 印刷対象項目群名. WRITE SAMP. *明細(DE)を出力します MOVE "PW" TO 処理種別. MOVE "A001" TO 制御情報. MOVE "DE" TO 印刷対象項目群名. *通知コード62になるまで明細を出力 PERFORM TEST AFTER UNTIL 通知コード = '9062' ~明細のデータ設定:データ終了ならフッタ出力へ~ WRITE SAMP ~エラー判定:9062以外のエラーなら処理終了~ END-PERFORM. *フッタ(PF)を出力します. フッタ出力. MOVE "PW" TO 処理種別. MOVE "PF" TO 印刷対象項目群名. WRITE SAMP. *改ページします. MOVE "CT" TO 処理種別. MOVE "PAGE" TO 制御情報. WRITE SAMP. GO TO ヘッダ出力.
注意
上記のような利用者プログラムではプリンタ装置の制御の下端設定を行った後、WRITEにおける、MEFP_RC_MALINE(62)、MEFP_RC_ENDBLOCK(65)、MEFP_RC_ENDFRAME(6C)、MEFP_RC_ENDFRAMELINK(6B)の各エラー発生を改ページまたは改フレーム条件として動的に制御することもできます(上記手順の「通知コード62になるまで明細を出力」の部分)。
印刷プレビュー機能においては、プレビュー表示前にエラーが発生した場合(通知コードにMEFD_RC_END(00)以外が設定された場合)、印刷プレビューが取り消され、プレビュー表示画面は表示されません。従って、エラー発生を前提とする上記のような利用者プログラムでは印刷プレビュー機能を使用することはできません。