ページの先頭行へ戻る
MeFt V11.0 ユーザーズガイド
FUJITSU Software

5.15.12 項目内に全データを出力

レコードデータが矩形項目内に収まらない場合に、以下のどの動作を行うかを矩形項目のプロパティで指定することができます。

5.15.12.1 文字ピッチなどを縮小して出力

定義された矩形項目のサイズに全データが収まるように文字間隔や行の高さ、文字サイズを自動調整する機能です。以下に述べる1.~4.のいずれかの方法で調整を行います。

  1. 文字ピッチを文字サイズと同じ幅になるまで縮小する。

    文字ピッチが文字サイズより大きい場合に、文字ピッチを文字サイズと同じ幅になるまでに縮小し、全データを出力できるならば文字ピッチを詰めて出力します。

    図5.20 文字ピッチの縮小

  2. 行の高さを縮小する。

    行の高さが文字サイズより大きい場合に、行の高さを調整することで全データを出力できるならば行を詰めて出力します。最小の大きさは文字サイズです。行の高さを文字サイズ未満にすることはありません。

    図5.21 行の高さの縮小

  3. 行の高さ、文字ピッチを文字サイズと同じ大きさまで縮小する。

    1.と2.の両方の縮小を行います。

    図5.22 文字ピッチと行の高さの縮小

  4. 文字サイズを小さくする。

    1.~3.のいずれでも全データを出力できない場合、文字サイズを小さくして出力します。その際の文字ピッチ、行の高さは小さくした文字サイズと同じです。文字サイズの縮小は3ポまで行われます。3ポでも全データを出力できない場合は出力可能なデータだけを3ポで出力します。

    図5.23 文字サイズの縮小

    注意

    縮小処理は文字データを均等に配置する機能ではないため、特にデータの文字数が多い場合など、各種縮小を行うことで矩形項目の上の方に詰まって出力される場合もあります。

5.15.12.2 縦幅を拡張して出力

行の高さや文字ピッチ、文字サイズを変更することなく、項目やパーティションの縦サイズを拡張してデータをすべて出力する機能です。

  1. 項目のみ拡張する場合

    以下のような場合、パーティションを拡張することなく項目の縦幅を拡張して出力されます。項目の縦幅は矩形項目のプロパティで指定する「行の高さ」単位で拡張されます。

    • 出力するデータがパーティションの下端までの範囲に収まる場合

    • パーティションの拡張が許可されていない場合

      図5.24 項目の拡張

    パーティションの拡張が許可されていない場合の例を図に示します。

    この場合、パーティション下端までに収まるだけの文字を出力します。

    図5.25 項目の拡張(全データ出力できない場合)

  2. パーティションも拡張する場合

    定義されたパーティションの下端までに項目の全データが収まらない場合、パーティションのプロパティで「高さを拡張して出力」がONであれば、拡張して全データを出力した矩形項目の下端がパーティションの下端となるようにパーティションを拡張してデータを出力します。

    図5.26 パーティションの拡張

[パーティションの拡張可能な範囲]

パーティションは、自由パーティション形式や集計表形式の場合は帳票定義体の下端まで、フリーフレーム形式の帳票定義体の場合はフレームの下端まで拡張可能です。

プリンタ装置の制御でパーティション出力可能な下端情報を指定したパーティションの場合、指定位置まで拡張可能となります。

パーティション出力時に上記の拡張可能なサイズを超えた場合、以下のエラーが発生します。

  • フリーフレーム形式以外の場合

    パーティション拡張が発生した結果、拡張可能な下端を超える場合はMEFP_RC_MALINE(62)エラーで復帰します。段組が指定されている場合、最終段でない場合にはMEFP_RC_ENDBLOCK(65)エラーで復帰します。ただし最終段はMEFP_RC_MALINE(62)エラーで復帰します。

  • フリーフレーム形式の場合

    フレームの出力方向が「縦」のフレームではフレームの下端、「横」のフレームでは右端を超えると、リンクフレームがある場合はMEFP_RC_ENDFRAME(6C)エラーで、リンク先がある場合にはMEFP_RC_ENDFRAMELINK(6B)エラーで復帰します。

[パーティション罫線の連動]

