JP3977874B2 - 文書出力方法および装置 - Google Patents

文書出力方法および装置 Download PDF

Info

Publication number
JP3977874B2
JP3977874B2 JP14026392A JP14026392A JP3977874B2 JP 3977874 B2 JP3977874 B2 JP 3977874B2 JP 14026392 A JP14026392 A JP 14026392A JP 14026392 A JP14026392 A JP 14026392A JP 3977874 B2 JP3977874 B2 JP 3977874B2
Authority
JP
Japan
Prior art keywords
area
stored
record
data
display
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP14026392A
Other languages
English (en)
Other versions
JPH05334327A (ja
Inventor
哲也 丸岡
哲也 増石
康一 嶋崎
喜正 金森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP14026392A priority Critical patent/JP3977874B2/ja
Priority to US08/067,667 priority patent/US5765005A/en
Publication of JPH05334327A publication Critical patent/JPH05334327A/ja
Application granted granted Critical
Publication of JP3977874B2 publication Critical patent/JP3977874B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【産業上の利用分野】
本発明は計算機を用いた帳票作成方法および装置に係り、特に一定の表示パターンが繰返し現れる帳票を、表形式データを参照して作成するのに好適な帳票作成方法に関する。
【0002】
【従来の技術】
帳票の作成に関する従来技術として、日立製作所のパーソナルコンピュータB16シリーズや日本電気のパーソナルコンピュータPC98シリーズ上で稼働するソフトウェア「DATABOX−II」がある。
【0003】
本ソフトウェアには、レポート出力機能として、特定の繰返しパターンで構成される帳票を作成するための明細印字機能がある。
【0004】
上記機能はレポート上に配置したデータのうち指定した範囲を一覧形式で繰り返して連続印字するものである。また、繰返し元となるデータに罫線情報や固定文字列が配置でき、さらに、メモ帳と呼ばれる一件一件の関連情報を表形式データとして格納する際に、格納するデ−タ保存様式の指定項目データの項目名称を指定することで上記の関連情報を配置できる。そして、印字の際、配置したメモ帳の項目に順々に次データ(表形式データでいえば次のレコード)が対応して表示される。この時、画面上のレポートには、指定項目の項番が"#01"の様に表示され、繰返しによって配置された項目も同様に"#01"の様に表示される。
【0005】
また、繰返し印字の際は、指定した範囲を単純に下方向へ繰り返す、あるいはこの繰返し印字を複数列(最大4列)に適用するための指定ができる。
【0006】
上記の機能は、具体的には、日立製作所のパーソナルコンピュータB16シリーズのDATABOX−IIのマニュアルp.280〜283に記載されている。
【0007】
【発明が解決しようとする課題】
上記従来技術では、利用者が帳票を作成する場合以下の問題点がある。
【0008】
レポートに配置する表形式データの項目は必ず同一のレコードに含まれているものに限られるため、表形式デ−タが時系列で並んでいる場合などに、一つ前のレコ−ドの項目をレポ−トに配置することはできない。すなわち、サンプルとして配置できるのはある1レコードのみで、複数レコードに股がってデータを配置し、これをサンプルとして繰返し適用することができない。
【0009】
上記の状況で、同一レコ−ド上にない関連項目を帳票上に見比べやすいように配置したい場合には、その関連項目を予め表形式データの同一レコードとして格納する作業が必要となり、記憶領域も2倍必要となる。
【0010】
さらに従来技術は、必ず1レコ−ドずつ順に繰返し処理を適用するので、2つあるいは3つおきにレコ−ドをスキップして処理を繰り返すことができない。
【0011】
以上示したように従来の方法は、複数レコードに股がった項目をサンプルに指定したり、これを柔軟に複数レコード単位で繰返し適用するといった状況を十分に考慮していない。このため、帳票作成の際に無駄な作業やメモリを必要とするといった問題点があった。
【0012】
本発明の目的は上記問題点を解決して、複数レコードに股がったデータを帳票上に配置し、これを繰返して帳票を作成する際に効率的な方法を提供することである。
【0013】
【課題を解決するための手段】
上記目的を達成するため、本発明は、計算機の出力装置に対して、記憶装置に格納された表形式データを表示するための領域と、作成すべき帳票の出力領域とを設け、以下の処理を行う。
【0014】
表形式データの特定行を指定する情報を入力装置から入力し、指定された特定行を出力装置の表形式データ上に示し、表形式データ上で指定されたデータを帳票出力領域へ配置する時に、表形式データの指定場所を特定行からの相対位置情報として記憶装置へ格納する。そして、繰返し表示の時は、表形式データの特定行を予め定まった行数だけ移動して、この移動後の行を基準として前記相対位置情報に対応するデータを取り出し、帳票出力領域へ出力する。さらに、繰返し表示の時に移動する行数を入力装置から入力する。
【0015】
【作用】
計算機の出力装置に対して、記憶装置に格納された表形式データを表示するための領域と、作成すべき帳票の出力領域とを設けておき、表形式データの特定行を指定する情報を入力装置から入力し、この特定行を出力装置の表形式データ上に示すことで、利用者の所望する行を、帳票に配置する基準的な場所として設定でき、しかもその場所を利用者自身に明示できる。
【0016】
さらに、表形式データ上で指定されたデータを帳票出力領域へ配置する時に、表形式データの指定場所を特定行からの相対位置情報で記憶装置へ格納することで、利用者が基準として指定した行のデータだけでなく、他の行のデータ位置も保持した形式で情報を記憶できる。また、繰返し表示の時、表形式データの特定行を予め定まった行数だけ移動して、移動後の行を基準として前記相対位置情報に対応するデータを取り出し、これを帳票出力領域へ出力することにより、基準となる行を順次移動しながら相対位置を保った場所に存在するデータを帳票出力領域に表示できる。さらに、繰返し表示の時に移動する行数を入力装置から入力することにより、利用者の指定した行数単位で順次繰返し処理を適用して帳票を表示できる。
【0017】
【実施例】
以下に示す本発明の一実施例は、計算機を用いた帳票出力方法であり、表形式データを対象に各種計算や加工処理を施すシステムにおいて、表形式データを様々なレイアウトの帳票にアレンジする方法である。
【0018】
表形式データは横軸にフィールドと呼ばれる属性を表現し、縦軸にはレコードと呼ばれるデータの一つの単位を表現する構成をもつ。このように単純な二次元構造のデータを処理の対象とする理由には、データのグラフ表示や計算処理が適用しやすいことが挙げられる。
【0019】
一方、加工したデータやグラフは最終的には、帳票あるいはドキュメントとして紙の上に印刷されるのが普通である。実際の帳票に出力する表の形式を見てみると、先に述べたような単純な2次元の表だけでなく、様々な形にアレンジされたものが存在する。従って、一般的には、システムが基本として取り扱う表形式と実際の帳票出力のレイアウトが異なる。
【0020】
本発明は、システムが取り扱う2次元の表を帳票出力用に様々なレイアウトにアレンジする処理手順に関するものである。ここで、本実施例の理解を容易にするため、アイデアのポイントについて簡単に述べる。
【0021】
まず、アレンジ前の簡単な2次元形式のテーブル(以下、元テーブルと呼ぶ)の表示用ウィンドウと、アレンジして新たに作成するテーブルを表示するためのアレンジウィンドウ(最初はなにも表示されていない)を生成する。利用者はこの元テーブルの表示用ウィンドウからサンプルとなるデータを対話形式で指定して、所望するレイアウトとなるように指定したデ−タをアレンジウィンドウ上へ持っていく。その後、アレンジウィンドウ上のサンプルとなるデータがどのように繰り返されて新たな表を構成しているかといった繰返し種別等のパラメータを指定する。その後、実際に繰返しを適用して、新たな帳票を作成する。以下、本実施例を説明する。
【0022】
図1は本実施例の処理手順を示すフローチャートであり、図2は本発明を実施する計算機装置のハードウエア構成である。図3はアレンジ前のテーブルすなわち単純な二次元の表を表示するための元テーブル表示用ウィンドウの画面出力例であり、記憶装置上に蓄えられている表データ自身の表現形式の一例は図4に示した。
【0023】
図2において、ディスプレイ201は、表データの値、アレンジ操作用のウィンドウ等、システムからの出力情報、あるいは利用者に対して入力要求を促す各種メニューや入力エリアを表示するための出力装置である。キーボード202はシステムからの入力要求に対する回答を数字や文字列で入力するための入力装置である。マウス203はディスプレイ201の画面上を指示してデータを指定したり、各種メニューの選択や処理起動のための情報を入力するポインティング型の入力装置である。プリンタ204は対話操作で作成した帳票を印刷するための出力装置である。記憶装置207は表形式データや入力装置からの入力情報、処理装置によって演算あるいは加工された各種情報を保持するための情報記憶媒体である。処理装置205はこれら各装置の制御を司るもので、各装置からのデータ読出し、各装置へのデータ書き込み、およびデータの検査や演算処理を内部に格納されたプログラム206によって行う。
【0024】
図4はシステムが取扱う元テーブル400の格納形式を示す。本テーブルは記憶装置207上に格納されている。表に付けた名前を示す表名称401、横軸には複数のフィールド名称404、及び縦軸方向にはレコードが並ぶ構成をもつ単純な2次元形式の表である。なお、テ−ブル400では、レコード番号403だけでなく、フィールド名にも番号402を付して、数値によるアクセスを可能とすべく構成されている。図4に示した例では、表名称が「所得一覧」であり、先頭のレコードは「氏名番号」が「14521」で「氏名」が「丸岡哲也」、通勤時間が「1:00」...という情報を表現したものである。
【0025】
図5には、処理過程で使用する情報保持用の領域を示す。図5に示すそれぞれの情報の詳細は、以下に述べる処理手順の中で説明する。
【0026】
図1のフローチャートに従い、本実施例の処理手順を説明する。まずディスプレイ201に、「テーブル名入力」なる文字列を表示して、利用者からの入力を促す。そして利用者はキーボードを用いてテーブル名を入力する(ステップ101)。例えば利用者は "所得一覧" を入力する。この入力テーブル名がアレンジ対象の元テーブルである。ステップ101において、他の形式例えば利用可能なテーブル一覧を表示し、その一つを選択させる等の方法でも実現できる。
【0027】
次に、元テーブル表示用ウィンドウ300を生成して、このウィンドウに対して、ステップ101で入力したテーブル名称をもつ元テーブル400のデータを表示する(ステップ102)。
【0028】
データ表示後の元テーブル表示用ウィンドウ300の出力例を図3に示した。図3の出力例では画面中に表示可能なデータはフィールド数が5つ、レコード数が4つ、すなわち横に5つ縦に4つの合計20のデータである。一方、元テーブル400は実際にはこの表示領域より大きな表であるため、ウィンドウに表示できるのは元テーブル400の一部分となる。以下、元テーブル400の内容を元テーブル表示用ウィンドウ300へ表示する手順(ステップ102)の詳細を図13のフローチャートに従い説明する。
【0029】
先ず表示先頭フィールド番号を格納するための領域501(図5)へ"1"を設定し(ステップ1301)、表示先頭レコード番号を格納するための領域502へ "1"を設定する(ステップ1302)。領域501および502は、元テーブル表示用ウィンドウ300のデータ表示領域の左上のマス320に表示すべきデータがどのデータであるかを示すもので、元テーブルデータ400のフィールド番号402およびレコード番号403に対応している。図5に示した例は初期値として元テーブル400の1フィールド目の1レコードを設定したものである。
【0030】
次に、元テーブル表示用ウィンドウ300のフィールド名表示域301へ対応するフィールド名を出力する(ステップ1303)。本処理(ステップ1303)の詳細を図14のフローチャートに従い説明する。
【0031】
表示先頭フィールド番号格納域501に格納された値をプログラム変数iに代入する(ステップ1401)。
【0032】
プログラム変数lに"1"を代入する(ステップ1402)。変数lは、これからフィールド名称を表示すべき元テーブル表示用ウィンドウ300上のフィールド301を示すものである。
【0033】
次に、元テーブル400上のiの場所にフィールドが存在するかどうかを調べ(ステップ1403)、もし存在すれば、元テーブル300のフィールド番号402がiの場所のフィールド名404を取り出す(ステップ1404)。
【0034】
そして、取り出したフィールド名404を元テーブル表示用画面300のフィールド名表示域301の左からl番目の表示場所に出力表示する(ステップ1405)。
【0035】
その後、プログラム変数lおよびiをインクリメントし(ステップ1406)、このプログラム変数lが "5"を超えているかどうかを判定し(ステップ1407)、超えていれば5個分のフィールドを全て表示したことになるので本処理を終了し、超えていなければステップ1403へ戻り、次のフィールド名の取り出しを行なう。
【0036】
一方、ステップ1403の判定処理において、iの場所にフィールドが存在しない場合には(元テーブルのフィールド数が5つより小さな表であるとき)、元テーブル表示用ウィンドウ300のフィールド名表示域301の左からl番目の表示場所をクリアし(ステップ1408)、ステップ1406へ進む。
【0037】
図13において、元テーブル表示用ウィンドウ300にフィールド名の表示が終わった後は、元テーブル400の各データの値を元テーブル表示用ウィンドウに表示する(ステップ1304)。以下、ステップ1304の処理の詳細を図15のフローチャートに従い説明する。
【0038】
まず、表示先頭フィールド番号格納域501に格納された値をプログラム変数iに代入する(ステップ1501)。
【0039】
次に、プログラム変数lに"1"を代入する(ステップ1502)。変数lはこれからデータを表示すべき元テーブル表示用ウィンドウ300上のマスのフィールド(横軸方向)の位置を示す。
【0040】
そして、表示先頭レコード番号格納域502に格納された値をプログラム変数jに代入する(ステップ1503)。
【0041】
さらに、プログラム変数mに"1"を代入する(ステップ1504)。この変数mはこれからデータを表示すべき元テーブル表示用ウィンドウ300上のレコード(縦軸方向)の位置を示す。
【0042】
次に、元テーブル400上の(i、j)の場所にデータが存在するかどうかを調べ(ステップ1505)、もし存在すれば、元テーブル300の(i、j)の場所のデータを取り出し(ステップ1506)、この取り出したデータを元テーブル表示用画面300のデータ表示域の左上の枠320を基準の(1、1)とした(l、m)の場所の枠に表示する(ステップ1507)。
【0043】
一方、ステップ1505の判定処理において、元テーブル300上の(i、j)の場所にデータが存在しない場合には、元テーブル表示用ウィンドウ300のデータ表示領域の左上のエリアから(l、m)番目の表示場所をクリアする(1508)。これによって、画面上のある一つの枠に対して、データを表示したり、クリアすることが出来る。
【0044】
その後、プログラム変数mとjをインクリメントし(ステップ1509)、縦軸方向にある次の対象へ処理を進める。そして、このプログラム変数mが "4"を超えているかどうかを判定し(ステップ1510)、超えていなければステップ1505へ戻り、次のレコードのデータ取出しを行なう。mが "4"を超えていれば(あるフィールドに関して4レコードのデータを全て表示)、フィールド(横軸方向)の対象を次へ進めるために、プログラム変数lおよび、iをインクリメントする(ステップ1511)。このプログラム変数lが "5"を超えているかどうかを判定し(1512)、超えていれば、5個分のフィールドおよび4個分のレコードを全て表示したことになるので本処理を終了し、超えていなければステップ1503へ戻り、次のフィールドに関する取り出しを行なう。
【0045】
以上、図15の処理(ステップ1304)によって、元テーブル表示用ウィンドウ300に元テーブル400のデータが表示される。
【0046】
図1において、元データ表示用ウィンドウ300へのデータ表示が終わった後は、同ウィンドウ300の左端側にある基準レコード302の設定を行う(ステップ103)。
【0047】
ここで基準レコードについて説明する。基準レコードには、任意のレコード位置から連続した複数のレコード(1レコードでも可)を指定できる。後述のテーブルアレンジ操作において、元テーブル表示用ウィンドウ300上から切り貼りで配置したデータ(マッピングデータと呼ぶ)は、この基準レコードの先頭からの相対的なレコード位置関係を記憶する。そして繰返し適用では順次この基準レコードの先頭を基準レコード幅分だけ仮想的に移動させ、記憶した相対的なレコード位置関係に基づいて残りレコードの配置を繰り返す。この基準レコードの情報を保持するための領域として、基準レコード先頭番号格納域503と基準レコード幅格納域504を用意する。これら領域には、初期値として"1"が設定される(ステップ1305、1306)。元テーブル300の先頭レコード(1レコードのみ)がこれに対応し、この位置を示す基準レコードカーソル303を元テーブル表示用ウィンドウ300に表示する(ステップ1307)。
【0048】
利用者は必要に応じて基準レコードを変更できる(ステップ103)。マウス203を用いて、元テーブル表示用ウィンドウ300上の基準レコードカーソル表示域302の任意の欄を選択して、基準レコード情報を変更する。具体的には図16のフローチャートの手順で変更する。まず、利用者は画面300上のスクロール用コマンド304、305を用いて、表示するレコードデータをスクロールする(ステップ1601)。そして希望するレコードの場所で基準レコードカーソル表示域302をマウス左ボタンで選択し、この場所に対応するレコード番号R1を求める(ステップ1602)。このレコード番号R1の値を、基準レコード先頭番号格納領域503に格納しなおし(ステップ1603)、基準レコードカーソル303を該当する場所に表示しなおす(ステップ1604)。これで、基準レコードの先頭レコードを指定したことになる。その後また表示するレコードデータをスクロールして(ステップ1601)、希望するレコードの場所で基準レコードカーソル表示域302をマウス右ボタン212で選択し、この場所に対応するレコード番号R2を求める(ステップ1605)。このレコード番号R2から前記R1を減じた値に1を加えた値を基準レコード幅格納領域504へ格納する(ステップ1606)。そして、該当する基準レコードにあたるレコード範囲に基準レコードカーソルを表示する(ステップ1607)。以上の処理により、利用者の希望するように基準レコードを設定できる。
【0049】
ステップ1601でのデータスクロールに関して説明する。図3の元テーブル表示用画面300中のスクロール用コマンドメニュー304、305、306及び307は、画面に表示可能なデータ量(5フィールド×4レコード分)より大きな元テーブルデータ400を表示する際に利用する。例えば下スクロール用コマンドメニュー305をマウス203で選択した際、表示先頭レコード番号502の値を+4して、その後ステップ1303およびステップ1304を適用すれば、現在表示している次のレコードを表示することができる。同様に上スクロール304の選択時には、表示先頭レコード番号502の値を−4してステップ1303およびステップ1304を適用する。フィールド(横)方向のスクロールについては、右スクロール用メニュー307を指定した場合には、表示先頭フィールド番号501の値を+5、左スクロール用メニュー306では−5して、ステップ1303および1304を適用する。
【0050】
以上これまでの説明してきた処理手順により、元テーブル表示用画面ウィンドウ300の生成が完了する。利用者は元テーブルに対して任意のレコード位置から任意のレコード幅もつ基準レコードを入力し、見本として配置するレコードの位置、および繰返し適用時にスキップするレコード幅を設定することができる。
【0051】
次にアレンジ用ウィンドウ600を生成する(ステップ104)。
【0052】
本ウィンドウは図6に示すように、その上部に各種処理の起動のためのコマンドメニュー領域(コマンド処理の詳細は後述する)、その下部には、新たに作成すべき表を配置するアレンジテーブル配置域619から構成される。このとき画面に表示されるコマンドメニュー群の位置は図19に示す形式のコマンドメニュー位置テーブル1900として記憶装置207に予め蓄えられている。各コマンドメニューの矩形領域について、その表示文字列1902、左上頂点のX座標1903、Y座標1904、右下頂点のX座標1905、Y座標1906および、そのメニューの識別番号1901を付加した構成である。これによって、マウス203を用いた入力情報である(X、Y)座標から指定コマンドが何であるかの識別番号を取り出して、この番号に応じて各処理を実行することが可能となる。また、アレンジテーブル配置域619の領域をスクロールするためのスクロールバーと呼ばれる操作領域が設けられており、それぞれ横方向用620と縦方向用621がアレンジ用ウィンドウに存在する。利用者はこれを用いてアレンジテーブル配置域619の表示内容をスクロールできる。
【0053】
利用者が具体的なマンマシン操作で、アレンジテーブル配置域619へ新たな表を作成していく過程で格納する各種情報を保持するための記憶領域の確保と初期化処理を次に行う(ステップ105)。
【0054】
ここで格納する各種情報とは、元テーブル表示用ウィンドウから切り貼りしてきたマッピングデータの貼り付け位置や元テーブル400上でのレコード位置やフィールド名に関する情報、あるいは描画する罫線枠の情報、そして繰返し種別等の情報である。これら情報の記憶領域の確保と初期化を行う処理手順について図17のフローチャートを用いて説明する。なお本処理はステップ101から104の間でならどこでも行って良いし、本処理で初期化する記憶領域が予め記憶装置207上に存在するものとしても差し支えない。
【0055】
まず、繰返し情報領域800の確保とその空きリストを連結する(ステップ1701)。繰返し情報領域800は、1つの元テーブルのアレンジに関して1つ使用される領域で、繰返し種別(後で説明)や繰返し領域の位置等に関する情報を保持する。この1個分の構成を図8に示す。アレンジ元となる元テーブルの名称801、アレンジ操作で配置したマッピングデータや罫線のうち被繰返し領域となる矩形領域の座標位置を示す座標値802、803、804、805、繰返し種別812、そして繰返し適用によって次に配置すべき座標位置を示す座標値806、807、808、同様に繰返し種別812によっては複数の繰返し位置が必要となるので、その繰返しの回数を示す値809、810、811、また現在設定している基準レコードに関する情報を格納する基準レコード先頭番号813、基準レコード幅814、そして画面のアレンジテーブル配置域619に具体的に配置された各部品(マッピングデータや罫線等)の情報格納領域のアドレスを指す部品情報領域へのポインタ815、そして次の元テーブル400からのアレンジ操作がある場合に次の繰返し情報領域アドレスを指す816の領域から構成される。
【0056】
種々の繰返し処理を行えるように、この繰返し情報領域800を格納できる領域を十分な個数(例えば20個)確保し、その複数個の領域を図11に示すように順に連鎖する。連鎖は、次の繰返し情報領域へのポインタを格納する領域816に次の領域のアドレスを順次格納することで実現できる。末尾の領域816はアドレス値として"0"を格納してこれ以上連鎖がないことを示す。このリストの先頭を指すアドレスを保持するプログラム変数free_map(1101)と末尾を指すアドレスを保持するプログラム変数free_map_tail(1102)を設定する。このようにして未使用の繰返し情報領域800のリストを作成する。繰返し情報が必要な時は、free_map(1101)に格納されたアドレスから1個分の領域を取り出して使用し、その次の領域の先頭アドレスをfree_map(1101)が指すように変更する。上記の方法により、領域管理が容易に実現できる。また、不要になった領域もその末尾の領域に新たに連鎖することで再利用可能となる。
【0057】
次に、上記のステップ1701と同様の処理により、部品情報領域900の確保とその空きリストの連結を行なう(ステップ1702)。部品情報領域900は、アレンジテーブル配置域619に配置したマッピングデータ、固定文字列、罫線についてそれぞれ個別にその配置情報等を記憶する領域である。この1個分の構成を図9に示す。上記部品の配置位置の矩形領域の左上X座標901、Y座標902、右下X座標903、Y座標904、マッピングデータであるか罫線であるか固定文字列であるかを示す部品種別905、マッピングデータである場合のフィールド名または固定文字列である場合の文字列を格納する領域906、マッピングデータの場合の対応レコード番号907、表示文字のサイズまたは罫線の線種を格納する領域908、上記部品が繰返し対象であるか否かを示すフラグ909、上記部品のID910、及び、次の部品情報領域のアドレスを指すポインタ911から構成される。
【0058】
図12には本部品情報領域900の空きリストの構造を示す。上記繰返し情報領域800の場合と同様に、必要となる個数分の領域を確保し、これらを順次連鎖させたものである。その空きリストの先頭を示すプログラム変数free_part(1201)と、末尾を指すプログラム変数free_part_tail(1202)を有す。
【0059】
上記の領域を確保した後、繰返し情報領域800をその空きリストから一つもらい(ステップ1703)、この領域アドレスを用紙情報領域700の繰返し情報領域へのポインタ705へ格納し、一つ分の繰返し情報領域を接続する(ステップ1704)。
【0060】
ここで、用紙情報領域700について説明する。その構造は図7に示すように、印刷時の用紙の種別を格納する領域701、その用紙サイズのディスプレイ上の大きさ(アレンジテーブル設置域上での大きさ)を示す横サイズ702、縦サイズ703、実際に繰返し適用によって必要となるページ数を示す領域704、そしてこの用紙上にアレンジする情報を指すための繰返し情報領域800へのポインタ705で構成される。
【0061】
次に用紙情報領域700にデフォルト値を設定する(ステップ1705)。具体的には以下のものを設定する。
用紙種別701に "A4縦長" を設定。
横サイズ702に "700" を設定。
縦サイズ703に "1100" を設定。
使用ページ704に "1" を設定。
【0062】
そして、ステップ1704で接続した繰返し情報領域800の元テーブル名称801に対し、ステップ101で入力したテーブル名称401を格納する。
【0063】
以上の処理によって、情報格納用領域の初期化(ステップ1305)が終了する。その結果、元テーブルデータ400を対象として、A4縦長のサイズの用紙に新たにアレンジテーブルを作成するための前段階までの準備が整う。
【0064】
元テーブル用ウィンドウ300とアレンジ用ウィンドウ600を生成した後は、アレンジテーブル配置域619に、利用者がマンマシン対話でマッピングデータや罫線データを配置して新たな表データを作成する(ステップ106)。本処理はシステムが持つ様々な処理機能を起動して行なわれる。各処理機能の起動はアレンジ用テーブル600の上方に設けられたコマンドメニュー選択で行う。具体的な処理を図18のフローチャートに示す。
【0065】
まず、利用者からマウス203を用いてアレンジ用ウィンドウ上を直接指示した入力(x、yの座標情報)を受付け(ステップ1801)、この座標情報から対応するコマンドメニューを取り出す(ステップ1802)。具体的には、マウスで指示された座標を(x、y)、コマンドメニュー位置テーブル1900の左上X座標1903、Y座標1904を(X0、Y0)、右下X座標1905、Y座標1906を(X1、Y1)とすると、それぞれの座標値は以下の条件を満たす。
【0066】
条件 X0 ≦ X ≦ X1
条件 Y0 ≦ Y ≦ Y1
この2つの条件式を同時に満たす行のメニュー識別子1901を取り出すことで利用者に指示されたコマンドメニューが何であるかを識別できる。
【0067】
その後、指定されたコマンドメニューに応じた個別処理を実行する(ステップ1803)。このステップでは、各種の個別機能を振り分けて実行する処理が含まれる。以下では、本ステップに含まれる個別機能を、選択したコマンドメニュー別に対応づけて、順に説明する。
【0068】
まず、ステップ1801で入力したものがアレンジ用ウィンドウ600中のコマンドメニュー「カット&ペースト」604であった場合の処理を、図20のフローチャートを用いて説明する。図20に示す処理では、アレンジテーブル配置域619に表示するデータを元テーブル表示用ウィンドウ300から切り貼りして持ってくる操作を行う。この切り貼りしたデータはマッピングデータと呼ぶ。
【0069】
先ず、マウス203を用いて元テーブル表示用ウィンドウ300上を直接指示して、切り取るべきマッピングデータを指定する(ステップ2001)。この指定した場所に対応するデータを取り出し(ステップ2002)、対応するデータが存在するかどうかを調べる(ステップ2003)。もしマウスで指定した場所にデータがない場合(画面上の余白部分を指定したり、実際にデータの存在しないマスを選択した場合等)には、ステップ2001へ戻って再びマウス入力を行う。一方、対応データが取り出せたなら、マウス203を用いてアレンジテーブル配置域619上の貼り付け位置を直接指示する(ステップ2004)。そしてこの指定された位置にステップ2002で取り出したデータを表示する(ステップ2005)。その後、部品情報領域の空きリストから一個分の領域900をもらい(ステップ2006)、もらった部品情報領域900に以下の情報を設定する(ステップ2007)。
【0070】
Figure 0003977874
そして、この部品情報領域900を、繰返し情報領域800の部品情報領域815に順次連結するように接続する。即ち、初めての部品である場合は、領域815へ上記部品情報領域900のアドレスを格納し、2番目以降の部品であれば既に連結されている部品情報領域900を順次辿って、終端の部品情報領域900を検出し、検出した部品情報領域900の領域911にアドレスを格納する(ステップ2008)。
【0071】
指定座標から対応する元テーブル400上のデータを求める上記ステップ2002の処理手順を、図21に示すフローチャートに従って説明する。
【0072】
まず、元テーブル表示用ウィンドウ300上のマウスで指定された座標を(X、Y)とし、これに対応する同画面上の枠のフィールド番号i、レコード番号jを次の計算式によって求める。
【0073】
Figure 0003977874
上記計算式では、右辺から左辺への代入時に数値が整数化される。画面上の一番左上隅のデータ表示枠を0フィールド及び0レコード番目とした時に、上記計算式より、マウスで選択された座標に対応する、画面上のデータ表示枠のフィールド番号及びレコード番号が求まる(ステップ2101)。
【0074】
次に、上記ステップ2101で求めたiとjの値が適切であるかを検査する。すなわち、横方向には5フィールド分、縦方向には4レコード分の表示場所しか存在しないので、iやjの値が負の数値であったり、これら表示場所の大きさよりも大きな値であってはならない。
【0075】
そこでまず、横方向について、iの値が0以上かつ5未満であるかを調べる(ステップ2102)。もし上記範囲であるなら、さらに縦方向について、jの値が0以上4未満であるかを調べる(ステップ2103)。ここでも範囲内であるなら、データ表示枠が選択されたことになり、上記ステップ2102で求めたiおよびjの値は元テーブル表示用ウィンドウ上の値であるので、これにそれぞれ、表示先頭フィールド番号501の値、表示先頭レコード番号502の値を加えて、実際の元テーブルデータ400の対応するフィールド番号およびレコード番号に変換する(ステップ2104)。この変換後の値を(I、J)とする。すなわち、元テーブル400上でフィールド番号がI、レコード番号がJの場所のデータが対応データとなる。そして、元テーブル300の(I、J)の場所に実際にデータが存在するかを調べて(ステップ2105)、存在しなければ指定した箇所は空欄だったことになり、対応データなしとして本処理を終了し、存在すれば(I、J)の場所のデータを取り出して(ステップ2106)終了する。
【0076】
一方、ステップ2102、2103のいずれかの判定処理において範囲外であっても、データ表示枠外をマウスで指定されたことになり、対応データなしとして本処理を終了する。
【0077】
以上の処理により、基準レコード先頭位置からの相対的位置により元テーブルの参照データ位置を記憶できる。特定のレコードだけでなくその前後のレコードも位置関係を明確にして保持できるので、利用者は元テーブル表示用ウィンドウ300の任意のデータを指定して、アレンジ用ウィンドウ600をアレンジテーブル配置域619の任意の場所に置くことが出来る。本処理を繰返し使用することで、データの配置を好きなように並び変えて置くことが出来る。
【0078】
次に、アレンジテーブル配置域に置かれた部品に対する複写や移動の操作、あるいは、罫線枠や表見出しに使用する固定文字列の配置の手順について述べる。
【0079】
まず、既に配置された部品を移動する手順を図22のフローチャートに従って説明する。本処理は、コマンドメニュー602の「移動」をマウス203で選択した後に起動される。
【0080】
はじめに、利用者は移動元矩形領域の左上角と右下角の2点をマウス203を用いて指定する(ステップ2201)。次に移動先の位置を1点マウス203で指定する(ステップ2202)。ここで移動先の位置は移動元の左上角に対応する。そして既に配置済の部品を順次取り出すために、使用部品リストに連結されている部品情報領域900の先頭を取り出し(ステップ2203)、領域(部品)があるかどうか調べ(ステップ2204)、なければ本処理を終了し、あればその部品の位置が移動元矩形領域内に含まれているか否かを調べる(ステップ2205)。領域内に含まれるか否かの判定は、部品情報領域900の配置位置情報901から904が示す矩形領域が完全にステップ2201で指定した矩形領域内に完全に含まれるどうかを調べればよい。領域内に含まれる場合には、前記部品のID番号910を用いて、画面上から前記部品の表示を消去し(ステップ2206)、前記部品の位置情報901から904の値を移動元の左上から移動先の座標の差だけ加えた値に書替えて(ステップ2207)、新たにその位置情報で該部品を表示する(ステップ2208)。そして使用部品リストをたぐって次の部品を取り出し(ステップ2209)、ステップ2204へ戻る。また、判定処理2205で移動元領域内でない場合には何もせずにステップ2209へ進み次の部品を取り出す。
【0081】
次に配置済み部品を複写する手順を図23のフローチャートに従い説明する。本処理は、コマンドメニュー603の「複写」をマウス203で選択した後に起動される。
【0082】
まず、上記の「移動」の場合と同様に複写元矩形領域をマウス203で指定し(ステップ2301)、移動先位置をマウス203で指定する(ステップ2302)。そして使用部品リストに連結されている部品情報領域900の先頭を取り出し(ステップ2303)、領域(部品)があるか否かを調べる(ステップ2304)、部品がない場合には処理を終了し、あれば前記部品が複写もと領域内に含まれるか否かを調べる(ステップ2305)。領域内含まれる場合には、新たに部品情報領域900を空リスト1201から一つもらい(ステップ2006)、もらった空き部品情報領域900の各属性に前記使用済部品の属性を複写する(ステップ2308)。その後、空き部品情報領域900の位置情報901から904の値を複写元の左上から複写先の座標の差だけ加えた値に書替えて(ステップ2309)、この空き部品情報領域900の内容をアレンジテーブル配置域619へ表示する(ステップ2309)。そして、空き部品情報領域900を使用部品リストの末尾へ連結する(ステップ2008)。その後、次の配置済み部品を連鎖をたどって取り出し(ステップ2311)、ステップ2304へ戻る。また、判定処理2305で複写元領域内でない場合は何もせずにステップ2311へ進み次の部品を取り出す。
【0083】
次に、配置済み部品を消去する手順について図24のフローチャートに従い説明する。本処理は、コマンドメニュー605の「消去」をマウス203で選択した後に起動される。
【0084】
先ず、上記の「移動」と同じように消去領域をマウスで指定する(ステップ2401)。次に使用部品リストに連結されている部品情報領域900の先頭を取り出し(ステップ2402)、領域(部品)があるか否かを調べ(ステップ2403)、部品がない場合には処理を終了する。部品がある場合には前記部品の表示位置901から904が消去領域に含まれているかどうか判定して(ステップ2404)、含まれている場合には前記部品の表示を消去し(ステップ2405)、前記部品情報領域900を使用部品リストから取り除き(ステップ2406)、この取り除いた部品情報領域900を部品空きリストへ返す(ステップ2407)。その後、ステップ2403へ戻り、次の部品(使用部品リストからの取り除きにより既に次の部品が取り出されている)を対象にして処理を続ける。また判定処理2404で領域内に含まれない場合には、次の配置済み部品を連鎖をたどって取り出し(ステップ2408)、ステップ2403へ戻る。
【0085】
次に、罫線枠の描画手順を図25のフローチャートに従い説明する。本処理はコマンドメニュー606「描画」をマウス203で選択した後に起動される。
【0086】
まずアレンジテーブル配置域619上で、利用者は直線の始点と終点をマウス203で指定し(ステップ2501)、この2点間に直線を表示する(ステップ2502)。その後、部品情報領域900を一つ空きリスト1201からもらい(ステップ2006)、この領域900の位置情報901から904に始点と終点の座標位置を格納し、部品種別905へ"直線"を設定する(ステップ2504)。そして、このもらった領域を使用部品リストの末尾に連結する(ステップ2008)。本手順を繰り返して複数の直線を描き、罫線枠を作成できる。
【0087】
また、罫線のみを画面上から消去する手順は、コマンドメニュー607「消去」を選択したのちに起動する。本処理手順は、先の図24のフローチャートにおけるステップ2404の判定処理を、消去領域内に含まれ、かつ部品種別905が"直線”であるという判定内容に変更することで容易に実現できる。
【0088】
次に、帳票の見出し文字や、コメントといった元テーブルのデータとは関連ない文字列を配置する手順を図26のフローチャートに従い説明する。本処理はコマンドメニュー608「生成」をマウスで選択した後に起動される。
【0089】
まず、文字列入力用のウインドウを生成し(ステップ2601)、キーボード202を用いて利用者が文字列を入力する(ステップ2602)。その後、アレンジテーブル配置域619上をマウス203で指定して配置すべき位置を指定する(ステップ2603)。次に部品情報領域900を空きリストから一つもらい(ステップ2006)、この領域900に対して、上記ステップ2602で入力した文字列を文字列格納領域906に設定し、配置位置に関する情報を領域901から904に設定し、部品種別905に "固定文字列"を設定する。そして、この部品情報領域900を使用部品リストの末尾に連結する(ステップ2008)。以上の処理により、利用者の入力した任意の文字列をアレンジテーブル配置域の好きな場所に置くことができる。
【0090】
以上に述べたステップ106により、アレンジテーブル配置域619に利用者の所望するレイアウトの見本となる基本部分を作成する。例えば、図27に示すような表示が行われる。同図における2701の文字列は固定文字列として利用者が入力した文字列である。罫線枠2702も配置されていることが分かる。
【0091】
アレンジテーブル配置域619に利用者の所望するレイアウトの基本部分を作成した後は、この基本部分をどのようにアレンジテーブル配置域619上に繰り返すかを指定する。
【0092】
そこでまず、繰返し部分となる領域をアレンジテーブル配置域619上をマウス203で利用者が指定入力して繰返し対象となる配置部品を決定する(ステップ107)。本ステップ107の詳しい処理手順を図28のフローチャートに従い説明する。なお本処理はコマンドメニュー610「領域指定」を選択した後に起動される。
【0093】
はじめに、利用者はマウス203を用いてアレンジテーブル配置域619上の2点(繰返し部分となる矩形領域の左上角と右下角)を指定する(ステップ2801)。次に、配置済の部品を順次取り出すために、使用部品リストに連結されている部品情報領域900の先頭を取り出し(ステップ2802)、領域(部品)があるかどうか調べ(ステップ2803)、あればその部品の位置が繰返し矩形領域内に含まれているか否かを調べる(ステップ2804)。領域内に含まれるか否かの判定は、部品情報領域900の配置位置情報901から904が示す矩形領域が完全にステップ2801で指定した矩形領域内に完全に含まれるどうかを調べればよい。領域内に含まれる場合には、前記部品の繰返しフラグ909に"ON"を設定し(ステップ2805)、その部品位置情報901から904の値を参照してこれまで取り出した繰返し領域内に含まれる部品の中で最も左側、右側、上側及び下側の位置を求め処理を行う(ステップ2807)。その後使用部品リストをたぐって次の部品を取り出し(ステップ2809)、ステップ2803へ戻る。また、判定処理2205で繰返し領域内にない場合には、何もせずにステップ2809へ進み、次の部品を取り出す。また、全ての配置部品に対する処理が終了し、ステップ2803の判定処理で部品がもうない場合、ステップ2807で求めた最終的な部品の最も左、上、右及び下側の座標位置をそれぞれ繰返し情報領域800の802から805まで領域に格納して処理を終了する。次に、ステップ107で指定した繰返し領域がどういう順序で繰り返されるのか、あるいは何個繰り返すかといった繰返しパラメータを入力する(ステップ108)。本処理の詳しい処理手順を図30のフローチャートに従い説明する。
【0094】
先ず、繰返しパラメータ入力ウィンドウ2900を生成する。本ウィンドウ2900の出力例を図29に示す。同図に示すように横方向および縦方向への繰返し個数を入力する領域2901、2902、および繰返し順序を選択する繰返し種別メニュー(2903からの2906)を有する。ここで繰返し種別について説明する.
繰返し種別には4種類あり、この中の一つが指定できる。単純繰返し2903は、図31に示すように、ステップ107で指定した繰返し領域を斜線部3101とする時、この3101と同様のレイアウトが下方向に単純に繰り返すものである。繰返し順序は3102から順に番号の大きいものを表示するものとする。
【0095】
マルチ縦繰返し2904を指定した場合は、図32に示すように、一旦下方向へ向かって繰返し、その後右へ移動して再び上から下へ繰り返すものである。
【0096】
マルチ横繰返し2905を指定した場合は、図33に示すように、一旦右方向へ向かって繰返し、その後下へ移動して再び左から右へ繰り返すものである。
【0097】
また、ビル窓繰返し2906は、先ず一旦下方向へ指定個数だけ繰返し、これと同様な繰返しブロックをまず右方向へ、そして下方向へ行うものである。従って、ブロック内の繰返し個数を入力する領域2907が本メニューに対しては存在している。この繰返し数の初期値は"1"とする。
【0098】
繰返しパラメータ入力ウィンドウ生成の後は、繰返し可能数を計算して2901および2902の領域に表示する(ステップ3002)。ステップ107において繰返し範囲内の部品の最も左上と右下の座標が繰返し情報領域800の802から805に格納されているので、この値を元に、繰返し領域の最大横幅と縦幅を求め、これが用紙情報領域700の横サイズ702および縦サイズ703の大きさの中に最大(極力詰めて繰り返した場合)何個繰り返し可能かを計算すればよい。その後、繰返し種別メニュー2903から2906のうち一つをマウスで指示して選択する(ステップ3003)。このとき、繰返し種別がビル窓繰返し2906である場合、窓内の繰返し数2907を入力する。その後、必要に応じて、繰返し可能数2901、2902の値を変更する(ステップ3004)。本変更では表示されていた元々の数値以下の値しか入力できない。
【0099】
繰返しパラメータ入力の次は繰返し位置を入力する(ステップ109)。本処理を図35のフローチャートに従い詳しく説明する。
【0100】
まず、ステップ3003で選択した繰返し種別を調べる(ステップ3501)。この繰返し種別に応じて異なる個数の繰返し位置を指定する。繰返し種別が単純繰返しの場合、繰返し位置を1点指定する(ステップ3502)。具体的には図31に示したポイント3120のように次に配置する部品場所を指定する。繰返し種別がマルチ縦繰返し、またはマルチ横繰返しの場合は、繰返し位置を2点指定する(ステップ3503)。図32のポイント3220、3221、または図33のポイント3320、3321がこの2点に該当する。また、繰返し種別がビル窓繰返しの場合は3点を指定する(ステップ3504)。図34のポイント3420、3421、3422がこれに該当する。いずれの場合もマウス203を用いてアレンジテーブル配置域619を直接指示する。繰返し位置を指定した後、アレンジテーブル配置域619で実際に可能な繰返し数を求める。単純繰返しの場合はY軸方向の繰返し数のみを求め(ステップ3505)、マルチ縦および横繰返しの場合はY軸方向とX軸方向の繰返し数を求め(ステップ3506)、ビル窓繰返しの場合は、X軸方向及びY軸方向の繰返し個数の算出に加えてビル窓内の繰返し個数も必要となる。繰返し数の計算は、例えば図31の単純繰返しの場合は、繰返しマージンのサイズ3110が繰返し可能サイズ3112にどれだけ入るかを求めればよいので、簡単にサイズ3112÷サイズ3110の整数部のみを取り出すことで実現できる。X軸方向についても同様に、サイズ3212÷サイズ3211で求めることができる。
【0101】
繰返し位置指定後は、実際の繰返しを適用して元テーブルの残りレコードを自動的にアレンジテーブル配置域に順次表示する(ステップ110)。
【0102】
本処理も繰返し種別により異なるので、単純繰返し、マルチ縦繰返し、マルチ横繰返し、ビル窓繰返し各々について説明する。
【0103】
まず、単純繰返しの場合を図36のフローチャートに従い説明する。まずY軸方向のマージン値3110をプログラム変数△yに代入し(ステップ3601)、X軸方向のマージン値をあらわすプログラム変数△xには"0"を代入する(ステップ3602)。そして画面に繰返し表示した個数をカウントするためのプログラム変数jに"1"を代入する(ステップ3603)。その後プログラム変数jの値がY軸方向の繰返し数より小さな数値であるか否かを調べ(ステップ3604)、もし繰返し数以上になっていれば処理を終了し、まだ繰返し数未満なら基準レコードの先頭番号503の値を基準レコード幅504の値だけ加算し(ステップ3605)、この新たな基準レコード先頭番号の場所に実際のデータが存在しないか否かを調べる(ステップ3606)。データが存在しなければ処理を終了し、存在すれば現基準レコードを対象に繰返し表示を実行する(ステップ3607)。この繰返し表示の手順(3607)の詳細を図40のフローチャートに従い説明する。
【0104】
まず、既配置部品の先頭部品900を取出す(ステップ4001)。部品が存在しないときは処理を終了する。存在すれば前記部品の繰返し対象フラグ909が"ON"か否かを調べる(ステップ4003)、もしフラグ"ON"ならさらに前記部品の種別905が"マッピング"であるか否かを調べ(ステップ4004)、そうなら対応データを取り出す(ステップ4005)。ここで取出すデータは、元テーブルデータ400上のフィールド名404がマッピングフィールド名906と一致し、レコード番号403が基準レコード先頭番号503の値にマッピングレコード番号907の値を加えた値が示す箇所のデ−タである。また、部品種別がマッピングデータでない場合は("固定文字列"、"直線"であった場合)、ステップ4005を飛ばして、前記部品の位置を変更する(ステップ4006)。上記変更処理では、前記部品情報領域900の部品配置位置を示す情報のうちX軸方向の座標値901、903の値に対して一時的にプログラム変数△xの値を加算し、Y軸方向の座標値902、904の値に△yの値を加算する。そしてこの座標位置で前記部品を表示する(ステップ4007)。その後、次の部品を取り出し(ステップ4008)、ステップ4002へ戻り残り部品について処理する。なお判定処理4003で前記部品の繰返しフラグが"OFF"である場合は、ステップ4008へ飛び、次の部品について処理を進める。
【0105】
上記のように繰返し部品の一回目の繰返しが行われた後、プログラム変数△yの値を更に1マージン分加算し(ステップ3608)、繰返しのカウンタ変数jをインクリメントして(ステップ3609)、ステップ3604へ戻る。その結果、画面上に1頁分の繰返し表示が完了する。
【0106】
次に、マルチ縦繰返しのときの繰返し適用処理手順を図37のフローチャートに従い説明する。まず、Y軸方向のマージン値3210をプログラム変数△yに代入し(ステップ3701)、X軸方向のマージン値をあらわすプログラム変数△xには"0"を代入する(ステップ3702)。そして、画面Y方向に繰返し表示した個数をカウントするためのプログラム変数jに"1"を代入し(ステップ3703)、X方向に繰返し表示した個数カウント用の変数iに"0"を代入する(ステップ3704)。その後、プログラム変数iの値がX軸方向の繰返し数(ステップ3506で求めた)より小さな数値であるか否かを調べ(ステップ3705)、もし繰返し数以上になっていれば処理を終了し、繰返し数未満なら、さらにプログラム変数jの値がY軸方向の繰返し数(ステップ3506で求めた)より小さな数値であるか否かを調べる(ステップ3706)。もし繰返し数以上になっていれば(ある一列のカラムに対する繰返し表示が終了した時)△xの値をX軸方向のマージン1つ分3211だけ増やし(ステップ3709)、X軸方向の繰返し数カウント用の変数iをインクリメントする(ステップ3710)。そして、△yに"0"を設定し(ステップ1711)、jにも"0"を代入する(ステップ3711)。これによりX軸方向の次カラムへ処理を進めることになる。その後、ステップ3705へ戻る。また、判定処理3706においてjの値がY軸方向の繰返し数未満である場合は、基準レコードの先頭番号を基準レコード幅分だけ加算し(ステップ3605)、その加算結果が示す場所にデータが存在するか否かを調べる(ステップ3606)。もしデータが存在しなければ処理を終了する。デ−タが存在すれば現在の基準レコードを対象に繰返し表示を実行する(ステップ3607)。こうして繰返し部品の一回目の繰返しが行われた後、プログラム変数△yの値を更に1マージン分3210加算し(ステップ3707)、繰返しのカウンタ変数jをインクリメントして(ステップ3708)、ステップ3706へ戻り、Y軸方向の次の場所に対する繰返し表示を実行する。こうして画面上に1頁分の繰返し表示が完了する。
【0107】
次に、マルチ横繰返しの時の繰返し適用処理手順を図38のフローチャートに従い説明する。本処理は図37で示したマルチ縦繰返しの処理手順のX軸方向とY軸方向の処理を入れ替えたものである。まずX軸方向のマージン値3311をプログラム変数△xに代入し(ステップ3801)、Y軸方向のマージン値をあらわすプログラム変数△yには"0"を代入する(ステップ3802)。そして画面Y軸方向の繰返し表示個数をカウントするためのプログラム変数jに"0"を代入し(ステップ3803)、X方向の繰返し個数カウンタ変数iに"1"を代入する(ステップ3804)。その後、プログラム変数jの値がY軸方向の繰返し数(ステップ3506で求めた)より小さいか否かを調べ(ステップ3805)、もし繰返し数以上になっていれば処理を終了し、繰返し数未満なら、さらにプログラム変数iの値がX軸方向の繰返し数(ステップ3506で求めた)より小さいか否かを調べる(ステップ3806)。もしiの値が繰返し数以上になっていれば(ある一行のカラムに対する繰返し表示が終了した時)△yの値をY軸方向のマージン1つ分3310だけ増やし(ステップ3809)、Y軸方向の繰返し数カウント用の変数jをインクリメントする(ステップ3810)。そして△xに"0"を設定し(ステップ3811)、iにも"0"を代入する(ステップ3812)。これによりY軸方向の次の行へ処理を進め、その後ステップ3805へ戻る。また判定処理3806でiの値がX軸方向の繰返し数未満である場合、基準レコードの先頭番号を基準レコード幅分だけ加算し(ステップ3605)、その場所にデータが存在するか否かを調べる(ステップ3606)。もしデータが存在しなければ処理を終了する。存在すれば現基準レコードを対象に繰返し表示を実行する(ステップ3607)。こうして繰返し部品の一回目の繰返しが行われた後、プログラム変数△xの値を更に1マージン分加算し(ステップ3807)、繰返しのカウンタ変数iをインクリメントして(ステップ3808)、ステップ3806へ戻り、X軸方向の次の場所での繰返し表示を実行する。こうして画面上に1頁分の繰返し表示が完了する。
【0108】
次に、ビル窓繰返しの時の繰返し適用処理手順を図39のフローチャートに従い説明する。本処理は図38で示したマルチ横繰返しの処理手順に更にビル窓内のY軸方向繰返しの処理を追加したものである。まず窓内Y軸方向のマージン値3410をプログラム変数△zに代入し(ステップ3901)、X軸方向のマージン値およびY軸方向のマージン値を表わすプログラム変数△x、△yには"0"を代入する(ステップ3902)。そして画面窓内の繰返し表示個数をカウントするためのプログラム変数kに"1"を代入し(ステップ3903)、X軸方向の繰返し個数カウンタ変数iおよびY軸方向の繰返し個数カウンタ変数jに共に"0"を代入する(ステップ3904)。その後、プログラム変数jの値がY軸方向の繰返し数(ステップ3507で求めた)より小さいか否かを調べ(ステップ3905)、もし繰返し数以上になっていれば処理を終了し、繰返し数未満なら、さらにプログラム変数iの値がX軸方向の繰返し数(ステップ3507で求めた)より小さいか否かを調べる(ステップ3906)。もし繰返し数以上になっていれば(ある一行のカラムに対する繰返し表示が終了した時)△yの値をY軸方向のマージン1つ分3411だけ増やし(ステップ3913)、Y軸方向の繰返し数カウンタ変数jをインクリメントする(ステップ3914)。そして△xに"0"を設定し、iにも"0"を代入する(ステップ3915)。これによりY軸方向の次の行へ処理を進める、その後ステップ3905へ戻る。また判定処理3906でiの値がX軸方向の繰返し数未満である場合、さらにプログラム変数kが窓内繰返し数より小さいか否かを調べ(ステップ3907)、窓内繰返し数以上であれば(ある窓内の繰返しが終了した時)、プログラム変数k、および△zの値を"0"にする(ステップ3910)。そしてX軸方向の次の窓を表示するために△xの値を更に1マージン分3412だけ加算し(ステップ3911)、変数iをインクリメントし(ステップ3912)、その後ステップ3906へ戻る。一方、判定処理3907でkの値が窓内繰返し数未満である場合、基準レコードの先頭番号を基準レコード幅分だけ加算し(ステップ3605)、その場所にデータが存在するか否かを調べる(ステップ3606)。もしデータが存在しなければ処理を終了する。存在すれば現在の基準レコードを対象に繰返し表示を実行する(ステップ3916)。本ステップ3916は図40のステップ4006において、Y軸方向の位置変更で△yだけでなく、△zの値も加えるように変更することで実現できる。繰返し表示後は△zの値を窓内マージン1つ分3410だけ加算し(ステップ3908)、変数kの値をインクリメントして(ステップ3909)、ステップ3907へ戻り、窓内の次の繰返し処理を行う。その結果、画面上に1頁分の繰返し表示が完了し、アレンジテーブル配置域619にアレンジテーブルが表示される。
【0109】
以上説明した実施例によれば、単純な2次元形式を有する表データを利用者の所望するレイアウトに簡単な対話操作で変更できる。その際、対話形式で指定して配置する表形式データは、基準レコードの先頭レコードだけでなく、その前後に存在する任意のレコードも自由に指定できる。
【0110】
また、元テーブル300のデ−タ内容がそのままの表示形式で、アレンジテーブル配置域619へ表示されるので、あたかも直接データを配置する感覚で帳票作成ができるので、プログラミングをする必要がなく、計算機に不慣れな利用者でも出力したい帳票を簡単に定義できる。
【0111】
なお、上記実施例は1頁目について繰返し表示するものであるが、2頁目以降を表示することも容易に実現できる。この手順を図41のフローチャートに従って説明する。
【0112】
まず、利用者はキーボード202を用いて表示すべき頁数を入力する(ステップ4101)。次にこの入力頁数分だけ基準レコードを一時的に移動する(ステップ4102)。移動レコード数Nは、
P:入力頁数
X:頁内のX軸方向の繰返し数
Y:頁内のY軸方向の繰返し数
Z:窓内繰返し数
H:基準レコード幅
とした時、
N = (P−1)*X*Y*Z*H (数3)
で計算できる。当初の基準レコード先頭番号にこのNレコードだけ加えた値に一時的に基準レコード先頭番号を変更するのである。
【0113】
そして、この新たな基準レコード先頭番号の位置にデ−タが存在するか否かを調べ(ステップ4103)、存在しなければ入力頁数を元の値に表示しなおし(ステップ4107)、基準レコード先頭番号を元に戻して(ステップ4108)処理を終了する。一方、判定処理4103でデ−タが存在する場合、アレンジテーブル配置域619をクリアし(ステップ4104)、既配置部品の部品情報領域900のうち被繰返し対象フラグ909が"OFF"の部品を、一度だけ表示させる(ステップ4105)。その後、繰返し適用処理を実行して繰返し部品を表示する(ステップ4106)。本ステップ4106は先に説明したステップ110(図36から図39のフローチャート)の繰返し適用処理を次のようにを変更することで実現する。
【0114】
図36のフローチャートにおいて、ステップ3601を△yに対して"0"を設定するようにし、ステップ3603をjに"0"を代入するように変更する。
図37のフローチャートでも、ステップ3701を△yに対して"0"を設定するようにし、ステップ3703をjに"0"を代入するように変更する。
図38のフローチャートでは、ステップ3801を△xに対して"0"を設定するようにし、ステップ3804をiに"0"を代入するように変更する。
図39のフローチャートでは、ステップ3901を△zに対して"0"を設定するようにし、ステップ3903をkに"0"を代入するように変更する。
【0115】
以上の変更を行うことで指定したページの繰返し表示が可能となる。また、コマンドメニュー617、618のページめくり用の領域をマウスで選択した場合、現在の表示ページから−1あるいは+1ページを表示対象として、図41のフローチャートのステップ4102以降の処理を実行する。その結果、ページ単位での帳票スクロールが可能となる。
【0116】
また、これまで説明した実施例は帳票を画面上へ表示するものであったが、これを多少変更することでプリンタ204へ印刷表示できる。この実施例を図42のフローチャートに従い説明する。本フローチャートは図41フローチャートを変更して複数ページを連続して表示できるようにしたものである。
【0117】
まず、表示対象ページを示す変数Pに"1"を設定する(ステップ4201)。そして、変数Pページ分だけ基準レコード先頭番号を一時的に移動する(ステップ4202)。本ステップ4202における変数Pに対応するレコ−ド数の算出は、上記に示した(数3)と同様の計算で求められる。そして、この新たな基準レコード先頭番号の位置に対応デ−タがあるかどうかを調べ(ステップ4103)、もしなければ基準レコードを元に戻し(ステップ4108)、処理を終了する。一方、対応デ−タがあれば、アレンジテーブル配置域619をクリアし(ステップ4104)、非繰返し部品を表示し(ステップ4105)、繰返し適用を実行する(ステップ4106)。その後、アレンジテーブル配置域619へ表示した内容と同様のものをプリンタ204へ出力する(ステップ4203)。そして表示対象ページを次へ進めるために変数Pをインクリメントして(ステップ4204)、ステップ4202へ戻る。本処理により1ページから順次繰返し適用処理を実行して、元テーブルデ−タ400のレコードが存在する限り、画面を書き換えながら、毎画面ごとに印刷ができる。
【0118】
【発明の効果】
本発明によれば、対話操作により、2次元形式の表データを各種のレイアウトをもつ帳票に変更できる。その際、表形式データ上における、基準となるレコードだけでなく、その前後に存在する任意レコードを配置データとして指定できる。さらに、指定したレコード幅分だけ順次レコードをスキップして繰返し表示を適用するので、複数レコードに股がったデータを帳票上に配置し、これを繰返し表示して帳票を作成することが可能となり、繰返し表示による帳票作成において利用者は柔軟かつ効率的に作業をすることができる。
【0119】
【図面の簡単な説明】
【図1】本発明の帳票作成方法の一実施例を示すフローチャートである。
【図2】本発明の一実施例を実現するハードウェアの構成図である。
【図3】元テーブル表示用ウィンドウの画面出力例の図である。
【図4】元テーブルの構造説明図である。
【図5】元テーブル表示先頭位置情報、基準レコード情報格納エリア説明図である。
【図6】アレンジウィンドウの画面出力例の図である。
【図7】用紙情報領域の説明図である。
【図8】繰返し情報領域の説明図である。
【図9】部品情報領域の説明図である。
【図10】用紙情報領域、繰返し情報領域、部品情報領域の関連の説明図である。
【図11】繰返し情報領域の空きリストの説明図である。
【図12】部品情報領域の空きリストの説明図である。
【図13】元テーブル表示用ウィンドウの表示手順を示すフローチャートである。
【図14】元テーブル表示用ウィンドウでのフィールド名表示手順を示すフローチャートである。
【図15】元テーブル表示用ウィンドウでのデータ表示手順を示すフローチャートである。
【図16】元テーブル表示用ウィンドウでの基準レコード設定手順を示すフローチャートである。
【図17】アレンジ情報格納領域の確保と初期化の手順を示すフローチャートである。
【図18】アレンジ用ウィンドウへのデータ配置手順を示すフローチャートである。
【図19】コマンドメニュー位置テーブルの説明図である。
【図20】元テーブル表示用ウィンドウからアレンジ用ウィンドウへのデータ配置手順を示すフローチャートである。
【図21】元テーブル表示用ウィンドウ上の指定位置から対応する元テーブルデータを取り出す手順を示すフローチャートである。
【図22】アレンジテーブル配置域での表示部品の移動手順を示すフローチャートである。
【図23】アレンジテーブル配置域での表示部品の複写手順を示すフローチャートである。
【図24】アレンジテーブル配置域での表示部品の消去手順を示すフローチャートである。
【図25】アレンジテーブル配置域での罫線描画手順を示すフローチャートである。
【図26】アレンジテーブル配置域での固定文字列配置手順を示すフローチャートである。
【図27】帳票作成過程でのアレンジテーブル配置域の表示例の図である。
【図28】アレンジテーブル配置域での繰返し部品指定手順を示すフローチャートである。
【図29】繰返しパラメータ設定画面の画面出力例の図である。
【図30】繰返しパラメータ設定手順を示すフローチャートである。
【図31】単純繰返しの帳票出力の説明図である。
【図32】マルチ縦繰返しの帳票出力の説明図である。
【図33】マルチ横繰返しの帳票出力の説明図である。
【図34】ビル窓繰返しの帳票出力の説明図である。
【図35】繰返し位置入力手順を示すフローチャートである。
【図36】単純繰返し適用時の繰返し表示手順を示すフローチャートである。
【図37】マルチ縦繰返し適用時の繰返し表示手順を示すフローチャートである。
【図38】マルチ横繰返し適用時の繰返し表示手順を示すフローチャートである。
【図39】ビル窓繰返し適用時の繰返し表示手順を示すフローチャートである。
【図40】一回の繰返しにおける繰返し表示手順を示すフローチャートである。
【図41】指定ページの帳票表示手順を示すフローチャートである。
【図42】全ページの印刷手順を示すフローチャートである。
【符号の説明】
201…ディスプレイ装置、202…キーボード入力装置、203…マウス入力装置、204…プリンタ装置、205…処理装置、206…プログラム格納装置、207…記憶装置

Claims (2)

  1. フィールド番号及びレコード番号によって列番号及び行番号とが各々特定される複数の項目が二次元に配列されて形成され、記憶装置に記憶されている二次元の表形式データと、
    前記項目に格納されるデータを表示するための出力領域と、
    前記レコード番号を特定するためのマッピングレコード番号を格納する第一の格納領域及び、前記フィールド番号を特定するためのマッピングフィールド名を格納する第二の格納領域及び、前記出力領域における表示位置を特定するための位置情報を格納する第三の格納領域とを有する、前記記憶装置に記憶されている部品情報領域と、
    前記レコード番号の内から指定された基準レコード先頭番号を格納する第四の格納領域及び、前記レコード番号同士の差の値であるレコード幅を格納する第五の格納領域及び、
    前記部品情報領域を特定するためのポインタとを有する、前記記憶装置に記憶されている繰り返し情報領域と、
    を有する計算機を用いて、前記表形式データの前記項目に格納されているデータを前記出力領域へ表示する帳票作成方法であって、
    繰り返し適用の指示を受け付けた場合に、
    (a)前記計算機が、前記記憶装置に記憶されている前記繰り返し情報領域の前記第四の格納領域に格納されている基準レコード先頭番号と前記記憶装置に記憶されている前記第五の領域に格納されているレコード幅を加えて得られる第二の基準レコード番号を計算するステップと、
    (b)前記計算機が、前記記憶装置に記憶されている前記繰り返し情報領域に格納されている前記ポインタで特定される第一の部品情報領域を抽出するステップと、
    (c)前記計算機が、抽出された前記第一の部品情報領域に格納されているマッピングレコード番号の値と前記第二の基準レコード番号の値とを加えて得られるレコード番号を計算するステップと、
    (d)前記計算機が、抽出された前記第一の部品情報領域に格納されている前記フィールド番号と、ステップ(c)で計算された前記レコード番号とで特定される前記項目に格納されているデータを前記記憶装置から抽出するステップと、
    (e)前記計算機が、ステップ(d)で抽出された前記データを、前記出力領域において、抽出された前記第一の部品情報領域に格納されている前記位置情報で特定される位置から所定の長さ分所定の向きに移動した位置に表示するステップと、
    (f)前記計算機が、抽出された前記第一の部品情報領域に格納されているポインタで特定される第二の部品情報領域を前記記憶装置から抽出するステップと、
    (g)前記計算機が、抽出された前記第二の部品情報領域に格納されているマッピングレコード番号の値と前記第二の基準レコード番号の値とを加えて得られるレコード番号を計算するステップと、
    (h)前記計算機が、前記第二の部品情報領域に格納されている前記フィールド番号と、ステップ(g)で計算された前記レコード番号とで特定される項目に格納されているデータを前記記憶装置から抽出するステップと、
    (i)前記計算機が、ステップ(h)で抽出された前記データを、前記出力領域において、前記第二の部品情報領域の前記第三の格納領域に格納されている前記位置情報で特定される位置から前記ステップ(e)における前記所定の長さ分、前記ステップ(e)における前記所定の向きに移動した位置に表示するステップと、
    を有することを特徴とする帳票作成方法。
  2. 前記繰り返し情報領域の前記第五の領域に格納されている前記レコード幅は前記計算機の有する入力装置への入力によって設定されることを特徴とする請求項1記載の帳票作成方法。
JP14026392A 1992-06-01 1992-06-01 文書出力方法および装置 Expired - Lifetime JP3977874B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP14026392A JP3977874B2 (ja) 1992-06-01 1992-06-01 文書出力方法および装置
US08/067,667 US5765005A (en) 1992-06-01 1993-05-26 Method for preparing form

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14026392A JP3977874B2 (ja) 1992-06-01 1992-06-01 文書出力方法および装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003408408A Division JP3978173B2 (ja) 2003-12-08 2003-12-08 帳票作成方法

Publications (2)

Publication Number Publication Date
JPH05334327A JPH05334327A (ja) 1993-12-17
JP3977874B2 true JP3977874B2 (ja) 2007-09-19

Family

ID=15264714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14026392A Expired - Lifetime JP3977874B2 (ja) 1992-06-01 1992-06-01 文書出力方法および装置

Country Status (1)

Country Link
JP (1) JP3977874B2 (ja)

Also Published As

Publication number Publication date
JPH05334327A (ja) 1993-12-17

Similar Documents

Publication Publication Date Title
CN102982787B (zh) 曲线图显示装置以及曲线图显示方法
JP2707175B2 (ja) 図形処理システム
JP3977874B2 (ja) 文書出力方法および装置
JPH10283492A (ja) レイアウト組版方法
JP3978173B2 (ja) 帳票作成方法
JP3268029B2 (ja) 手書き入力装置
JP4275808B2 (ja) 文字の割付処理装置
JPH0692153B2 (ja) 文書処理システムにおける数式清書方法
JPH01116729A (ja) 仕様記述のためのエディタ
JPH08202856A (ja) 画像処理方法
JPH0635987A (ja) 回路図作成装置および回路図作成方法
JP2997509B2 (ja) 文書作成装置
JP2842511B2 (ja) 帳票作成装置
JP3608921B2 (ja) 線画処理方法および装置、並びに、その処理を実行するためのプログラムを記録した記録媒体
Kohen A simple and efficient way to design middle resolution fonts'
CN106569785A (zh) 一种作业表单生成方法及设备
JPS63165852A (ja) 雑誌編集システム
JP2990764B2 (ja) 文書処理装置
JP3395372B2 (ja) 表処理装置
JP2833203B2 (ja) 表作成処理装置
JPH04262463A (ja) 割付けシステム
JPH0744446A (ja) グループ化情報の関連付け方法
JPH11134375A (ja) Cadシステム、図形処理方法及び図形処理プログラムを記録した記録媒体
JPH06226945A (ja) 数式清書方法
JPH07195653A (ja) カタログ類の図形修正装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031208

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040301

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040305

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20040507

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060512

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070622

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

EXPY Cancellation because of completion of term