(57)【要約】【課題】二次帳票の生成元となる帳票の帳票データを用いて、ユーザの所望するレイアウトを有する当該二次帳票を自動生成することを目的とする。【解決手段】ユーザが利用を望む二次帳票の生成元となる帳票の帳票データを検索し（ステップＳ１００からステップＳ１０４）、ユーザが所望するレイアウトを編集するためのレイアウト編集画面を出力後（ステップＳ１０６）、当該所望するレイアウトを選定してレイアウト編集画面へ表示し（ステップＳ１０８）、レイアウト編集画面にて、レイアウトに対して帳票データの配置先を矩形指定し（ステップＳ１１０）、当該矩形の領域に適合するように帳票データの編集を行うことで二次帳票を生成して表示する（ステップＳ１１２及びステップＳ１１４）。【選択図】図３
2012133568.tif 000002
【特許請求の範囲】
【請求項１】
帳票から二次帳票を生成する帳票生成装置であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を備えたことを特徴とする帳票生成装置。
【請求項２】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字間ピッチを調整することを特徴とする請求項１に記載の帳票生成装置。
【請求項３】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字サイズを調整することを特徴とする請求項１または２に記載の帳票生成装置。
【請求項４】
前記データ配置設定手段は、前記配置先の領域から平行線分を抽出し、抽出した平行線分の位置を用いて配置する帳票データの文字の配置位置を調整することを特徴とする請求項１乃至３の何れか１項に記載の帳票生成装置。
【請求項５】
前記データ配置設定手段は、前記配置先の領域と交差する前記平行線分を抽出することを特徴とする請求項４に記載の帳票生成装置。
【請求項６】
前記データ配置設定手段は、前記平行線分を前記配置先のレイアウトの描画命令から抽出することを特徴とする請求項３または４に記載の帳票生成装置。
【請求項７】
前記レイアウト受付手段は、帳票のレイアウト、あるいは前記帳票以外のレイアウトの選択を受付けることを特徴とする請求項１乃至６の何れか１項に記載の帳票生成装置。
【請求項８】
前記帳票の表示を制御する表示手段を更に備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記表示手段は、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記レイアウト受付手段は、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けることを特徴とする請求項１乃至７の何れか１項に記載の帳票生成装置。
【請求項９】
前記レイアウト受付手段は、帳票の帳票データを矩形、及び前記配置先を矩形にて特定することを特徴とする請求項８に記載の帳票生成装置。
【請求項１０】
前記受付手段によって受付けた前記帳票の帳票データの配置先を記憶する記憶手段と、
前記記憶手段によって記憶された前記帳票の帳票データの配置先を選択する選択手段と、
前記データ配置設定手段は、前記選択手段によって選択された配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成することを特徴とする請求項１乃至９の何れか１項に記載の帳票生成装置。
【請求項１１】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システム。
【請求項１２】
帳票から二次帳票を生成する帳票生成装置の制御方法であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を実行することを特徴とする帳票生成装置の制御方法。
【請求項１３】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を実行し、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システム。
【請求項１４】
帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を機能させることを特徴とするプログラム。
【請求項１５】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、
前記クライアント装置を、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を機能させ、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置を、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子帳票から二次帳票を生成するための技術に関するものである。
【背景技術】
【０００２】
電子帳票システムでは、保存されている帳票を検索し、その検索ヒット結果を寄せ集め、その検索ヒットデータを埋め込んだ二次帳票（名寄せ帳票）を生成する仕組みを持っている。この機能により、帳票の中から必要なデータのみで構成される帳票を作成して業務で利用することができることがメリットとなっている。
【０００３】
例えば、日付、顧客名、取引履歴などを有している１年分の膨大な帳票から二次帳票を生成することにより、月度単位の帳票や、特定の顧客との取引履歴のみを有する帳票を生成し、業務で活用することが可能である。
【０００４】
従来の二次帳票を作成する方法としては、帳票が保有する帳票データから特定の検索条件に該当する帳票データを名寄せするという、経理や監査による検閲の観点で機能が提供されている。
【０００５】
しかしながら、昨今、電子帳票の業務利用が促進されるにつれ、二次帳票に求められる要件も変化してきている。例えば、検索前の帳票とは異なるレイアウトの二次帳票を作成して業務に利用したい、あるいは、検索ヒットしたデータの一部を用いた二次帳票を作成して業務に利用したい、などが挙げられる。
【０００６】
しかし、前記の観点で提供している機能では元となる帳票と同じレイアウトの二次帳票しか作成することができない。
【０００７】
そこで、２次元形式の表データをユーザが所望するレイアウトをもつ帳票に変更を行うことが可能な帳票作成方法が存在する。（例えば、特許文献１参照）
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１５２３１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の技術は、表形式のデータをインプットとし、その表上の基準位置を設定し、その基準位置からの相対位置情報（上下左右）を設定することで複数レコードにまたがった情報を１レコードと見なすことを可能として、出力対象帳票にレイアウトし帳票を生成するというものである。
【００１０】
従って、インプットとなるデータレコードから相対位置情報を元に自由度の高いデータ切り出しを実現するものであり、元データを自由なレイアウトに配置し、データの表示形態や表示位置をレイアウトに適合するよう自動的に調整された二次帳票を作成することを実現するものではない。
【００１１】
本発明は上記の課題を解決するためになされたものであり、二次帳票の生成元となる帳票データから取り出されたデータを、自由なレイアウト位置に配置するだけでなく、データの表示形態や表示位置をレイアウトに適合するように自動的に調整して配置することで、自由なレイアウトの二次帳票を作成することができる帳票作成装置、情報処理装置、帳票作成方法、情報処理方法、プログラム及びコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するための第１の発明は、帳票から二次帳票を生成する帳票生成装置であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を備えたことを特徴とする帳票生成装置である。
【００１３】
上記目的を達成するための第２の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を備え、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システムである。
【００１４】
上記目的を達成するための第３の発明は、帳票から二次帳票を生成する帳票生成装置の制御方法であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を実行することを特徴とする帳票生成装置の制御方法である。
【００１５】
上記目的を達成するための第４の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を実行し、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システムである。
【００１６】
上記目的を達成するための第５の発明は、帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を機能させることを特徴とするプログラムである。
【００１７】
上記目的を達成するための第６の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、前記クライアント装置を、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を機能させ、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置を、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラムである。
【発明の効果】
【００１８】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減する、という効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す構成図である。
【図２】本発明の実施形態に係る帳票サーバのハードウェアの概略構成を示す構成図である。
【図３】本発明の実施形態に係る帳票生成システムにおける名寄せ帳票の作成に関する全体の流れのフローチャートである。
【図４】本発明の実施形態に係る帳票生成システムにおけるレイアウト編集画面表示処理の詳細を示すフローチャートである。
【図５】本発明の実施形態において名寄せレイアウト編集ボタンなどが配置されるツールバーの一例を示した構成図である。
【図６】本発明の実施形態における検索結果ファイルのデータの構成例を示す構成図である。
【図７】本発明の実施形態における帳票データが持つ文字データの構成例を示す図である。
【図８】本発明の実施形態における帳票データを構成する文字データの集合を模式的に示す図である。
【図９】本発明の実施形態に係る帳票生成システムにおけるフォーム設定処理の詳細を示すフローチャートである。
【図１０】本発明の実施形態においてフォームの設定画面の構成例を示す構成図である。
【図１１】本発明の実施形態においてイメージファイルを選択する画面の構成例を示す構成図である。
【図１２】本発明の実施形態において帳票一覧から帳票を選択する画面の構成例を示す構成図である。
【図１３】本発明の実施形態においてレイアウト編集画面の表示例を示す図である。
【図１４】本発明の実施形態に係る帳票生成システムにおけるデータレイアウト設定処理の詳細を示すフローチャートである。
【図１５】本発明の実施形態において矩形情報フォーマットを模式的に示す図である。
【図１６】本発明の実施形態において矩形情報フォーマットを複数保持する配列を模式的に示す図である。
【図１７】本発明の実施形態に係る帳票生成システムにおける二次帳票作成処理の詳細を示すフローチャートである。
【図１８】本発明の実施形態に係る帳票生成システムにおける罫線解析処理の詳細を示すフローチャートである。
【図１９】本発明の実施形態において罫線の情報を保持する配列のデータ構成例を示す構成図である。
【図２０】本発明の実施形態に係る帳票生成システムにおける矩形内罫線解析処理の詳細を示すフローチャートである。
【図２１】本発明の実施形態において矩形罫線Ｙ座標配列のデータ構成例を示す構成図である。
【図２２】本発明の実施形態において矩形罫線マップ領域のデータ構成例を示す構成図である。
【図２３】本発明の実施形態に係る帳票生成システムにおけるデータ配置処理の詳細を示すフローチャートである。
【図２４】本発明の実施形態においてレイアウト条件データフォーマットの一例を模式的に示す図である。
【図２５】本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理の詳細を示すフローチャートである。
【図２６】本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理の詳細を示すフローチャートである。
【図２７】本発明の実施形態に係る帳票生成システムにおける文字列幅取得処理の詳細を示すフローチャートである。
【図２８】本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理の詳細を示すフローチャートである。
【図２９】本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理の詳細を示すフローチャートである。
【図３０】本発明の実施形態に係る帳票生成システムにおけるＹ座標配置処理の詳細を示すフローチャートである。
【図３１】本発明の実施形態に係る帳票生成システムにおける罫線フィット配置処理の詳細を示すフローチャートである。
【図３２】本発明の実施形態において配置Ｙ座標管理マップ領域のデータ構成例を示す構成図である。
【図３３】本発明の実施形態において罫線間への文字データの配置を模式的に示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００２１】
図１は、本発明に実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す図である。図１において、１０１は、帳票サーバであり、電子帳票（以下、単に帳票と称す）のデータ（帳票データ）を記録し、ネットワーク１０４を介してクライアントＰＣ１０２、１０３に対して、帳票の閲覧や検索等のサービスを提供する。クライアントＰＣ１０２、１０３は、帳票の閲覧及び計算結果の取得を行う者が使用するクライアント端末であり、ネットワーク１０４を介して、帳票サーバ１０１とデータの送受信が可能である。
【００２２】
ネットワーク１０４は、例えばＬＡＮ（Local Area Network）やインターネット等である。なお、図１のネットワーク１０４上に接続される各種端末の構成は飽くまでも一例であり、用途や目的に応じて様々な構成例がある。
【００２３】
次に、図１に示した帳票サーバ１０１のハードウェア構成について、図２を用いて説明する。図２は、図１に示した帳票サーバ１０１のハードウェア構成例を示す図である。図２において、ＣＰＵ（中央演算装置）２０１は、システムバス２０４に接続される各デバイスを統括的に制御するとともに、各種プログラムを実行することで様々な機能を実現する。
【００２４】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリであり、ワークエリア、一時退避領域等として機能する。ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２１の制御プログラムであるオペレーティングシステム（ＯＳ）や、帳票サーバ１０１において様々な機能を実現するためのプログラムが記憶されている。
【００２５】
入力コントローラ２０５は、入力部２０９からの入力を制御する。この入力部２０９としては、例えば、キーボード、マウス等のポインティングデバイスが挙げられる。表示コントローラ２０６は、表示部２１０の表示を制御する。この表示部２１０としては、例えば、ＣＲＴや液晶ディスプレイ等が挙げられる。
【００２６】
外部メモリコントローラ（ＭＣ）２０７は、ブートプログラム、各種のアプリケーション、ユーザファイル、編集ファイルを記憶する外部メモリ２１１へのアクセスを制御する。加えて、各サーバあるいは各クライアントの各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ２１１としては、ハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）、磁気テープドライブ等が挙げられる。
【００２７】
通信Ｉ／Ｆコントローラ２０８は、ネットワーク１０４を介して外部機器との通信制御処理を実行する。本実施形態における帳票サーバ１０１の有する様々な機能を実現するためのプログラム２１２は、外部メモリ２１１に記憶されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行される。さらに、プログラム２１２の処理に用いる帳票ファイル２１３やインデックスファイル２１４も、外部メモリ２１１に記憶されており、これらについての詳細な説明は後述する。
【００２８】
帳票ファイル２１３は、帳票の表示用データ（帳票データ）であり、単数又は複数のファイルによって構成され、単数又は複数のページを含有している。帳票サーバ１０１の内部においては、複数の帳票ファイル２１３のうち同じ種類のものをグループ化して管理しており、それぞれの帳票ファイル２１３はそのグループの中の世代と呼ばれる。
【００２９】
インデックスファイル（領域情報ファイル）２１４は、帳票ファイル２１３のデータの中から、ユーザが指定した領域のデータと、データの位置（座標）を抜き出して蓄えたファイルであり、帳票データの検索処理専用のファイルである。
【００３０】
インデックスファイル２１４のキー文字列には数値、文字、日付の３種類のデータが含まれている。インデックスファイル２１４にはユーザが任意の名称を与えることができ、異なる種類の帳票に関連したインデックスファイルであっても、与えられた名称で管理することが可能である。
【００３１】
なお、クライアントＰＣ１０２、１０３のハードウェア構成も帳票サーバ１０１と同様である。しかし、クライアントＰＣ１０２、１０３におけるプログラム２１２は、帳票を表示するためのクライアントモジュールであり、帳票サーバ１０１のものとは異なる。
【００３２】
また、クライアントＰＣ１０２、１０３において帳票ファイル２１３は、表示するために必要な部分のみを帳票サーバ１０１との通信により受信するもので、クライアントＰＣ１０２、１０３が元来保持していることはないものである点で異なる。また、クライアントＰＣ１０２、１０３では、帳票の表示、もしくは任意の帳票に対する検索条件の指定および二次帳票作成の条件の指定等が可能である。
【００３３】
次に、帳票システムの基本的な処理フローについて、図３を用いて説明する。
【００３４】
図３は、本発明の実施形態に係る帳票システムにおいて二次帳票の作成に関する全体の流れを示すフローチャートである。
【００３５】
ステップＳ１００では、クライアントＰＣ１０２（以下、クライアントＰＣ１０２とクライアントＰＣ１０３とは、同様な役割を有するため、クライアントＰＣ１０２について記載する。）における処理であり、帳票データに対する検索条件設定（具体的な条件を記載）を検知すると、ステップＳ１０２では、帳票サーバ１０１によって、帳票データの検索処理を行う。
【００３６】
そしてステップＳ１０４では、クライアントＰＣ１０２の画面に、ステップＳ１０２における検索処理の結果である検索ヒット結果を表示する。尚、ステップＳ１００からＳ１０４までの処理は、従来から帳票システムで一般的に実現されている処理である。
【００３７】
ステップＳ１０６では、二次帳票を作成するための帳票データを編集するためのレイアウト編集画面を表示する。尚、本ステップにおける処理の詳細は、図４を用いて後述する。
【００３８】
ステップＳ１０８では、二次帳票で利用するフォームを設定する処理である。二次帳票では自由なレイアウトの背景フォームを選択できるものとし、その選択を行う処理である。尚、本ステップにおける処理の詳細は、図９を用いて後述する。
【００３９】
ステップＳ１１０では、ステップＳ１０６において表示したレイアウト編集画面を用いて、具体的な帳票データのレイアウトを設定する処理である。尚、本ステップにおける処理の詳細は、図１４を用いて後述する。
【００４０】
ステップＳ１１２では、ステップＳ１１０までに設定された二次帳票を作成するための情報に基づいて、二次帳票を作成する処理である。尚、本ステップにおける処理の詳細は、図１７を用いて後述する。
【００４１】
ステップＳ１１４では、ステップＳ１１２によって作成した二次帳票をクライアントＰＣ１０２の画面に表示する処理である。尚、本ステップにおける処理は、従来の帳票システムで実現されている処理であり、詳細については説明を割愛する。
【００４２】
次に図４に示すフローチャートを用いて本発明の実施形態に係る帳票性ステムにおけるレイアウト編集画面表示の処理について説明する。
【００４３】
レイアウト編集画面の表示は、クライアントＰＣ１０２と帳票サーバ１０１の双方で処理を担当している。図では左側をクライアントＰＣ１０２での処理、右側を帳票サーバ１０１での処理として表記している。
【００４４】
ステップＳ２００では、名寄せレイアウト編集ボタンが押下されたことを検知したか否かを判定し、検知したと判定した場合は、ステップＳ２０２へ処理を進める。
【００４５】
名寄せレイアウト編集ボタンは、通常ツールバーなどに置かれ、その形態の一例を図５に示す。クライアントＰＣ１０２では、様々な機能を利用するためにツールバーなどに数種類のボタンを配置している。図中で示しているボタンが名寄せレイアウト編集ボタンの例である。
【００４６】
図４に戻り、ステップＳ２００において名寄せレイアウト編集ボタンの押下を検知しない場合は、名寄せレイアウト編集ボタンの押下を引き続き待ち受ける。
【００４７】
ステップＳ２０２では、クライアントＰＣ１０２からプレビューデータの作成要求を帳票サーバ１０１に対して行い、ステップＳ２０４では、帳票サーバ１０１がプレビューデータの作成要求に従い、プレビューデータを取得するために、空のページイメージを生成している。
【００４８】
ステップＳ２０６では、ステップＳ１００において設定された検索条件から、検索領域の上限のＹ座標と下限のＹ座標を取得して、その座標を変数Ｙ１と変数Ｙ２に記憶している。通常、帳票システム１００における検索では、検索対象としたい領域を指定し、検索を行う。ここで取り出している上限のＹ座標と下限のＹ座標は、その検索対象として指定した領域の座標のことを示している。
【００４９】
ステップＳ２０８では、検索結果ファイルをオープンする。検索結果ファイルとは、ステップＳ１０２の検索処理において検索した結果、ヒットしたレコード（以下、検索ヒットレコード）をファイルとして帳票サーバ１０１が保持しているものである。但し、検索ヒットレコードは、ファイルに記憶しなくとも帳票サーバ１０１が備えたメモリなどに記憶していてもよい。
【００５０】
図６を用いて検索結果ファイルの内容を説明する。検索結果ファイルには検索ヒットレコードが記憶されている一例が示されおり、検索ヒットレコードは、１件あたり、図示するように検索対象となった帳票データを有する帳票ＩＤ、ページ番号、検索ヒット上端Ｙ座標、検索ヒット下端Ｙ座標という情報からなり、その検索結果ファイルは、検索ヒット数分のレコードを保持している。
【００５１】
ステップＳ２１０は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ２１２では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に１レコードを取得する。
【００５２】
ステップＳ２１４では、検索ヒットレコードの帳票ＩＤから特定される検索元帳票が既に帳票生成システム１００においてファイルオープンしているか否かを確認するが、これは、無駄にファイルをオープンしないための処理であり、同一ファイルがオープンされていなければ、ステップＳ２１６により検索元帳票ファイルをオープンし、ステップＳ２１８へ処理を進める。
【００５３】
Ｓ２１８では、検索元帳票ファイルから、検索ヒットレコードの１レコードに該当する帳票データを取り出す。検索ヒットレコードの持つページ番号と検索ヒット上端Ｙ座標と検索ヒット下端Ｙ座標とから帳票データを抽出することは容易である。
【００５４】
尚、帳票データについて、図７を用いて説明する。帳票データはさまざまなデータを持つが本発明で重要となるのは文字データである。文字データは、図に示すとおり、文字の座標Ｘ、座標Ｙ、フォント情報、文字という情報である。また、帳票データは、図８に示すように、文字データの集合であると言える。
【００５５】
ステップＳ２１８において取り出す帳票データも文字データの集合であり、帳票データから検索ヒットＹ座標の上端と下端の間に挟まれるＹ座標を持つ文字データを取り出せばよい。
【００５６】
ステップＳ２２０では、ページイメージに対して変数Ｙ１に記憶してある座標に取り出した文字データを配置する。
【００５７】
ステップＳ２２２では、ステップＳ２２０において配置した文字データの持つ行ピッチの値をＹ１に加算して次の検索ヒットレコードに該当する文字データ（帳票データ）を配置するＹ座標を算出している。
【００５８】
ステップＳ２２４では、変数Ｙ１と変数Ｙ２を比較し、変数Ｙ１が変数Ｙ２より小さければ、Ｓ２２６のループ終端に達し、ステップＳ２１０のループ先頭に戻って処理を継続する。変数Ｙ１が変数Ｙ２以上になれば、１ページ分の帳票に対するデータを配置する領域にデータを埋め尽くしたと判断し、ループを抜ける。
【００５９】
ステップＳ２２８では、生成した１ページ分のページデータを帳票サーバ１０１からクライアントＰＣ１０１に送信し、ステップＳ２３０では、ステップＳ２２８において送信されたページデータをクライアントＰＣ１０２が受信し、クライアントＰＣ１０２の画面に表示する。尚、表示されるページデータは、背景フォームと合成されていないため、背景に罫線などはなく、文字データのみのページイメージで表示される。
【００６０】
次に図９に示すフローチャートを用いて本発明の実施形態に係る帳票生成システム１００におけるフォーム設定処理について説明する。
【００６１】
ステップＳ３００では、図５に示す説明したボタンと同様のフォーム選択ボタン（不図示）が押下されたか否かを検知し、押下を検知しない場合は、引き続き押下を待ち受け、押下されたことを検知した場合は、ステップＳ３０２へ処理を進める。
【００６２】
ステップＳ３０２では、イメージファイルパス保存領域、流用フォーム帳票ID保存領域、イメージ保存領域なる領域を確保し、初期化を行う。
【００６３】
ステップＳ３０４では、図１０に示す名寄せフォーム設定ダイアログ３００をクライアントＰＣ１０２の画面に表示する。
【００６４】
このダイアログでは、イメージファイルを指定するか、登録済み帳票のフォームを利用するかの何れかを選択することが可能であり、本ステップでは、イメージファイルの指定が選択されたことを検知した時、つまりファイル選択ボタン３０２が押下されたことを検知することにより、ステップＳ３０８へ処理を進め、ステップＳ３０８では、図１１に示すようなフォーム選択ダイアログ３２０を表示して、クライアントＰＣ１０２に存在するイメージファイルを選択させることができる。
【００６５】
図１１に示すように、本実施形態では、form1.emfという拡張メタファイルが選択されているが、ユーザが選択するファイルは、ビットマップイメージやJPEGイメージなどの画像ファイルや、EMF(拡張メタファイル)やSVG(Scalable Vector Graphics)などの描画命令を持つベクタイメージファイル等を選択することができる。またその他のフォーム作成ツールなどで生成されたファイルを選択してもよい。
【００６６】
ここでファイルが選択された状態のままで保存ボタン３２２が押下されたことを検知した時に、選択されたファイルが確定し、確定したファイルの記憶領域に関するファイルパスを取得して、取得したファイルパスをファイルパス表示欄３０４へ表示する。
【００６７】
本ステップで名寄せフォーム設定ダイアログ３００に備えられたＯＫボタン３１０が押下されたことを検知した後、ステップＳ３１０では、ファイルパス表示欄３０４に表示されたファイルパスを取得し、次のステップＳ３１２では、ステップＳ３１０において取得したファイルパスをイメージファイルパス保存領域に記憶する。
【００６８】
ステップＳ３１４では、ステップＳ３１０において取得したファイルパスを用いてイメージファイルを読み込み、イメージ保存領域に記憶した後、ステップＳ３４０へ処理を進める。
【００６９】
また、ユーザが登録済み帳票のフォームを利用する場合は、ステップＳ３０６において、帳票選択ボタン３０６が押下されたことを検知して、ステップＳ３１６へ処理を進め、ステップＳ３１６では、帳票サーバ１０１へ帳票の一覧を要求する。
【００７０】
ステップ３１８では、クライアントＰＣからの要求に応じて、帳票サーバ１０１は、帳票一覧データを送信し、ステップＳ３２０では、クライアントＰＣ１０２は、受信した帳票一覧データを利用して、図１２に示す帳票一覧画面に帳票一覧の表示を行う。
【００７１】
ステップＳ３２２では、ユーザによって帳票一覧画面に表示された帳票から該帳票が選択されたか否かを検知し、つまり帳票がマウスクリックなどにより選択されたことを検知した場合は、ステップＳ３２４へ処理を進める。
【００７２】
ステップＳ３２４では、クリックされた帳票に応じた帳票を一意に識別するための帳票ＩＤを取得し、名寄せフォーム設定ダイアログ３００の帳票ＩＤ表示欄３０８に表示し、ＯＫボタン３１０が押下されたことを検知した後、ステップＳ３２６では、クライアントＰＣ１０２は、名寄せフォーム設定ダイアログ３００に表示された帳票ＩＤを取得し、取得した帳票ＩＤの持つフォームイメージを取得するために、帳票サーバ１０１に該帳票ＩＤの情報を送信して要求を行う。
【００７３】
ステップＳ３２８では、帳票サーバ１０１は、ステップＳ３２６において送信されたフォームイメージ取得の要求を受信し、ステップ３３０では、受信した帳票ＩＤに該当する帳票データを特定し、特定した帳票データが保有しているフォームイメージを取得して、ステップＳ３３２では、帳票サーバ１０１０は、ステップＳ３３０において取得したフォームイメージをクライアントＰＣ１０２に送信している。
【００７４】
ステップＳ３３４では、クライアントＰＣ１０２は、ステップＳ３３２において送信されたフォームイメージを受信し、ステップＳ３３６では、クライアントＰＣ１０２は、ステップＳ３３４で受信したフォームイメージをイメージ保存領域に記憶する。
【００７５】
ステップＳ３３８では、ステップＳ３２４において取得した帳票ＩＤを流用フォーム帳票ＩＤ保存領域に記憶し、その後、イメージファイル指定の際と同様に、ステップＳ３４０へ処理を進める。
【００７６】
ステップＳ３４０では、イメージ保存領域に記憶したフォームイメージをレイアウト編集画面に背景として表示する。
【００７７】
ここで、フォームイメージと文字データが合成されたレイアウト編集画面が表示されていることになるが、図１３に示すようにフォームイメージが持つ罫線と、文字データはきれいに一致していない状況となる。このレイアウト編集画面を用いたステップＳ１１０によるデータレイアウト処理により、指定したフォームイメージに適切に文字データを配置する条件を設定する。
【００７８】
図１４に示すフローチャートを用いて本発明の実施形態に係る帳票システムにおけるデータレイアウト設定の処理を説明する。
【００７９】
ステップＳ４００では、矩形情報配列を確保し初期化し、ステップＳ４０２では、クライアントＰＣ１０２に対して、ユーザによってなされる任意のアクションを検知するまで待機する。ここでいうアクションとは、マウスポインタのクリックや、マウスのクリック＆ムーブ等により矩形領域が作成される、等のアクション示す。
【００８０】
ステップＳ４０４では、マウスのクリックを検知した際に、例えば、図５に示すようなツールバーのモードの切り替えボタンが押された、または名寄せ作成ボタンが押されたか、またはその他かを判定している。尚、モードには、矩形作成を行うモードと、作成された矩形同士を移動元から移動先というように関連付けを行うモードがある。
【００８１】
モードの切り替えボタンが押下されたことを検知した場合、ステップＳ４０６へ処理を進め、名寄せ作成ボタンが押下されたことを検知した場合、ステップＳ４４２へ処理を進める。
【００８２】
ステップＳ４０６では、前述したようにモードには、２通りのモードが存在するため、何れのモードにて処理を行うのかをユーザに選択させるため、矩形作成モードあるいは矩形関連付モードを選択可能とするボタン等（不図示）を表示し、矩形作成モードが選択されたことを検知した場合、ステップＳ４０８へ処理を進め、矩形関連付モードが選択されたことを検知した場合、ステップＳ４２２へ処理を進める。
【００８３】
尚、本ステップにおけるモードの切り分けは、前述のようなモードを選択するためのボタン等を表示せず、既に作成された矩形が選択された（矩形関連付モード）、あるいは、新規で矩形が作成された（矩形作成モード）等の操作によってモードを切り分けても良い。
【００８４】
ステップＳ４０８では、矩形が作成される処理を待機しており、矩形が作成されたことを検知した場合は、ステップＳ４１０へ処理を進め、それ以外の操作の場合は、ステップＳ４０２へ処理を進める。
【００８５】
ステップＳ４１０では、作成された矩形の座標Ｘ、座標Ｙ、幅Ｗｉｄｔｈ、高さＨｅｉｇｈｔを取得し、次のステップＳ４１２では、矩形情報保存領域Ｒを生成する。
【００８６】
ここで矩形情報保存領域Ｒとは、図１５で示すような情報を保持しており、矩形ＩＤは、作成する矩形毎にユニークとなるよう採番されたＩＤを記憶する領域であり、ここでは１以上の整数からユニークなＩＤを割り当てるものとしている。
【００８７】
また、Ｘ、Ｙ、Ｗ、Ｈは、それぞれ順に矩形左上点のＸ座標、矩形左上点のＹ座標、矩形の幅、矩形の高さを記憶する領域である（本実施形態では、左上の座標から右がＸ座標の増加、下がＹ座標の増加、といったような座標からなる。）。
【００８８】
移動元矩形ＩＤは、当該矩形が帳票データをレイアウトするに際し、帳票データが元々配置されている移動先矩形を示すものとして設定された場合に、移動元矩形の矩形ＩＤを記憶する領域である。この領域は初期状態を０として設定しておくことで、矩形ＩＤが０である矩形は、移動先矩形として設定されていないと判断することができる。
【００８９】
ステップＳ４１４では、新規作成された矩形用のユニークなＩＤを採番し、矩形情報保存領域Ｒの矩形ＩＤに設定し、同様にステップＳ４１６によって、ステップＳ４１０において取得した座標値をＲに設定する。ステップＳ４１６に示すＲ．Ｘは、矩形情報保存領域ＲのＸ、Ｒ．Ｙは、矩形情報保存領域ＲのＹ、Ｒ．Ｗは、矩形情報保存領域ＲのＷ、Ｒ．Ｈは、矩形情報保存領域ＲのＨを示している。
【００９０】
以降も同様に、Ｒ．Ｘ、Ｒ．Ｙ、Ｒ．Ｗ、及びＲ．Ｈに示すように所定の情報に対して、該情報の陽を示す場合には、「所定の情報.要素」といったように記載を簡略化して説明を行っている。
【００９１】
ステップＳ４１８では、前述した通り、矩形が新規で作成されたものであるため、移動元矩形ＩＤの領域には、初期状態として０を設定する。
【００９２】
ステップＳ４２０では、新規生成された矩形情報保存領域Ｒを矩形情報配列に追加している。この配列は、図１６に示すように、図１５の矩形情報を複数保持する配列である。その後、ステップＳ４０２へ処理を進め、アクションを検知する処理を行う。
【００９３】
ステップＳ４２２では、矩形関連付けモードとなった場合の処理を示しており、既に作成済みの矩形がクリックにより選択されるのを待ち受けている。ここで、既に移動先矩形と設定されていない矩形をクリックした場合には、移動元矩形を選択したと判断し、ステップＳ４２４へ進める。それ以外の場合は、ステップＳ４０２へ処理を進める。
【００９４】
ステップＳ４２４では、図１６に示す矩形情報配列からクリックされた矩形の情報を取得し、ステップＳ４２６では、ステップＳ４２４において取得した矩形情報から、矩形の中心点の座標を算出する。
【００９５】
ステップＳ４２６に示すＲ．Ｘ、Ｒ．Ｙ、Ｒ．Ｗ、及びＲ．Ｈは、矩形情報保存領域Ｒの各要素に対応していることを前述したが、矩形情報配列は、矩形情報保存領域Ｒから構成されているため、本ステップでは、矩形情報配列から矩形の情報を取得しているが、当然のことながら、矩形情報保存領域ＲのＲ．Ｘ、Ｒ．Ｙ、Ｒ．Ｗ、及びＲ．Ｈと矩形情報配列の矩形の情報とは、同一内容を示しているため、同一の符号を用いて説明している。
【００９６】
ステップＳ４２８では、求めた移動元矩形の中心点からマウスポインタ座標に向けての矢印表示を行う。これは、移動先矩形を設定する操作を行うに際し、移動元矩形として何を選択したか、どの方向へ移動するか？などを視覚的にユーザに視認させるためである。
【００９７】
ステップＳ４３０からステップＳ４３４では、ステップＳ４２２同様に作成済の矩形をクリックにより選択されるのを待ち受けているが、ここでは移動先矩形として選択されていない矩形をクリックした場合にのみ、次のステップＳ４３６へ処理を進める。移動先矩形として選択されていないことは、矩形情報配列の移動元矩形ＩＤが０であることによって、判断が可能である。
【００９８】
ステップＳ４３６では、ステップＳ４２６と同様に移動先矩形の中心点の座標を算出し、次のステップＳ４３８では、移動元矩形の中心座標から移動先矩形の中心座標への矢印を表示する。もちろんこのタイミングでマウスポインタへの矢印の表示は、クリアする。
【００９９】
ステップＳ４４０では、移動元矩形ＩＤを矩形情報保存領域Ｒの移動元矩形ＩＤに設定し、矩形情報配列の移動元矩形ＩＤを更新することで、１通りの移動設定は完了である。同様な方法で、ユーザは、矩形の関連付けを複数行うことが可能である。
【０１００】
ステップＳ４０４において、モードの切り替えを行わないと判定した場合は、ステップＳ４４２へ処理を進め、ステップＳ４４２では、名寄せ作成ボタンが押下されたか否かを判定し、名寄せ作成ボタンが押下されていない場合は、ステップＳ４０２へ処理を進めるが、押下されたことを検知した場合は、ステップＳ４４４へ処理を進める。
【０１０１】
ステップＳ４４４では、レイアウトの設定を行う対象とすべく矩形の移動元、移動先の関連付け設定が１つ以上設定されているか否かを判定し、設定されていると判定した場合は、データレイアウト設定処理が終了となり、ステップＳ１１２へ処理を進め、設定されていないと判定した場合は、ステップＳ４０２へ処理を進める。尚、設定が行われたか否かについては、矩形情報配列の移動元矩形ＩＤに０以外のデータが設定されているか否かによって判定し、０以外のデータが設定されている場合は、レイアウト設定が完了していると判定し、０以外のデータが設定されていない場合は、レイアウト設定が完了していないと判定することができる。
【０１０２】
次に図１７に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける名寄せ帳票作成処理を説明する。
【０１０３】
ステップＳ５００では、クライアントＰＣ１０２から帳票サーバ１０１へ名寄せ帳票作成の指示に際して、レイアウト条件を送信する。送信するレイアウト条件データの一例を図２４に示す。
【０１０４】
レイアウト条件は、前記の矩形情報配列、及びフォーム情報を送信する。ここでフォーム情報は、ステップＳ１０８においてイメージファイル指定がなされた場合は、フォーム種別にイメージファイルを示す２、イメージファイルのサイズ、イメージ保存領域に保存されているイメージファイルを送信し、一方、登録済みの帳票のフォームを利用するとした場合は、フォーム種別に帳票のフォームを流用することを示す１、流用フォーム帳票ＩＤ保存領域に記憶した帳票ＩＤを送信する。
【０１０５】
ステップＳ５０２では、帳票サーバ１０１は、ステップＳ５００において送信されたレイアウト条件を受信し、ステップＳ５０４では、後の処理のために、改ページフラグの領域確保及び、フラグをＴＲＵＥでの初期化、またヒットデータ配列Ｈの領域を確保している。更に、ステップＳ５０６では、フォームイメージ領域Ｆを確保している。
【０１０６】
ステップＳ５０８では、ステップＳ５０２において受信したレイアウト条件に含まれるフォーム情報が、イメージファイル指定か、帳票のフォームを流用するのかを判定しており、具体的には、レイアウト条件のフォーム種別によって判定を行っている。
【０１０７】
帳票のフォームを流用するかを判定した場合、つまりフォーム種別が１の場合、ステップＳ５１０へ処理を進め、ステップ５１０では、ステップＳ５０２において受信したレイアウト条件に含まれる流フォーム帳票ＩＤに該当する帳票ＩＤを有する帳票からフォームイメージを取得し、イメージファイル指定であった場合、つまりフォーム種別が２の場合、ステップＳ５１２へ処理を進める。
【０１０８】
ステップＳ５１２では、ステップＳ５０８においてイメージ指定と判定した場合は、ステップＳ５０２において受信したレイアウト条件に含まれるイメージファイルをフォームイメージ領域Ｆにフォームデータとして記憶し、ステップＳ５０８において、帳票のフォームを流用すると判定した場合、ステップＳ５１０に於いて取得したフォームイメージをフォームイメージ領域Ｆにフォームデータとして記憶する。
【０１０９】
ステップＳ５１４では、ステップＳ５１２においてフォームイメージ領域Ｆに記憶したフォームデータに含まれる罫線情報を解析する処理であり、本ステップにおける詳細の処理については、図１８を用いて後述する。
【０１１０】
ステップＳ５１６では、ステップＳ５１４において解析された罫線情報をレイアウト条件である矩形情報と交錯する罫線を矩形毎に抽出する矩形内罫線解析処理を行うが、本ステップにおける詳細の処理については、図２０を用いて後述する。
【０１１１】
ステップＳ５１８では、検索結果ファイルをオープンし、ステップＳ５２０は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ５２２では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に１レコードを取得する。尚、ここで取得する検索結果は、ステップ２１２において図６を用いて説明したものと同一内容である。
【０１１２】
ステップＳ５２４では、改ページフラグがＴＲＵＥであるかＦＡＬＳＥであるかを判定している。このループにおいてステップＳ５２４を初めて処理する場合は、改ページフラグの初期値よりＴＲＵＥとして処理される。
【０１１３】
ＴＲＵＥの場合は、改ページが発生したとみなし、ステップＳ５２６において、空のページイメージを生成する。これは単に１ページ分の文字データやフォームデータを記憶するためのメモリ領域の確保を意味している。
【０１１４】
ステップＳ５２８では、フォームイメージ領域Ｆに記憶されているフォームデータをページの背景に設定する。
【０１１５】
ステップＳ５３０では、改ページフラグを一旦ＦＡＬＳＥとし、次の改ページに備える。
【０１１６】
ステップＳ５３２では、検索ヒットレコードの１レコードの帳票ＩＤに該当する帳票がオープン済みであるか否かを確認する。これは無用に二重で帳票がオープンされることを避ける処理である。オープンされていない場合は、ステップＳ５３４にて、当該１レコードの帳票ＩＤを有する検索元帳票ファイルをオープンし、オープンされている場合は、ステップＳ５３６へ処理を進める。
【０１１７】
ステップＳ５３６では、オープンされている検索元帳票ファイルから、検索結果に対応する文字データをヒットデータ配列Ｈに記憶する。この処理は、ステップＳ２１８で説明した処理と同一内容あり、図８に示したデータ構造で、ヒットデータ配列Ｈは構成される。
【０１１８】
ステップＳ５３８では、ヒットデータ配列Ｈに記憶された文字データをレイアウト条件に従って、自動的に表示形態、表示サイズなどを調整して帳票の各ページに配置する処理であるが、本ステップにおける処理の詳細については図２３を用いて後述する。
【０１１９】
ステップＳ５４０は、ループ終端であり、すべての検索ヒットレコード数分の処理が終了した場合に、ループを抜ける。このタイミングで帳票サーバ１０１に名寄せ帳票のイメージが完成する。
【０１２０】
ステップＳ５４２では、ステップＳ５４０において生成した名寄せ帳票データをクライアントＰＣ１０２へ送信し、ステップＳ５４４では、ステップＳ５４２において送信された、名寄せ帳票データを受信した後、ステップＳ１１４において、クライアントＰＣ１０２に名寄せ帳票を表示する。
【０１２１】
次に図１８に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける罫線解析処理を説明する。
【０１２２】
ステップＳ６００では、フォームイメージ領域Ｆに記憶されているフォームデータが、描画命令を持つ前述のＥＭＦやＳＶＧ、その他のベクターグラフィックスか否かを判定し、ベクターグラフィックスであると判定した場合は、ベクターグラフィックスであると判定しない場合は、処理を終了する。
【０１２３】
ステップＳ６０２では、罫線配列Ｋを確保、初期化するが、罫線配列Ｋの内容については、後述する。
【０１２４】
ステップＳ６０４では、ベクターグラフィックスを読み込み、命令数分ループ処理を開始することを示しており、ループの回転の都度、順次命令を読み込む。
【０１２５】
ステップＳ６０６では、命令が線分描画命令であるか否かを判定し、線分描画命令であると判定した場合は、ステップＳ６１０へ処理を進め、線分描画命令であると判定しない場合は、ステップＳ６１６へ処理を進める。尚、線分描画命令とは、直線を描画するための命令を指す。
【０１２６】
ステップＳ６０８では、ステップＳ６０６における線分描画命令が平行線分であるか否かを判定し、平行線分であると判定した場合は、ステップＳ６１２へ処理を進め、平行線分であると判定しない場合は、ステップＳ６１４へ処理を進める。
【０１２７】
本ステップにおける平行線分であるか否かの判定とは、表現を変えると、横罫線であるか否かを判定している。この判定は、線分の始点と終点が同じＹ座標を持つかを評価することで簡単に判定できる。
【０１２８】
ステップＳ６１２では、平行線分と判定された線分の始点と終点のＸ座標、Ｙ座標を罫線配列Ｋに追加記憶してステップＳ６１４に示すループ終端に進む。
【０１２９】
尚、罫線配列Ｋの内容を図１９に示す。罫線配列Ｋの配列の１要素には前記した線分の始点と終点のＸ座標、Ｙ座標が記憶されるように構成されている。
【０１３０】
ステップＳ６１６では、命令が多角形描画の命令であるか否かを判定し、多角形描画の命令であると判定した場合、ステップＳ６１０へ処理を進め、多角形描画の命令であると判定しない場合、ステップＳ６１４へ処理を進める。
【０１３１】
多角形を処理するのは、フォームの罫線を表現するために、線分だけでなく、四角形なども用いられることがあるためである。
【０１３２】
ステップＳ６１８では、多角形を複数の線分に分割する。多角形の描画命令では、それぞれの頂点のＸ座標、Ｙ座標を持つため、複数の線分に容易に分割することが可能である。
【０１３３】
ステップＳ６２０は、分割した線分数分のループ上端を示しており、ステップＳ６２２では、ステップＳ６１８において分割した線分を順次読み込み、ステップＳ６２４では、線分が平行線分であるか否かを判定する。
【０１３４】
平行線分であると判定した場合は、ステップＳ６２６へ処理を進め、平行線分であると判定しない場合は、ステップＳ６２８に示すループ終端に進む。尚、ステップＳ６２４及びステップＳ６２６における処理は、ステップＳ６１０及びステップＳ６１２で説明した処理と同一内容である。
【０１３５】
この一連の罫線解析処理によって、フォームデータから平行線分の情報のみを抜きだして記憶する罫線配列Ｋを生成できる。
【０１３６】
次に図２０に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける矩形内罫線解析処理を説明する。
【０１３７】
ステップＳ７００では、罫線配列Ｋについて、１つ以上の要素が記憶されているか否かを判定し、記憶されていると判定した場合は、ステップＳ７０２へ処理を進め、記憶していると判定しない場合は、処理を終了する。
【０１３８】
これは、フォームデータがベクターグラフィックスでなかった場合や、ベクターグラフィックスであった場合でも、横罫線を表す平行線分が発生しなかった場合を判断するためである。この場合、罫線配列Ｋには、１つも要素が記憶されていないことになる。
【０１３９】
ステップＳ７０２では、後の処理で利用する矩形罫線Ｙ座標配列を記憶するための矩形罫線マップ領域Ｍを生成する。矩形罫線Ｙ座標配列と矩形罫線マップ領域Ｍの詳細については後述する。
【０１４０】
ステップＳ７０４では、矩形情報領域Ａと罫線情報領域Ｂを確保する。
【０１４１】
ステップＳ７０６は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【０１４２】
ステップＳ７０８では、ステップＳ５００において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Ａに記憶する。矩形情報配列および矩形情報領域Ａは、それぞれ前述した図１６、図１５で例示したデータを持つ。
【０１４３】
ステップＳ７１０では、矩形情報領域Ａが持つ移動元矩形ＩＤが０より大きい値が設定されているか否かを判定し、０の場合は、移動元矩形が設定されていないことから、移動先矩形ではないと判定でき、図２０における本処理では、移動先矩形と交差する線分の情報を解析することを目的とするため、この場合は、ループ終端であるステップＳＳ７３０へ処理を進め、次のループ処理へ進み、移動元矩形ＩＤが設定されている場合は、ステップＳ７１２へ処理を進める。
【０１４４】
ステップＳ７１２では、矩形罫線Ｙ座標配列Ｃを生成する。矩形罫線Ｙ座標配列は、図２１にて示すように、矩形の線分のＹ座標のみを要素とする配列である。ここに記憶する情報は、前記の平行線分から抽出されるＹ座標であり、平行線分は同じＹ座標の始点、終点をもつことから一つのＹ座標を持つ領域のみを要素とすることで目的を達成できる。また、この配列は後の処理で、Ｙ座標をキーに昇順でソートされ、活用される。
【０１４５】
ステップＳ７１４は、ステップＳ５１４において生成した罫線配列Ｋに記憶された要素数分のループ上端である。
【０１４６】
ステップＳ７１６では、罫線配列Ｋから次の要素を罫線情報領域Ｂに記憶し、ステップＳ７１８では、矩形情報領域Ａ及び罫線情報領域Ｂを用いて、矩形の領域と罫線が交差するかを判定し、矩形の領域と罫線が交差すると判定した場合は、ステップＳ７２０へ処理を進め、矩形の領域と罫線が交差すると判定しない場合は、ステップＳ７２２へ処理を進める。
【０１４７】
本ステップは、矩形情報領域Ａの持つ、Ｘ、Ｙ、Ｗ、Ｈから定まる各頂点の座標と、罫線情報Ｂが持つＸ１、Ｙ１、Ｘ２、Ｙ２の値を用いて以下の条件が成り立つことで、矩形の領域と罫線が交差することを判定できる。
【０１４８】
Ａ．Ｘ≧Ｂ．Ｘ１、かつＡ．Ｘ＋Ａ．Ｗ≦Ｂ．Ｘ２、かつＡ．Ｙ≦Ｂ．Ｙ１、かつＡ．Ｙ＋Ａ．Ｈ≧Ｂ．Ｙ１
【０１４９】
ステップＳ７２０では、矩形罫線Ｙ座標配列Ｃに線分のＹ座標であるＢ．Ｙ１を追加記憶し、ステップＳ７２２は、ループ終端を示している。
【０１５０】
ステップＳ７２４では、ステップＳ７１４からステップＳ７２２までのループで構築された矩形罫線Ｙ座標配列Ｃに記憶された要素が存在するか否かを判定し、要素が存在しない場合は、矩形と罫線が交差しなかったと判断され、ステップＳ７３０へ処理を進め、次のループ処理を行う。
【０１５１】
要素が存在した場合は、ステップＳ７２６へ処理を進め、矩形罫線Ｙ座標配列Ｃの要素を前述の通り、昇順でソートする。
【０１５２】
ステップＳ７２８では、矩形罫線マップ領域Ｍに処理中の矩形情報領域Ａの持つ矩形ＩＤをキーにして、矩形罫線Ｙ座標配列Ｃを追加記憶する。
【０１５３】
ここで、図２２を用いて、矩形罫線マップ領域Ｍを説明する。図２２では、マップ構造を図示しているが、ここでは、矩形ＩＤをキーに、バリューに矩形罫線配列Ｃとしてマップ構造を構成している。
【０１５４】
一般にマップ構造は、ユニークなキーに対するデータを持つ方法である。このようにして、記憶された矩形罫線Ｙ座標配列Ｃは、矩形ＩＤを用いて取り出すことができる。後述する処理において、この矩形罫線マップ領域Ｍから矩形ＩＤをキーに矩形罫線Ｙ座標配列Ｃを取り出している。
【０１５５】
こうして、ループ処理が終了すると矩形内罫線解析処理の終了となり、移動先矩形と交差する横罫線の情報が矩形罫線マップ領域Ｍに構築されたことになる。
【０１５６】
次に図２３に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにけるデータ配置処理を説明する。データ配置処理は、帳票データを新しいレイアウトに適合するように調整して配置する処理である。
【０１５７】
ステップＳ８００では、矩形情報領域Ａ、矩形情報領域Ｂ、文字データ配列Ｋ、平行移動量MoveX 領域、配置Ｙ座標管理マップ領域ＭＹを確保する。
【０１５８】
ステップＳ８０２は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【０１５９】
ステップＳ８０４では、ステップＳ５００において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Ａに記憶する。矩形情報配列および矩形情報領域Ａは、それぞれ前述した図１６、図１５で例示したデータを持つ。
【０１６０】
ステップＳ８０６では、矩形情報領域Ａの持つ移動元矩形ＩＤに値が設定されているかによって、移動先を表す矩形情報であるか否かを判定し、移動先を表す矩形情報でない場合は、ステップＳ８３２へ処理を進め、移動先を表す矩形情報である場合は、ステップＳ８０８へ処理を進める。
【０１６１】
ステップＳ８０８では、矩形情報配列から矩形情報領域Ａの持つ移動元矩形ＩＤと一致する矩形ＩＤを持つ矩形情報を矩形情報領域Ｂに記憶する。これでＡが移動先矩形情報、Ｂが移動元矩形情報となる。
【０１６２】
Ｓ８１０では、処理中の検索結果に該当するヒットデータが保持されているヒットデータ配列Ｈから、移動元であるＢで示される矩形と交わる文字列を移動対象文字列Ｎとして抽出する移動データ抽出処理を行っている。尚、本ステップにおける詳細な処理については、図２５を用いて説明する。
【０１６３】
ステップＳ８１２では、平行移動量ＭｏｖｅＸ領域と文字データＣ領域を確保して、初期化する。平行移動量ＭｏｖｅＸは、移動元Ｂと移動先Ａの平行移動距離を記憶する変数である。
【０１６４】
また、文字データＣは、ステップＳ８１０において抽出された移動文字データ配列Ｎの要素を取得して記憶するための領域である。尚、文字データＣは、図７で示した文字データである。また、移動文字データ配列Ｎに記憶した要素は、図８で示した文字データの集合である。
【０１６５】
ステップＳ８１４では、平行移動量ＭｏｖｅＸに、以下の式１に示す計算式の演算結果を代入することで、平行移動距離を記憶している。
【０１６６】
平行移動量ＭｏｖｅＸ  ←  矩形情報領域Ａ．Ｘ
― 矩形情報領域Ｂ．Ｘ    （式１）
【０１６７】
ステップＳ８１６は、ステップＳ８１０において抽出された移動文字データ配列Ｎの要素数分のループ上端を示している。
【０１６８】
ステップＳ８１８では、移動文字データ配列Ｎに記憶された次の要素を文字データＣへ記憶する。
【０１６９】
ステップＳ８２０では、ステップＳ８１８において記憶した文字データＣの持つＸ座標（Ｃ．Ｘと示す）以下の式２の計算式の演算結果を代入することで文字データＣを移動先矩形領域Ａに向けて、平行移動している。
【０１７０】
文字データＣ．Ｘ  ←  文字データＣ．Ｘ  ＋  平行移動量ＭｏｖｅＸ    （式２）
【０１７１】
ステップＳ８２２では、移動文字データ配列Ｎに記憶されたステップＳ８１８で取得した現在の要素を文字データＣで更新する。
【０１７２】
ステップＳ８２４は、ステップＳ８１６から始まるループの終端である。移動文字データ配列Ｎに含まれる文字データすべての平行移動が終わるまで処理を続ける。
【０１７３】
ステップＳ８２６では、移動文字データ配列Ｎで表わされる文字列の文字列幅を移動先矩形に関する矩形情報領域Ａの幅に収まるようにフィットする文字列幅フィット処理である。尚、本ステップにおける詳細な処理については、図２６を用いて説明する。
【０１７４】
ステップＳ８２８は、移動文字データ配列Ｎで表わされる文字列を移動先矩形領域Ａに適切に配置するためにＹ座標を調整し配置するＹ座標配置処理である。本ステップにおける詳細な処理については、図２７を用いて説明する。
【０１７５】
ステップＳ８０３では、矩形情報領域Ａによって示される矩形に対して適切に配置された移動文字データ配列Ｎをページイメージに追加している。
【０１７６】
ここまでの、ステップＳ８０２からステップＳ８３２までのループにおける処理をすべて行うことで、複数設定される移動先の矩形に対して、検索ヒットレコードの帳票データを適切に配置することができる。
【０１７７】
次に図２５に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理を説明する。移動データ抽出処理は、処理中の検索結果に該当する検索ヒットデータが保持されているヒットデータ配列Ｈから、移動元である矩形情報領域Ｂで示される矩形に内包する文字データを移動対象文字として抽出する処理である。
【０１７８】
ステップＳ９００では、文字データＭ、移動文字データ配列Ｎを確保、初期化する。
【０１７９】
ステップＳ９０２では、ステップＳ５３６においてヒットデータ配列Ｈに記憶した要素数分のループ上端である。
【０１８０】
ステップＳ９０４では、ステップＳ５３６においてヒットデータ配列Ｈに記憶した次の要素を文字データＭに記憶し、ステップＳ９０６では、文字データＭの文字位置を取得する。
【０１８１】
ステップＳ９０８では、文字データＭが、矩形情報領域Ｂの内部に位置するか否かを判定し、内部に位置していると判定した場合は、ステップＳ９１０へ処理を進め、内部に一致していると判定しない場合は、ステップＳ９１２へ処理を進める。本ステップ、ステップＳ９０６において取得した文字位置と矩形情報領域Ｂから特定される矩形の座標を比較することで容易に判定できる。
【０１８２】
ステップＳ９１２では、移動文字データ配列Ｎに文字データＭを追加記憶する。その後、ステップＳ９１２に示すループ終端に至る。ステップＳ９０２に示すループ終了条件を満たして本処理を終えることで移動文字データ配列Ｎが構築される。
【０１８３】
次に図２６に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理を説明する。
【０１８４】
ステップＳ１０００では、文字列幅ＭＯＪＩＷ、超過幅ＯＶＥＲＷ、文字データＣ、及び文字平行移動量ＭＯＶＥを確保する。
【０１８５】
ステップＳ１００２では、矩形情報領域Ａから矩形の幅を示すＡ．Ｗを取得する。
【０１８６】
ステップＳ１００４では、文字幅取得処理を実行し、移動文字データ配列Ｎから文字列幅ＭＯＪＩＷを取得する。尚、本ステップにおける詳細な処理は、図２７を用いて説明する。
【０１８７】
ステップＳ１００６では、ステップＳ１００４において取得した文字列幅ＭＯＪＩＷが、矩形の幅Ａ．Ｗよりも大きいか否かを判定し、大きいと判定した場合は、本ステップは、文字列幅を調整する処理を行うためにステップＳ１００８へ処理を進め、大きいと判定しない場合、つまり同じまたは小さい場合は、幅の調整の必要はないため処理を終了する。
【０１８８】
ステップＳ１００８では、超過幅ＯＶＥＲＷに文字列幅が超過した幅を記憶する。
【０１８９】
ステップＳ１０１０では、文字間のピッチを調整し、矩形幅に文字列幅を納めるように試みる処理である。尚、本ステップにおける詳細な処理は、図２８を用いて説明する。
【０１９０】
ステップＳ１０１２では、ステップＳ１０１０における処理によって文字列幅の縮小を試みた結果を評価するために、ステップＳ１００４と同じ文字列幅取得処理を行っている。
【０１９１】
ステップＳ１０１４では、ステップＳ１００６と同じ文字列幅と矩形幅の評価を行っている。ここで文字列幅が矩形幅に収まっていれば、問題ないため文字列幅フィット処理を終える。再び超過していた場合は、ステップＳ１０１６へ処理を進める。
【０１９２】
ステップＳ１０１６では、超過幅ＯＶＥＲＷの再計算を行う。
【０１９３】
ステップＳ１０１８では、文字のサイズと文字間のピッチを調整し、矩形幅に文字列幅を納めるようにする処理である。本ステップにおける詳細な処理については、図２９を用いて説明するこの処理を終えると文字列幅が矩形幅に収まるように自動的に調整される。
【０１９４】
次に図２７に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおける文字列幅取得処理を説明する。文字データが複数記憶されている配列、文字データ配列から文字列の横幅を取得する処理である。
【０１９５】
ステップＳ１１００では、変数ＭＩＮＸ、変数ＭＡＸＸ、文字列幅ＭＯＪＩＷ、文字データＣの領域を確保する。
【０１９６】
ステップＳ１１０２では、初期化として、変数ＭＩＮＸに十分大きな整数を記憶する。例えば、４バイトで表現できる整数の最大値である２１４７４８３６４７等である。また、変数ＭＡＸＸに十分に小さな整数を代入する。例えば４バイトで表現できる整数の最小値である
―２１４７４８３６４８等である。
【０１９７】
ステップＳ１１０４は、移動文字データ配列Ｎに記憶された要素数分のループ状態である。
【０１９８】
ステップＳ１１０６では、移動文字データ配列Ｎに記憶された次の要素を取り出し文字データＣに記憶する。
【０１９９】
ステップＳ１１０８では、ステップＳ１１０６において記憶した文字データＣが持つ情報であるＸ座標が、変数ＭＩＮＸより小さいか否かを判定し、小さいと判定した場合は、ステップＳ１１１０へ処理を進め、小さいと判定しない場合は、ステップＳ１１１２へ処理を進める。
【０２００】
ステップＳ１１１０では、変数ＭＩＮＸにステップＳ１１０８におけるＸ座標を記憶する。
【０２０１】
ステップＳ１１１２では、取り出した文字データＣが持つ情報である文字の右端の座標（Ｘ＋Ｗ、Ｗは、文字データのフォント情報のサイズを示す。）が変数ＭＡＸＸより大きいか否かを判定し、大きいと判定した場合は、ステップＳ１１１４へ処理を進め、大きいと判定しない場合は、ステップＳ１１１６へ処理を進める。
【０２０２】
ステップＳ１１１４では、変数ＭＸＸにステップＳ１１１２におけるＸ＋Ｗの値を代入する。
【０２０３】
ステップＳ１１１６は、ステップＳ１１０４に対するループ終端を示している。
【０２０４】
ステップＳ１１１８では、ループを終了した段階の変数ＭＡＸＸと変数ＭＩＮＸとの差をとることで文字列幅ＭＯＪＩＷに文字列幅を代入している。以上により、文字列幅Ｗを算出し、本処理の呼び出し元に提供する。
【０２０５】
次に図２８に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理を説明する。本処理では、文字同士でそれぞれさまざまな文字間ピッチを有している場合に、元データの文字配置構造を極力崩さないように文字間ピッチを縮小する処理であり、本発明において特に重要な特徴ある処理である。
【０２０６】
ステップＳ１２００では、シフト幅Ｊ、削減幅Ｔ、文字データＣ、前文字終端座標ＰＲＥＶＸを確保し、ステップＳ１２０２では、削減幅Ｔを０で初期化する。
【０２０７】
ステップＳ１２０４は、ループ上端を示しており、このループは、ステップＳ１２２８における判定を行う処理にて終了する。
【０２０８】
ステップＳ１２０６では、シフト幅Ｊを０で初期化する。
【０２０９】
ステップＳ１２０８は、前記ループの内部にあり、移動文字データ配列Ｎに記憶された要素数分のループ上端を示している。
【０２１０】
ステップＳ１２１０では、移動文字データ配列Ｎからループにあわせて順次要素を取り出し、文字データＣに記憶する。
【０２１１】
ステップＳ１２１２では、ステップＳ１２１０において移動文字データ配列Ｎからの要素の取り出しが２回目以降であるか否かを判定し、２回目以降である場合は、ステップＳ１２１４へ処理を進め、２回目以降であると判定しない場合は、ステップＳ１２２４へ処理を進める。
【０２１２】
本ステップにおける判定は、移動文字データ配列Ｎに記憶された文字列の先頭文字と２文字目以降では処理が異なるためである。
【０２１３】
ステップＳ１２１４では、前文字終端座標ＰＲＥＶＸに文字データＣのＸ＋Ｗで表わされる文字の右端のＸ座標を記憶する。このＰＲＥＶＸは順次文字データＣを処理するに際して常に前の文字の右端座標を更新して記憶する目的で用いる。
【０２１４】
ステップＳ１２１４では、文字データＣのＸと保存されている前文字終端座標ＰＲＥＶＸを比較し、文字データＣのＸが前文字終端座標ＰＲＥＶＸより大きいと判定した場合、ステップＳ１２１６へ処理を進め、大きいと判定しない場合は、ステップＳ１２２２へ処理を進める。
【０２１５】
この比較は、現在処理している文字データＣを前の文字の間に文字間ピッチが存在するかを確認している。つまり接触しているのであれば、前の文字との間の文字間はこれ以上削減できないことになる。
【０２１６】
従って、文字データＣのＸ座標とＰＲＥＶＸの間に間隔があると判断された場合はＹＥＳとなり、ステップＳ１２１６へと処理を進める。
【０２１７】
ステップＳ１２１６では、超過幅ＯＶＥＲＷと削減幅Ｔとを比較し、超過幅ＯＶＥＲＷよりも削減幅Ｔが大きいと判定した場合は、まだ削減を継続する必要があるとして、ステップＳ１２２０へ処理を進め、大きいと判定しない場合は、ステップＳ１２２２へ処理を進める。
【０２１８】
ステップＳ１２１８では、文字データＣのＸ座標であるＣ．Ｘの座標を左にシフトする処理であり以下の式３に示す計算式を用いている。
【０２１９】
文字データＣ．Ｘ  ←  Ｃ．Ｘ  −  Ｊ  −  １    （式３）
【０２２０】
ここでＪは、ステップＳ１２０８からステップＳ１２２６のループ処理において左方向シフトした幅の総計である。文字データＣ．Ｘをシフト幅Ｊと、さらに１、左にシフトすることで、本ループで処理してきた前文字までのシフト幅も同時に左にシフトする。
【０２２１】
ステップＳ１２２０では、削減幅Ｔに１を加算する。削減幅Ｔは、シフト幅Ｊと異なり本文字間ピッチ処理における削減幅の総計である。また、シフト幅に１を加算し、本ループ処理でのシフト幅総計を更新している。
【０２２２】
その後、ステップＳ１２２４へ処理を進め、ステップＳ１２２４では、前文字終端座標ＰＲＥＶＸに文字データＣのＸ＋Ｗで表わされる文字の右端のＸ座標を代入して保存する。
【０２２３】
ステップＳ１２２６は、ステップＳ１２０８から始まるループの終端であり、次のループ処理を進める。
【０２２４】
ステップＳ１２１４の処理に戻り説明を続ける。ステップＳ１２１４において、大きいと判定しない場合、文字データＣ．Ｘと前文字の終端座標が一致するケースであるため、１シフト処理は行わない。
【０２２５】
ただし、前文字までのシフト幅Ｊについては、文字データＣにも反映しないと、この文字が削減シフトから取り残されるため、ステップＳ１２２２においてシフト幅Ｊの分だけシフトしている。また、このケースでは幅の削減効果はないため、ＪとＴに対する加算は行わず、ステップＳ１２２４へ処理を進める。
【０２２６】
ステップＳ１２２４６までのループを１回処理すると、すべての文字間にピッチ幅が存在した場合は、それぞれ１ずつ間隔が狭まったことになる。
【０２２７】
ループを抜けるとステップＳ１２２８においての評価を行う。ここでは、削減幅の総計であるＴが、本来削減した超過幅ＯＶＥＲＷを上回ったかを評価している。上回っていれば、これ以上文字ピッチ幅を削減する必要はないためステップＳ１２０４からステップＳ１２３０迄のループを抜け終了となる。
【０２２８】
また、上回っていない場合でも、シフト幅Ｊが０であるか否かを評価している。Ｊが０であるということは、これ以上文字間ピッチに削減の余地がないということであるので、同様にステップＳ１２０４からステップＳ１２３０迄のループを抜け終了とする。
【０２２９】
ここで、本処理では、ステップＳ１２０８からステップＳ１２２６までのループが複数回実行される。この本処理を利用することで、文字間ピッチが一律な文字列の場合には、一律に文字間を縮めた違和感のない文字幅調整が行える。
【０２３０】
また、文字間ピッチが極端に広い箇所などがある場合を考えると、それは意味のある文字間ピッチの表現であると考えられる。たとえば、２、３の単語が連なった文字列で、その単語間に間隔を持たせている場合などがある。他には、英語をイメージすると分かりやすい。
【０２３１】
以下のような文章がある場合、例えばＴｈｉｓとｉｓの間は広い文字間ピッチにより文字列が表現されていると考えられる。
Ｔｈｉｓ  ｉｓ  ａ  ｐｅｎ
【０２３２】
このような場合には、Ｔｈｉｓとｉｓの間は極力削減せずに、文字間ピットを残さないと文章として成り立たなくなる。
【０２３３】
このようなケースに対応するために、広い間隔を削減するのではなく、文字列全体の配置表現を変更しないような処理フローを実現したのが、この文字間ピッチ調整処理である。
【０２３４】
この処理を終了しても、Ｊが０と判定されて終了した場合には、本来、超過幅ＯＶＥＲＷ分削減したかったにも関わらず、文字列全体の幅が削減できていない場合がある。そのために、ステップＳ１０１８における文字サイズ調整処理が用意されている。
【０２３５】
次に図２９に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理を説明する。本処理では、文字サイズを縮小することで文字間ピッチを生み出し、その文字ピッチを詰めることで文字列全体のサイズを縮小することを実現している処理であり、本発明において特に重要な特徴ある処理である。
【０２３６】
ステップＳ１３００では、縮小前文字幅ＯＲＧＷ、縮小後文字幅ＮＥＷＷ，シフト幅Ｊ、文字データＣを確保する。
【０２３７】
ステップＳ１３０２は、ループ上端であり、ステップＳ１３２４の判定処理によってループを抜ける仕組みとなっている。
【０２３８】
ステップＳ１３０４では、シフト幅Ｊに０を記憶しており、ステップＳ１３０２からステップＳ１３２８におけるループの先頭処理にて都度０に初期化される。
【０２３９】
ステップＳ１３０６では、移動文字データ配列Ｎに記憶された要素数分のループ上端である。
【０２４０】
ステップＳ１３０８では、移動文字データ配列Ｎに記憶された要素を取り出し、文字データＣに記憶する。
【０２４１】
ステップＳ１３１０では、文字データＣのＸ座標であるＣ．Ｘにこれまでのシフト幅Ｊを反映する。ループの１回転目である１文字目では、Ｊが０であるためシフトしない。
【０２４２】
ステップＳ１３１２では、文字データＣの文字幅を取得し、縮小前文字幅ＯＲＧＷに記憶する。
【０２４３】
ステップＳ１３１４では、文字データＣのフォントサイズを１ポイント小さくする。ここでは文字データＣの持つフォント情報を更新する。
【０２４４】
ステップＳ１３１６では、文字データＣの文字幅を再度取得し、縮小後文字幅ＮＥＷＷに記憶する。
【０２４５】
ステップＳ１３１８では、文字データＣが持っている情報であるＷにＮＥＷＷの値を記憶することで文字幅Ｗを更新する。
【０２４６】
ステップＳ１３２０では、シフト幅ＪにＯＲＧＷとＮＥＷＷとの差である縮小幅とこれまでのシフト幅Ｊを加算した値をＪに記憶し更新している。
【０２４７】
ステップＳ１３２２は、ループ終端を示し、移動文字データ配列Ｎに記憶された要素数分処理するとループを抜ける。ここで求める削減幅を達成したタイミングでループを抜けないのは、一連の文字列のフォントを一律に調整することで見た目の良さを実現するためである。
【０２４８】
ループを抜けたあと、ステップＳ１３２４では、シフト幅Ｊが達成したかった縮小幅である超過幅ＯＶＥＲＷ以上の値となり、目的を達成したか否かを判定し、達成したと判定した場合は、処理を終了する。また、達成していないと判定した場合は、ステップＳ１３２６へ処理を進める。
【０２４９】
ステップＳ１３２６では、超過幅の残りを算出している。超過幅ＯＶＥＲＷからシフト幅Ｊを減算した値が残りの超過幅である。
【０２５０】
ステップＳ１３２８は、ループ終端であり、前述の処理により目的の文字列幅の削減が達成されるまで繰り返す。
【０２５１】
次に図３０に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおけるＹ座標配置処理を説明する。本処理は前述までの処理によって調整された文字列を移動先の矩形に適切なＹ座標を設定し配置する処理である。
【０２５２】
ステップＳ１４００では、矩形罫線マップ領域Ｍに処理対象の矩形ＩＤのデータが存在するか否かを確認し、存在すると判定した場合は、ステップＳ１４０４へ処理を進め、存在すると判定しない場合は、ステップＳ１４０２へ処理を進める。
【０２５３】
矩形罫線マップ領域Ｍに処理対象の矩形ＩＤのデータが存在する場合とは、現在の配置対象の矩形に罫線が存在することを意味している。
【０２５４】
ステップＳ１４０２では、行ピッチ配置処理を行う。この処理は配置対象の移動文字データ配列Ｎが持っている行ピッチに従って、移動先矩形の上端座標から、順次Ｙ座標を移動して配置していく処理であり、一般的な手法である。移動先の矩形の下端座標に達した場合には、図１７で用意されている改ページフラグをＴＲＵＥにすることで次回は新しいページイメージに対する配置処理となる。
【０２５５】
罫線が存在した場合には、ステップＳ１４０４において、罫線フィット配置処理を行う。本ステップにおける詳細な処理については、図３１を用いて説明する。
【０２５６】
次に図３１に示すフローチャートを用いて本発明の実施形態に係る帳票生成ステムにおける罫線フィット配置処理を説明する。本処理は、移動先の矩形に罫線が存在する場合、その罫線に沿って文字列を配置していく処理であり、本発明において重要な特徴な処理であると言える。
【０２５７】
ステップＳ１５００では、罫線Ｙ座標Ｙ１
、罫線Ｙ座標Ｙ２、矩形罫線Ｙ座標配列Ｋ、対象罫線インデックスＫＩＤＸ、罫線中間Ｙ座標ＭＩＤＹ、文字高さＨ、文字Ｙ座標Ｙ３の領域を確保する。
【０２５８】
ステップＳ１５０２では、配置Ｙ座標管理マップＭＹに矩形情報領域Ａの矩形ＩＤに対応するデータが存在するか否かを判定し、存在すると判定した場合は、ステップＳ１５０６へ処理を進め、存在すると判定しない場合は、ステップＳ１５０４へ処理を進める。
ここで、配置Ｙ座標管理マップＭＹの構造について、図３２を用いて説明する。
【０２５９】
配置Ｙ座標管理マップＭＹは、マップ構造を持ち、キーに矩形ＩＤを利用することで矩形ＩＤに対して一意なバリューを返すことができるように構成されている。
【０２６０】
バリューは、罫線フィット配置処理からこのマップを利用する場合は、対象罫線インデックスを記憶するように利用する。
【０２６１】
ここで、矩形ＩＤに対して対象罫線インデックスを記憶することとし、そのインデックスには文字列を罫線にフィットして配置したときの基準罫線のインデックスを記憶しておくことによって、罫線を持つ矩形に対して文字列を配置する処理の際に、次の配置において基準として扱う罫線が特定できるようにしている。
【０２６２】
ステップＳ１５０４では、配置Ｙ座標管理マップＭＹに以下のような初期データを設定する。
キー：矩形情報領域Ａの矩形ＩＤ
バリュー：０
このバリュー：０は、矩形罫線Ｙ座標配列Ｋの先頭の罫線を示している。
【０２６３】
ステップＳ１５０６では、配置Ｙ座標管理マップＭＹから以下のキーで対象罫線インデックスを取得する。
キー：矩形情報領域Ａの矩形ＩＤ
すると、対象罫線インデックスが取得できるので、ＫＩＤＸに記憶する。
【０２６４】
ステップＳ１５０８では、矩形罫線マップ領域Ｍから、矩形ＩＤをキーにして矩形罫線Ｙ座標配列Ｃを取得する。
【０２６５】
ステップＳ１５１０では、ステップＳ１５０８において取得した矩形罫線Ｙ座標配列Ｃを矩形罫線Ｙ座標配列Ｋに記憶する。
【０２６６】
ステップＳ１５１２では、矩形罫線Ｙ座標配列Ｋから、インデックスＫＩＤＸの要素を取得し、罫線Ｙ座標Ｙ１に記憶する。
【０２６７】
ステップＳ１５１４では、矩形罫線Ｙ座標配列Ｋから、インデックスＫＩＤＸ＋１の要素を取得し、罫線Ｙ座標Ｙ２に記憶する
【０２６８】
このＹ１とＹ２は、本処理でデータを配置する位置の上下の二本の罫線が持つＹ座標である。
【０２６９】
ステップＳ１５１６では、罫線中間Ｙ座標を以下の式４に示す計算式を用いて算出する。
【０２７０】
ＭＩＤＹ  ←  （  Ｙ２  −  Ｙ１  ）÷  ２  ＋  Ｙ１    （式４）
【０２７１】
この式の意味は、罫線Ｙ座標Ｙ１と罫線Ｙ座標Ｙ２との差で示されるＹ座標の間隔を算出し、それを罫線間隔と判断し、その罫線間隔の２分の１だけＹ１座標に加算した位置が罫線中間Ｙ座標とする意味である。
【０２７２】
ステップＳ１５１８は、移動文字データ配列Ｎに記憶された要素数分のループ上端を示している。
【０２７３】
ステップＳ１５２０では、移動文字データ配列Ｎの要素を取得し、文字データＣへ記憶する。
【０２７４】
ステップＳ１５２２では、文字データＣの文字の高さを取得し、Ｈに記憶する。
【０２７５】
ステップＳ１５２４では、文字の配置Ｙ座標を、以下の式５に示す計算式を用いて算出する。
【０２７６】
Ｙ３  ←  ＭＩＤＹ  −  （  Ｈ  ÷  ２  ）    （式５）
【０２７７】
この式５の意味は、文字データＣの高さの半分を、先に算出した罫線の中間Ｙ座標から差し引いた値Ｙ３を求めることである。このＹ３座標を文字データＣの書き出し位置とすることで、文字データＣの上下の中間線と２本の罫線の中間位置が一致するように文字データを配置することができる。
【０２７８】
この例を図３３に示しておく。この方式によって適切に配置されているのが左のＡである。その他、×印をつけている文字配置例は、この処理実現したい文字配置位置ではない。
【０２７９】
ステップＳ１５２６では、前述の通り、Ｙ３を文字データＣ．Ｙに設定する。
【０２８０】
ステップＳ１５２８では、移動文字データ配列ＮのステップＳ１５２０で取得した現在の要素を文字データＣで更新することで文字の配置位置を確定する。
【０２８１】
ステップＳ１５３０は、ループの終端を示しており、移動文字データ配列Ｎに記憶されたすべての文字が適切に配置された後、ループを抜ける。
【０２８２】
ステップＳ１５３２では、矩形罫線Ｙ座標配列Ｋに、ＫＩＤＸ＋２の要素が存在する否かを判定し、存在すると判定した場合は、ステップＳ１５３８へ処理を進め、存在すると判定しない場合は、ステップＳ１５３４へ処理を進める。本ステップは、最下端の罫線とその上の罫線の間に文字データを配置したため、次の配置位置はなく、改ページすべきか否かを判定している。
【０２８３】
ステップＳ１５３４では、改ページフラグをＴＲＵＥに設定し、次のステップＳ１５３６では、配置Ｙ座標管理マップＭＹの矩形情報領域Ａのキーに対応するバリューを０に設定することによって、改ページ後の処理罫線を先頭に戻している。
【０２８４】
ステップＳ１５３８では、配置Ｙ座標管理マップＭＹの矩形情報領域Ａのキーに対応するバリューを１つ増やすことによって、次の文字データを配置する処理の際に取り扱う罫線を一つ進めている。
【０２８５】
本処理によって、罫線が存在する移動先矩形へ文字データを配置する際に、罫線に沿った適切な文字データ配置を実現している。
【０２８６】
以上のように、本実施形態においては、帳票データのレイアウトを変更する際に、データの移動先の表示領域の幅に自動的に文字データを適合するように配置するように構成している。また、背景のフォームイメージの罫線などに自動的に適合するように構成している。従って、本実施形態によれば、帳票データのレイアウトを変更した二次帳票を作成する際に、データの移動先の領域の設定を視覚的に行うにあたり、微妙な領域指定やデータの繰り返し行数などの設定の必要がなく、簡便に設定し二次帳票を作成することが可能となる。
【０２８７】
次に、本発明の発展的な利用方法について説明する。
本発明では、図９で示したフォーム設定および図１４で示したデータレイアウト接て処理によって、データのレイアウトを変更する設定条件を生成しているが、これらの情報は、サーバやファイルなどに記憶しておくことで、レイアウト変更条件のテンプレートとして利用することもできる。
【０２８８】
テンプレートとしての利用であれば、利用者はテンプレートを選択する、またはテンプレートが保存されているファイルを選択する操作のみで、２度目以降のレイアウト編集処理は割愛することができ、利便性の高い利用方法を構成することができる。
【０２８９】
また、本発明の説明では、検索結果からの二次帳票の作成に主眼をおいたが、検索を行わずに元の帳票データに対してレイアウト編集設定を行い、二次帳票を作成するように構成することもできる。
【０２９０】
この場合は、図３で示した処理のステップＳ１００〜Ｓ１０４の処理を行わずにステップＳ１０６からの処理を行うことで実現可能である。この場合は、検索ヒットデータの情報に基づいて元帳票から帳票データを抽出するのではなく、元帳票から移動元矩形の領域に存在する文字データを抽出する点のみを変更すればよい。
【０２９１】
この実施形態によると、帳票データの名寄せ帳票を作成するのではなく、レイアウトを変更する手段、および帳票データから必要でないデータを削除する手段としても本発明を利用することができる。
【０２９２】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減することができる。
【０２９３】
以上、実施形態例を詳述したが、本発明は、例えば、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２９４】
帳票生成システムにおける実施態様を記載しているが、クライアントＰＣの機能を帳票サーバに備え、帳票サーバ単体の構成で実施することも可能であり、あるいは、帳票サーバの機能をクライアントＰＣに備え、クライアントＰＣ単体の構成で実施することも可能である。
【０２９５】
また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能（読み取り可能）なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能なプログラムが記憶されている。
【０２９６】
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
【０２９７】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読取り実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２９８】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【０２９９】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０３００】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータで稼働しているＯＳ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０３０１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０３０２】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。
【０３０３】
この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０３０４】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム、あるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０３０５】
１００  帳票サーバ
１０１  クライアントＰＣ
１０２  クライアントＰＣ
１０３  ネットワーク１０３
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ＲＯＭ
２０４  システムバス
２０５  入力コントローラ
２０６  表示コントローラ
２０７  外部メモリコントローラ
２０８  通信Ｉ／Ｆコントローラ
２０９  入力部
２１０  表示部
２１１  外部メモリ
２１２  プログラム
２１３  帳票ファイル
２１４  インデックスファイル
【図１】
2012133568.tif 000003
【図２】
2012133568.tif 000004
【図３】
2012133568.tif 000005
【図４】
2012133568.tif 000006
【図５】
2012133568.tif 000007
【図６】
2012133568.tif 000008
【図７】
2012133568.tif 000009
【図８】
2012133568.tif 000010
【図９】
2012133568.tif 000011
【図１０】
2012133568.tif 000012
【図１１】
2012133568.tif 000013
【図１２】
2012133568.tif 000014
【図１３】
2012133568.tif 000015
【図１４】
2012133568.tif 000016
【図１５】
2012133568.tif 000017
【図１６】
2012133568.tif 000018
【図１７】
2012133568.tif 000019
【図１８】
2012133568.tif 000020
【図１９】
2012133568.tif 000021
【図２０】
2012133568.tif 000022
【図２１】
2012133568.tif 000023
【図２２】
2012133568.tif 000024
【図２３】
2012133568.tif 000025
【図２４】
2012133568.tif 000026
【図２５】
2012133568.tif 000027
【図２６】
2012133568.tif 000028
【図２７】
2012133568.tif 000029
【図２８】
2012133568.tif 000030
【図２９】
2012133568.tif 000031
【図３０】
2012133568.tif 000032
【図３１】
2012133568.tif 000033
【図３２】
2012133568.tif 000034
【図３３】
2012133568.tif 000035