(57)【要約】【課題】  帳票の印刷において、効率的に出力される用紙の枚数を抑制することはできなかった。【解決手段】  情報処理装置は、データが挿入される複数のフィールドを備えるテンプレートを読み込み、テンプレートの複数のフィールドの上端および下端の位置に基づいて、前記テンプレートを複数の分割領域に分割する。そして、情報処理装置は、１つの分割領域を構成するフィールドの少なくとも１つにデータが挿入されるか否かを判定し、分割領域を構成するフィールドの少なくとも１つにデータが挿入されないと判定された場合、前記分割領域を出力せず、分割領域を構成するフィールドの少なくとも１つにデータが挿入されると判定された場合、前記分割領域を出力する。【選択図】  図１１
2011013769.tif 000002
【特許請求の範囲】
【請求項１】
データが挿入される複数のフィールドを備えるテンプレートを読み込む読込手段と、
前記読込手段により読み込まれたテンプレートの前記複数のフィールドの上端および下端の位置に基づいて、前記テンプレートを複数の分割領域に分割する分割手段と、
１つの分割領域を構成するフィールドの少なくとも１つにデータが挿入されるか否かを判定する判定手段と、
前記判定手段により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されないと判定された場合、前記分割領域を出力せず、前記判定手段により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されると判定された場合、前記分割領域を出力する出力制御手段を有することを特徴とする情報処理装置。
【請求項２】
複数の分割領域にまたがるフィールドにデータが挿入されることにより前記フィールドに生じる空白領域を導出する導出手段を更に有し、
前記出力制御手段は、前記複数の分割領域の中でデータが挿入されないフィールドと前記空白領域とで構成される分割領域を出力せず、データが挿入されるフィールドまたは前記空白領域とは異なる領域の少なくとも１つで構成される分割領域を出力することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
データが挿入される複数のフィールドを備えるテンプレートを読み込む読込工程と、
前記読込工程により読み込まれたテンプレートの前記複数のフィールドの上端および下端の位置に基づいて、前記テンプレートを複数の分割領域に分割する分割工程と、
１つの分割領域を構成するフィールドの少なくとも１つにデータが挿入されるか否かを判定する判定工程と、
前記判定工程により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されないと判定された場合、前記分割領域を出力せず、前記判定工程により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されると判定された場合、前記分割領域を出力する出力制御工程を有することを特徴とする制御方法。
【請求項４】
複数の分割領域にまたがるフィールドにデータが挿入されることにより前記フィールドに生じる空白領域を導出する導出工程を更に有し、
前記出力制御工程は、前記複数の分割領域の中でデータが挿入されないフィールドと前記空白領域とで構成される分割領域を出力せず、データが挿入されるフィールドまたは前記空白領域とは異なる領域の少なくとも１つで構成される分割領域を出力することを特徴とする請求項３に記載の制御方法。
【請求項５】
データが挿入される複数のフィールドを備えるテンプレートを読み込む読込工程と、
前記読込工程により読み込まれたテンプレートの前記複数のフィールドの上端および下端の位置に基づいて、前記テンプレートを複数の分割領域に分割する分割工程と、
１つの分割領域を構成するフィールドの少なくとも１つにデータが挿入されるか否かを判定する判定工程と、
前記判定工程により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されないと判定された場合、前記分割領域を出力せず、前記判定工程により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されると判定された場合、前記分割領域を出力する出力制御工程をコンピュータに実行させるための当該コンピュータが読み取り可能なプログラム。
【請求項６】
複数の分割領域にまたがるフィールドにデータが挿入されることにより前記フィールドに生じる空白領域を導出する導出工程を更に有し、
前記出力制御工程は、前記複数の分割領域の中でデータが挿入されないフィールドと前記空白領域とで構成される分割領域を出力せず、データが挿入されるフィールドまたは前記空白領域とは異なる領域の少なくとも１つで構成される分割領域を出力することを特徴とする請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不要な領域を詰めて出力用紙を節約するための文書生成技術に関する。
【背景技術】
【０００２】
帳票システムでは、帳票の定型部分（テンプレート）に対して動的に変化するデータを挿入することにより印刷を行う。例えば、保険の帳票では、保険商品の概要説明や企業ロゴ、表の枠線等の固定部分が定義されたテンプレートに対して、顧客独自のデータ（氏名や住所など）を挿入することにより印刷を行う。差し込むデータの入力元は、データベース等である。データベース等に格納された１件分のデータのことをレコードと呼ぶ。１レコードは複数の項目からなる。例えば、「住所情報」というレコードには「氏名」「住所」「電話番号」等の項目が含まれる。帳票システムでは、複数のレコードを順番にテンプレートへ差し込むことにより帳票印刷を行う。
【０００３】
従来から、挿入される前後のレコードで同一の内容のデータが続くとき、２レコード目以降の文字や罫線の出力を抑制し、帳票の見やすさ・美感を向上させるという技術が存在する（例えば、特許文献１を参照）。
【０００４】
また、この特許文献１の技術を利用することで連続する同一の内容のデータ出力が抑制されることで、用紙の出力を抑制でき、コストを削減することも可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−１６２０５０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来の技術では、連続するレコードにおいて同一の内容のデータが続く時に出力される用紙の枚数を抑制できるが、例えばデータが空の場合などには適用することができず、効率的に出力される用紙の枚数を抑制することはできなかった。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本願発明は、データが挿入される複数のフィールドを備えるテンプレートを読み込む読込手段と、前記読込手段により読み込まれたテンプレートの前記複数のフィールドの上端および下端の位置に基づいて、前記テンプレートを複数の分割領域に分割する分割手段と、１つの分割領域を構成するフィールドの少なくとも１つにデータが挿入されるか否かを判定する判定手段と、前記判定手段により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されないと判定された場合、前記分割領域を出力せず、前記判定手段により前記分割領域を構成するフィールドの少なくとも１つにデータが挿入されると判定された場合、前記分割領域を出力する出力制御手段を有することを特徴とする。
【発明の効果】
【０００８】
不要な部分を削減することで用紙の出力枚数を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のコンピュータの構成を説明するブロック図
【図２】帳票生成プログラムの構成図
【図３】単純なテンプレートの一例
【図４】データベースのテーブルの一例
【図５】生成される単純な帳票の一例
【図６】テンプレートの一例
【図７】データベースのテーブルの一例
【図８】課題解決のためのフローチャート
【図９】繰り返しブロックを分割領域に分割する方法を示した概念図
【図１０】分割領域管理情報のある時点での状態を示した図
【図１１】生成される帳票の一例
【図１２】実施例２を説明するフローチャート
【図１３】テンプレートの一例
【図１４】データベースのテーブルの一例
【図１５】実施例３を説明するフローチャート
【図１６】ステップ１５０４の処理説明のための図
【図１７】分割領域管理情報のある時点での状態を示した図
【図１８】生成される帳票の一例
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１１】
図１は、本実施形態のコンピュータ（情報処理装置）の構成を説明するブロック図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。また、特に断らない限り、本発明の機能が実行されるのであれば、ＬＡＮ、ＷＡＮ等のネットワークを介して接続されたシステムであっても本発明を適用できることは言うまでもない。
【００１２】
図１においてコンピュータ１００は、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１０に記憶された帳票生成プログラム２００等に基づいて図形、イメージ、文字、表等が混在した帳票を生成するＣＰＵ１を備える。さらに、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。
【００１３】
また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１０には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等が記憶される。ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１０には上記文書処理の際に使用するフォントデータ等が記憶され、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１０には上記帳票生成処理等を行う際に使用する各種データが記憶される。
【００１４】
ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードＩ／Ｆは、キーボード８や不図示のポインティングデバイスからのキー入力を制御する。ディプレイＩ／Ｆ６は、ディスプレイ９の表示を制御する。外部メモリＩ／Ｆ７は、ハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１０とのアクセスを制御する。外部メモリ１０は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイルを記憶する。
【００１５】
図２は、本実施形態における帳票生成プログラム２００の構成の一例を示したものである。本明細書の帳票生成プログラム２００は、帳票を生成する帳票生成部２０１を備える。
【００１６】
以下で、本実施形態における帳票生成プログラム２００の帳票生成処理を図８のフローチャートを用いて説明する。なお本願のフローチャートの各ステップ（Ｓ）は、ＣＰＵ１が本願のフローチャートに関する帳票生成プログラム２００をＲＡＭ２に読み出して、実行することで実現される。
【００１７】
図３−図５は、帳票を生成する処理を説明するための図である。
図３は、典型的な表形式のテンプレートの一例を示したものである。テンプレート３００の実態はバイナリファイルであり、以下に示す様々な情報が格納されている。
【００１８】
テンプレート３００は、固定文字３０１や企業ロゴ３０２、表３０３から構成される。
【００１９】
固定文字３０１や企業ロゴ３０２は、挿入されるデータが変化しても常に変化せず、各ページで同じ位置に同じ形状で出力される。表３０３は、見出し部３０４と繰り返しブロック３０５から構成される。見出し部３０４は、後述するフィールドに出力される情報が何であるかを説明するための見出し情報をフィールドごとに出力する領域である。繰り返しブロック３０５はいくつかのフィールドから構成され、図３の例ではフィールド３０６−３０８から構成されている。繰り返しブロック３０５が、縦方向に繰り返されることにより例えば図５が出力される。
【００２０】
フィールドは、図４に示すデータベースのデータが挿入されるオブジェクト（領域）である。各フィールドは、属性として「文字の大きさ」「文字色」「出力位置」等の情報を持っている。テンプレートのフィールドに挿入されたデータは、この情報に従って大きさ、色、位置が決定される。また、フィールドは出力書式の情報も持っており、例えば、「￥９９，９９９」という書式がフィールド３０８に設定されている場合、挿入されるデータが「１００００」であれば指定の書式にしたがって「￥１０，０００」と出力される。さらに、フィールドは「フィールド名」属性も持っている。フィールド名属性により、テンプレート内でフィールドを一意に識別することが可能になる。図３の例では、フィールド３０６−３０８のフィールド名はそれぞれ「伝票番号」、「商品名」、「価格」となる。これらフィールドの属性も、テンプレート３００に保存されている。
【００２１】
図４は、テンプレート３００のフィールドに挿入されるデータベースのデータの一例を示したものである。テーブル４００は、データベース内に定義されたデータ領域である。テーブル４００には、複数のレコードが格納されている。レコードとは、データのまとまりを表す。例えば、伝票に関する情報として、伝票番号・商品名・価格をまとめて１レコードと扱う。レコード４０１は、データ４０２、データ４０３、データ４０４から構成される。それぞれ、伝票番号・商品名・価格のデータである。項目名４０５−４０７は、各項目が何であるかをあらわす識別子である。図４の例では、テーブル４００に、９つのレコードが格納されている。
【００２２】
図５は、テンプレート３００のフィールドに、テーブル４００のデータが流し込まれた結果を示した図である。図３の繰り返しブロック３０５内のフィールド３０６−３０８に対して、図４のレコード４０１のデータ４０１−４０３が挿入される。そして、レコード４０１に続くレコードのデータが、同様にフィールド３０６−３０８に挿入される。以上の処理を全レコードに対して繰り返すことにより、繰り返しブロック３０５が縦方向に配置され、表５００が出力される。
【００２３】
なお、図４のデータ項目と図３のフィールドを関連付ける方法は何でもよい。本実施例では、項目名とフィールド名により両者の関連付けを行っているが、項目とフィールドの並び順や、専用のファイルで関連付けを定義する等の方法でもよい。
【００２４】
また、繰り返しブロック３０５内へのフィールドの置き方は自由である。図３のテンプレートのように横一列に配置するだけでなく、図６のような形状でも良い。どのように配置するかは帳票のデザイン次第である。
【００２５】
図６は、本実施例を説明するためのテンプレートである。図６は、繰り返しブロック３０５が複雑な形状をしたテンプレート６００の一例である。繰り返しブロック３０５は、フィールド６０１−６０５から成り、それぞれのフィールド名は「相手先名称」「日付」「商談番号」「換算レート」「外貨金額」である。
【００２６】
図７は、テンプレート６００のフィールド６０１−６０５に挿入されるデータの集合を示すテーブル７００の一例である。テーブル７００には、レコード７０１−７０５のデータが格納されている。いくつかの項目が「＜空＞」になっているが、これはデータが格納されていないことを示す。
【００２７】
このテーブル７００の運用方針として、少しでもデータ量を削減するために前レコードと同じ「相手先名称」の項目を格納しないことを想定している。そのため、レコード７０３の「相手先名称」項目は空だが、これは「□□Ｉｎｃ．」が格納されているのと同等の意味である。また、「外貨金額」「換算レート」の項目には、国内の相手先の場合、データを格納しなくてもよいと想定する。このため、レコード７０１、７０４、７０５の外貨金額、換算レートにはデータが格納されていない。
【００２８】
図８は本発明の実施の形態を示したフローチャートである。
Ｓ８０１で、帳票生成部２００は、テンプレート６００を解析し、全ての情報を読み込む。各フィールドの属性も全て読み込まれるため、帳票生成部２００は、「出力位置」属性からフィールドの位置も判定できる。
【００２９】
Ｓ８０２において、帳票生成部２００は、「出力位置」属性に基づいて繰り返しブロック３０５に対して引くことのできる分割線を全て導出する。
【００３０】
図９は、分割線・分割領域を説明するための概念図であり、テンプレート６００の繰り返しブロック３０５を拡大した図である。図８のＳ８０２を実行することにより、分割線９０１−９０４が導出される。分割線は、各フィールドの出力位置の上端と下端のＹ座標に沿って引かれた線であり、テンプレートの設計画面や印刷した結果には出力されない。分割領域９０５−９０７は、分割線によって区切られた領域である。テンプレート６００のように、繰り返しブロック３０５が複雑な形状の場合、分割線・分割領域を用いることによって不要な領域を省略することが可能となる。
【００３１】
Ｓ８０２において、帳票生成部２００は、繰り返しブロック３０５内の全フィールドの上端・下端のＹ座標を取得し、それらを分割線のＹ座標としてＲＡＭ２に保持する。値が重複しているもの（重なっているもの）に関しては一方を破棄する。
【００３２】
Ｓ８０３において、帳票生成部２００は、分割線９０１−９０４のＹ座標から分割領域９０５−９０７の範囲を導出する。例えば、分割領域９０５は、分割線９０１のＹ座標から分割線９０２のＹ座標までと導出される。
【００３３】
Ｓ８０４において、帳票生成部２００は、分割領域管理情報１０００を生成する。
【００３４】
図１０（Ａ）は、生成された分割領域管理情報の一例である。分割領域管理情報１０００は、分割領域名１００１、分割領域範囲１００２、関連フィールド名１００３、表示フラグ１００４、非表示フィールド情報１００５を持つ。分割領域名１００１は、分割領域を識別するための情報である。分割領域範囲１００２は、分割領域の範囲を示すＹ座標である。関連フィールド名１００３、表示フラグ１００４、非表示フィールド情報１００５については後述する。Ｓ８０３までに導出された分割領域とそのＹ座標範囲が、分割領域管理情報１０００に格納される。分割領域９０５−９０７がそれぞれ分割領域Ａ、分割領域Ｂ、分割領域Ｃという分割領域名で格納される。
【００３５】
Ｓ８０５において、帳票生成部２００は、繰り返しブロック３０５内の全フィールドに対して、各フィールドがどの分割領域に関連するかを導出する。以下に具体的な導出方法について説明する。帳票生成部２００は、各フィールドの上端・下端のＹ座標と、分割領域管理情報１０００の分割領域範囲１００２に格納した分割領域の範囲のＹ座標とを比較する。判定の対象フィールドの座標が分割領域の範囲内であれば、その対象フィールドがその分割領域の関連フィールドとして導出される。例えば相手先名称フィールドの座標は、分割領域Ａと分割領域Ｂの範囲に含まれるため、相手先名称フィールドが分割領域Ａと分割領域Ｂの関連フィールド名として記憶される。
【００３６】
Ｓ８０６において、帳票生成部２００は、Ｓ８０５において導出された情報を分割領域管理情報１０００に格納する。その結果、分割領域管理情報１０００は図１０（Ｂ）へ更新される。関連フィールド名１００３には、分割領域と交わるフィールドのフィールド名が格納される。
【００３７】
Ｓ８０７からＳ８２０は、レコードごとの繰り返し処理である。
Ｓ８０８において、帳票生成部２００は、データベースのテーブル７００からレコードを１つ読込む。例えば、帳票生成部２００は、まずレコード７０１を読み込み、レコード７０１に対してＳ８０７からＳ８２０までの処理を行う。続いて、帳票生成部２００は、データベースのテーブル７００からレコード７０２を読み込み、Ｓ８０７からＳ８２０を繰り返す。以上の処理を全レコードに対して実行する。
【００３８】
Ｓ８０９において、帳票生成部２００は、分割領域管理情報１０００の一部の情報を初期化する。具体的には、帳票生成部２００は、全ての分割領域の表示フラグ１００４をＯＦＦに設定し、非表示フィールド情報１００５にＮＵＬＬ（該当なし）を設定する。表示フラグ１００４は、分割領域を表示（描画）するかどうか決めるためのフラグである。後述する処理で、帳票生成部２００は、表示フラグ１００４の状態を見て分割領域を描画するかどうかを決定する。非表示フィールド情報１００５については後述する。
【００３９】
Ｓ８１０からＳ８１５は、項目ごとの繰り返し処理である。
Ｓ８１１において、帳票生成部２００は、読み込んだレコードから項目のデータを取得する。例えば、レコード７０１が処理対象の場合、帳票生成部２００は、まずレコード７０１の「相手先名称」項目のデータを取得し、「相手先名称」項目に対してＳ８１５までの処理を行う。
【００４０】
Ｓ８１２において、帳票生成部２００は、取得した項目のデータが空かどうかを判定する。項目のデータが空かどうかは、データ長を見て判断する。データ長がゼロであれば空と判定される。
【００４１】
Ｓ８１２において取得した項目のデータが空と判定された場合、Ｓ８１３において、帳票生成部２００は、分割領域管理情報１０００の非表示フィールド情報１００５を更新する。非表示フィールド情報１００５は、フィールド６０１のような複数の分割領域にまたがるフィールドがある場合に、フィールドの属するどちらかの分割領域の表示が抑制された際、もう一方の分割領域でフィールドの一部分が表示されるのを防ぐための情報である。更新の方法は以下のとおりである。まず、取得した項目のデータが挿入されるフィールドを特定する。本実施例では、項目とフィールドは、項目名とフィールド名で関連付けられている（同じであれば関連付いている）。項目名をテーブル７００から、フィールド名をテンプレート６００から取得し比較することで特定ができる。
【００４２】
次に、特定したフィールドが、分割領域管理情報１０００の関連フィールド名１００３に存在する分割領域を特定する。最後に、特定した分割領域の非表示フィールド情報１００５に、特定したフィールドのフィールド名を設定する。
【００４３】
ここで、レコード７０３のデータを挿入する処理を用いて具体的に説明する。レコード７０３では、「相手先名称」のデータが空である。よって、レコード７０３用の分割領域管理情報の非表示フィールドに「相手先名称」が格納される。この際、「相手先名称」が関連する分割領域は、分割領域Ａと分割領域Ｂであるため、分割領域ＡおよびＢの非表示フィールド情報に「相手先名称」が格納される。その結果、図１０（Ｃ）のような分割領域管理情報が得られる。
【００４４】
Ｓ８１２において取得した項目のデータが空ではないと判定された場合、Ｓ８１４において、帳票生成部２００は、分割領域管理情報１０００の表示フラグ１００４をＯＮに更新する。帳票生成部２００は、取得した項目のデータが挿入されるフィールドが関連フィールド名１００３に記載されている分割領域の表示フラグ１００４を更新する。
【００４５】
以上、Ｓ８１０からＳ８１５の処理を各項目について実行する。例えば、図７では、「日付」「商談番号」「外貨金額」「換算レート」の各項目に対してＳ８１０から８１５が実行される。
【００４６】
図１０（Ｄ）は、レコード７０１〜７０５に対してＳ８１０からＳ８１５を実行することで得られる各レコードの分割領域管理情報１０００を示す図である。レコード７０１で説明すると、「相手先名称」項目が空ではないので、分割領域Ａおよび分割領域Ｂの表示フラグ１００４はＯＮになっている。一方、レコード７０１において「外貨金額」「換算レート」項目はともにデータが空なので、分割領域Ｃの表示フラグ１００４にＯＦＦが格納されている。また、レコード７０３において、「相手先名称」項目のデータが空なので分割領域Ａの表示フラグ１００４はＯＦＦである。一方、その他の項目は空ではないので、分割領域Ｂおよび分割領域Ｃの表示フラグ１００４はＯＮになっている。
【００４７】
Ｓ８１６からＳ８１９は、分割領域管理情報１０００に格納された分割領域ごとの繰り返し処理である。帳票生成部２００は、分割領域管理情報１０００から１つの分割領域の情報を取得して、処理を行う。
【００４８】
Ｓ８１７において、帳票生成部２００は、処理対象の分割領域管理情報を参照することにより処理対象の分割領域の表示フラグ１００４がＯＮかどうかを判定する。
【００４９】
Ｓ８１７において処理対象の分割領域の表示フラグ１００４がＯＮと判定された場合、Ｓ８１８において、帳票生成部２００は、その分割領域を出力（描画）する。この時、帳票生成部２００は、その分割領域内に含まれるフィールド（分割領域管理情報１０００の関連フィールド１００３に列挙されているフィールド）を全て描画する。ただし、非表示フィールド情報１００５に列挙されているフィールドについては描画を行わない。これにより、フィールド６０１のように、複数の分割領域にまたがるフィールドでも正常に描画を行うことが可能になる。例えば、レコード７０３において分割領域Ｂの表示フラグ１００４はＯＮであるが、基本的には関連フィールド名１００３に列挙されているフィールドは全て描画される。しかし、非表示フィールド情報１００５に「相手先名称」フィールドが列挙されているため、「相手先名称」フィールドだけは描画されない。
【００５０】
Ｓ８１７において、処理対象の分割領域の表示フラグがＯＦＦと判定された場合、分割領域の描画は行わず、Ｓ８１９に進む。
【００５１】
図１１は、図８の処理を実行することで得られる帳票のイメージ図である。レコード７０１が繰り返しブロック３０５に挿入された場合、分割領域Ｃの表示フラグがＯＦＦである。その結果、レコード７０１用に分割領域Ｃが描画されないため、結果的に分割領域Ｃを省略した帳票のイメージを得ることができる（１１０１）。一方、レコード７０２が繰り返しブロック３０５に挿入された場合、表示フラグＯＦＦの分割領域がないので、レコード７０２用の全ての分割領域が描画される（１１０２）。レコード７０３が繰り返しブロック３０５に挿入された場合、分割領域Ａの表示フラグがＯＦＦであるため、レコード７０３用の分割領域Ａが描画されない。また、分割領域Ｂの表示フラグはＯＮであるが、非表示フィールド情報に「相手先名称」が格納されているため、レコード７０３の相手先名称は描画されない（１１０３）。
【００５２】
以上のように、帳票生成部２００は、分割領域を構成するフィールドの少なくとも１つにデータが挿入されない場合、その分割領域を出力しない。一方、帳票生成部２００は、分割領域を構成するフィールドの少なくとも１つにデータが挿入される場合、その分割領域を出力する。このような出力制御が実行されるため、どのようなテンプレート・データベースの構成であっても、どの分割領域が省略できるかを判定し、不要な分割領域を省略できる。このため、データベースに項目が追加された場合や、テンプレートにフィールドが追加された場合でも、業務システムのプログラムを修正することなく、不要な領域が省略された結果を出力できる。その結果、無駄な紙の出力を抑制することが可能となる。
【実施例２】
【００５３】
実施例１では、データベースのデータが空であった場合に、分割領域を省略することで紙出力を抑制する例について説明した。実施例２では、データが空ではなく、前レコードと同じ場合に、分割領域を詰める例について説明する。図７のレコード７０３の「相手先名称」項目には、「□□Ｉｎｃ．」というデータが格納されているものとして説明する。
【００５４】
図１２は、実施例２の処理の流れを示すフローチャートである。実施例１と異なる部分について説明する。
【００５５】
Ｓ１２０１において、帳票生成部２００は、処理対象のレコードの１つ前のレコード（直前レコードと呼ぶ）をデータベースから読み込む。
【００５６】
Ｓ１２０２において、帳票生成部２００は、Ｓ１２０１で読み込んだ直前レコードの項目のデータを取得する。この時、Ｓ８１１で処理対象のレコードから取得した項目データに対応する項目を、直前レコードから取得する。例えば、Ｓ８１１で処理対象のレコードから「相手先名称」項目を取得した場合、Ｓ１２０２では、直前レコードから「相手先名称」項目を取得する。
【００５７】
Ｓ１２０３において、帳票生成部２００は、Ｓ８１１で取得したデータとＳ１２０２で取得した直前レコードのデータとを比較する。
【００５８】
Ｓ１２０３における比較の結果、同じデータであると判定された場合、Ｓ８１３において、帳票生成部２００は、分割領域管理情報の非表示フィールド情報を更新する。処理内容は実施例１と同じである。
【００５９】
Ｓ１２０３で内容が異なると判定された場合には、Ｓ８１４において、帳票生成部２００は、分割領域管理情報の表示フラグを更新する。処理内容は実施例１と同じである。
【００６０】
図１２の処理により図１１が得られる。レコード７０３の「相手先名称」のデータが、直前のレコードであるレコード７０２の「相手先名称」のデータと同じであるため、出力が抑制され、分割領域Ａが詰められている。
【００６１】
以上のように、帳票生成部２００は、データベースの前後のレコードで同一項目のデータが同じ場合、後半のレコードのその同一項目のデータを出力しないことで、不要な分割領域を省略する。その結果、データベースの前後のレコードで重複するデータが収められている場合にも紙の出力を抑制することが可能となる。
【実施例３】
【００６２】
実施例１では、データベースのデータが空であった場合に、分割領域を省略することで紙出力を抑制する例について説明した。実施例３では、データが空かどうかではなく、流し込まれるデータ長も考慮して分割領域を省略する例について説明する。なお、実施例３でも表示フラグの初期値はＯＦＦである。
【００６３】
図１３は、実施例３の説明で用いるテンプレートの一例である。テンプレート１３００は、繰り返しブロック３０５で構成される。繰り返しブロック３０５は、フィールド１３０１を含んでいる。フィールド１３０１は、複数の分割領域にまたがる。
【００６４】
図１４は、テンプレート１３００に挿入されるデータの一例である。テーブル１４００はレコード１４０１−１４０３から構成される。レコード１４０１と１４０３の「備考」項目には、長い文字列が格納されている。
【００６５】
図１５は、実施例３の処理の流れを示すフローチャートである。実施例１と異なる部分について説明するため、Ｓ８１０からＳ８１５のみ部分的に示してある。また、Ｓ８１０−８１３、８１５の処理内容は実施例１と同じである。
【００６６】
Ｓ１５０１において、帳票生成部２００は、レコードから取得した項目のデータを関連するフィールドへ仮に挿入する。実際にデータをフィールドに挿入して帳票を生成する処理は、この後の処理で行われる。ここでは、データの終端を検出するために仮のデータ挿入処理を行う。データの終端検出処理については後述する。仮のデータ挿入処理を行うことで、データに対してＲＡＭ２に保持されているフィールドの属性（フォントサイズ、行の間隔や出力書式等）が適用され、実際に帳票として出力されるデータの終端位置が導出される。
【００６７】
Ｓ１５０２において、帳票生成部２００は、実際に出力されるデータの終端位置を導出する。具体的には、Ｓ１５０１で挿入されたデータの最後の文字の下端のＹ座標を導出する。また、文字の大きさはフォントサイズ等の情報を使って計算している。帳票生成部２００は、描画位置と文字の大きさから、最後の文字の下端のＹ座標を導出する。そして、現在文字データが挿入されたフィールドにおいて、最後の文字の下端以降の領域が空白領域として導出される。
【００６８】
Ｓ１５０３からＳ１５０６は、分割領域管理情報１０００に格納された全分割領域に対して繰り返し実行される。帳票生成部２００は、分割領域管理情報１０００から分割領域１件分の情報を順番に取得して、処理を行う。
【００６９】
Ｓ１５０４において、帳票生成部２００は、Ｓ１５０２で算出したデータの終端位置（Ｙ座標）が、分割領域範囲１００２の上端（値が小さい方）より大きいかどうかを判定する。図１６は、Ｓ１５０４の判定処理を具体的に説明するための図である。図１６には、レコード１４０３が流し込まれた繰り返しブロックを記載しており、分割領域Ａ１６０１−分割領域Ｃ１６０３が含まれる。値１６０４は、各分割領域のＹ座標を示す。値１６０５は、Ｓ１５０２で算出されたデータの終端位置のＹ座標を示す。Ｓ１５０４において、データの終端位置（８０）と各分割領域の上端（５０、７０、９０）とが比較され、データの終端位置が分割領域まで達したか否かが判定される。
【００７０】
Ｓ１５０４でデータ終端が小さいと判定された場合、帳票生成部２００は、分割領域ごとのループの先頭であるＳ１５０３に処理を戻し、再度Ｓ１５０４の処理を実行する。
【００７１】
Ｓ１５０４でデータ終端が大きいと判定された場合、Ｓ１５０５において、帳票生成部２００は、現在処理対象の分割領域の表示フラグ１００４をＯＮにする。
【００７２】
図１７は、図１５で示したフローチャートを処理することにより得られる、レコード１４０３の分割領域管理情報１０００の更新結果である。なお、図１７ではレコード１４０３について説明しているが、各レコードの分割領域管理情報も更新されている。
【００７３】
Ｓ１５０２の計算の結果、データの終端位置のＹ座標は「８０」だったとする。分割領域Ａの上端は５０のため、５０＜８０となり、表示フラグ１００４がＯＮになる。また、分割領域Ｂの上端は７０のため、７０＜８０となり、表示フラグ１００４がＯＮになる。しかし、分割領域Ｃの上端は９０のため、９０＞８０となり、表示フラグ１００４はＯＦＦのままである。
【００７４】
図１８は、実施例３を処理することにより得られる帳票のイメージ図である。レコード１４０３の分割領域Ｃが詰められている。つまり、データが挿入されないフィールドとデータが挿入されるフィールドの空白領域とで構成される分割領域は削除される。
【００７５】
以上のように、帳票生成部２００は、流し込まれるデータ長も考慮して分割領域を詰める。このため、実施例１と比較してより多くのケースで紙の出力が抑制でき、コストを削減できる。
【００７６】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述の実施形態の機能を実現するソフトウェア（プログラム）を、ネットワークまたは各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００７７】
１  ＣＰＵ
２  ＲＡＭ
１００  情報処理装置
【図１】
2011013769.tif 000003
【図２】
2011013769.tif 000004
【図３】
2011013769.tif 000005
【図４】
2011013769.tif 000006
【図５】
2011013769.tif 000007
【図６】
2011013769.tif 000008
【図７】
2011013769.tif 000009
【図８】
2011013769.tif 000010
【図９】
2011013769.tif 000011
【図１０】
2011013769.tif 000012
【図１１】
2011013769.tif 000013
【図１２】
2011013769.tif 000014
【図１３】
2011013769.tif 000015
【図１４】
2011013769.tif 000016
【図１５】
2011013769.tif 000017
【図１６】
2011013769.tif 000018
【図１７】
2011013769.tif 000019
【図１８】
2011013769.tif 000020