拡張時、パーティションの下端に接する(罫線の縦の終了位置=パーティションの縦幅※)場合、パーティション罫線も連動します。

ただし、パーティションの縦幅が帳票定義体の行ピッチより小さい場合、パーティションが拡張してもパーティション罫線は連動せず、帳票定義体に定義された位置/サイズで出力されます。

※罫線の縦の終了位置とパーティションの縦幅の値はドット単位で一致している必要があります。帳票定義体の設計時には、その表示上でこれらの値がインチ単位やミリメートル単位では一致している場合でもドット単位では微妙に異なっていることがあります。その場合には罫線は連動しないので単位をドット単位に変更して一致させるようにしてください。

  • 罫線

    縦方向の開始位置または終了位置の下端に接している方が、拡張された位置に変わります。横線の場合、縦方向の開始位置および終了位置の両方が変わります。

  • 拡張されたサイズ分拡張します。網がけが指定されている場合、網も拡張します。

下記の例では2番目のDEが矩形項目(「ディスプレイ」というデータ)の拡張により拡張されたため、パーティション下端に接するパーティション罫線も連動して拡張されています。

図5.27 パーティション罫線の連動

[他の項目との関係]

拡張される矩形項目と同じパーティション上の他の項目は、定義された位置/サイズで出力されます。矩形項目の拡張と連動して位置やサイズが変わることはありません。その結果、他の項目と重なって出力される場合があります。

図5.28 他項目との関連

ひとつのパーティション内で複数の矩形項目があり、それぞれがパーティションの縦幅を超えて拡張する場合、項目の下端が一番下の項目が収まるようにパーティションを拡張します。

図5.29 複数の項目が拡張する場合

[余白について]

項目を拡張した場合でも、下端の余白は有効です。

従って、余白がパーティションに収まらないことによりパーティションが拡張されたり、余白が拡張可能な範囲を超えることでMEFP_RC_MALINE(62)MEFP_RC_ENDBLOCK(65)MEFP_RC_ENDFRAME(6C)MEFP_RC_ENDFRAMELINK(6B)エラーとなる場合があります。

5.15.12.3 縦幅の拡張および文字などの縮小

拡張可能な範囲までに収まる場合には矩形項目を拡張します。収まらない場合は縮小を行います。縮小は、拡張した項目の大きさを基準として行われます。

図5.30 縦幅の拡張および文字ピッチなどの縮小

パーティションのサイズが拡張する場合に利用者プログラムで注意すべき点があります。

固定パーティション(PH,PF)と浮動パーティション(DE)を定義した集計表形式の帳票定義体を例に説明します。

図5.31 パーティションの定義例

PHとPFの間にDEを複数出力する場合、DEの縦幅が固定なら、PH-PF間に出力できるDEの個数は固定であるため、DEの出力回数による1ページの出力制御が可能です。

パーティション拡張によりDEの縦幅が可変の場合、レコードデータの内容によってパーティションの縦幅が変わる可能性があり出力可能なパーティションの個数を特定することができないため、上記のように固定的な数値を使用した1ページの出力制御を行うことができません。

図5.32 パーティションの出力例

利用者プログラムでは、データ量によりパーティションが拡張することを想定する必要があります。例えば、データの最大バイト数をあらかじめ決めておくことで最大の拡張量を限定し、最大に拡張した場合に出力可能なパーティション個数分出力するなどの制御が必要となります。

なお、プリンタ装置の制御で下端情報設定を実施することで、最大の拡張量を限定することなく制御することも可能です。

プリンタ装置の制御で下端情報設定を実施した場合、特定の位置を超えてパーティションを配置しようとするとMEFP_RC_MALINE(62)MEFP_RC_ENDBLOCK(65)MEFP_RC_ENDFRAME(6C)MEFP_RC_ENDFRAMELINK(6B)エラーを通知できるようになります。

例のような帳票定義体を使用する場合、以下の手順となります。

一般的な手順は以下のようになります。

* 下端情報設定(下端パーティション指定)
     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)以外が設定された場合)、印刷プレビューが取り消され、プレビュー表示画面は表示されません。従って、エラー発生を前提とする上記のような利用者プログラムでは印刷プレビュー機能を使用することはできません。