JPH07210432A - データ配置構造変換方法およびデータ配置構造変換システム - Google Patents

データ配置構造変換方法およびデータ配置構造変換システム

Info

Publication number
JPH07210432A
JPH07210432A JP6001297A JP129794A JPH07210432A JP H07210432 A JPH07210432 A JP H07210432A JP 6001297 A JP6001297 A JP 6001297A JP 129794 A JP129794 A JP 129794A JP H07210432 A JPH07210432 A JP H07210432A
Authority
JP
Japan
Prior art keywords
data
blocking
item
distribution
items
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.)
Pending
Application number
JP6001297A
Other languages
English (en)
Inventor
Yumiko Takahashi
由美子 高橋
Naomichi Nonaka
尚道 野中
Satoshi Kikuchi
菊地  聡
Keiichi Nakane
啓一 中根
Masaru Tanaka
勝 田中
Yasubumi Fujii
泰文 藤井
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 Ltd
Original Assignee
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 Ltd filed Critical Hitachi Ltd
Priority to JP6001297A priority Critical patent/JPH07210432A/ja
Publication of JPH07210432A publication Critical patent/JPH07210432A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【構成】変換元の表13Aの複数行に含まれるデータ
を、ブロック化キー項目が一致するデータを一行にまと
め、整列キー項目の順序に従って整列させ、ブロック化
後の表14Aを作成するブロック化のステップを有す
る。また、変換元14Aの表の一行に含まれるデータ
を、分配化パラメータにより定められた数の行に分け、
分配化後の表14Eを作成する分配化のステップを有す
る。また、ブロック化ステップと分配化ステップの両方
を備える。 【効果】変換の仕様を定めるためのパラメータを指定す
るだけで、ユーザが新たにプログラムを組むことなく、
任意の表のデータ配置構造の変換を行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、表形式データのデータ
配置構造を変換するデータ配置構造変換処理システムに
関する。
【0002】
【従来の技術】近年、コンピュータのダウンサイジング
化、ネットワークオペレーティングシステムの発達など
の影響を受けて、パーソナルコンピュータ等の情報処理
装置をLAN(Local Area Networ
k)等のネットワークで接続したシステムが増加してい
る。これらのシステムは、サーバと呼ばれる高性能な情
報処理装置と、クライアントと呼ばれる複数の情報処理
装置から構成されることが多く、クライアントサーバシ
ステムと呼ばれる。クライアントサーバシステムでは、
各クライアント毎に独自の処理を実施することができる
が、処理の際は、必要に応じてサーバが管理する資源
(例えば、ハードディスク、プリンタ等)にアクセスす
ることができるという利点がある。サーバの資源は、複
数のクライアントで共有することも可能である。
【0003】クライアントサーバシステムにおけるデー
タベース(以後、DBと記す)処理では、サーバ上に実
際のデータの管理をするDBエンジンを置き、クライア
ント上にDBフロントエンドと呼ばれるプログラムを置
いて処理を分散させることが広く行われている。DBエ
ンジンとしては、データを表の形式で表現するリレーシ
ョナルデータベースシステム(以後、RDBMSと記
す)が多く用いられている。DBフロントエンドは、D
Bエンジンとの通信機能の他、DBエンジンへのアクセ
ス要求を指示するためのユーザインターフェースを提供
する。DBフロントエンドを、複数のクライアントで動
作させることにより、複数のクライアントでDBを共有
することが可能となる。
【0004】このようなクライアントサーバ型のDB処
理システムが普及するにつれて、クライアントで動作す
る流通ソフトをDBフロントエンドとして利用したいと
いうニーズが高まってきている。クライアントの流通ソ
フトのうち、スタンドアロン環境で広く普及している、
いわゆるスプレッド・シート・プログラムと呼ばれる表
計算手段のソフトウエアは、データの加工や分析など広
範な利用が可能なため、利用のニーズが特に高い。最
近、このようなニーズを受けて、クライアントの表計算
手段からサーバのDBをアクセスするための製品が各種
提供されるようになってきた。これらの製品は、DBフ
ロントエンドツールと呼ばれている。これらのDBフロ
ントエンドツールは、DBアクセス用の標準的なインタ
ーフェースであるSQL(Structured Qu
ery Language)と呼ばれる言語のコマンド
をサーバのデータベースエンジンに送る機能と、検索し
たデータを表計算手段に転送する機能を持つ。
【0005】表計算手段からのDBアクセスは、表計算
手段固有のマクロと呼ばれるプログラムに、DBフロン
トエンドツールを制御する内容を記述し、そのマクロプ
ログラムを実行することで実現する。マクロプログラム
は、表計算手段での様々な作業(例えば、計算処理、グ
ラフ作成等)を、一括して自動的に行うためにユーザが
作成するものである。マクロプログラムを作成する際に
は、表計算手段で用意しているマクロコマンドやマクロ
関数を使用する。
【0006】表計算手段上でDBのデータを活用する例
としては、佐々原誠らによる「PC/WSソフトとのデ
ータ連携(ホストデータ)」(情報処理学会平成3年後
期全国大会論文集(1) p.1−375)や、山田千
恵子による「ユーザI/FとAPI関数のチェックポイ
ントと問題点を探る」((株)リックテレコム発行、ネ
ットワークコンピューティング1993.11 p.4
1〜47)などに記載されているものがある。
【0007】
【発明が解決しようとする課題】表計算手段に転送され
る検索結果のデータは、RDBMSなどのデータベース
管理システムにより管理される表(以後、DB表と呼
ぶ)と同様のデータ配置である。すなわち、行(レコー
ド)と列(項目)で表現されており、項目の内容を表す
項目名がDB表の最上段に表示されている。しかし、ユ
ーザが必要とする表(以後ユーザ表と呼ぶ)のデータ配
置は、DB表のデータ配置とは異なる場合が多い。その
ため、DB表からユーザ表へのデータ配置構造の変換が
必要となり、ユーザは、データ配置構造の変換処理プロ
グラムを作成しなければならない。しかし、この変換処
理プログラムは、表計算手段のマクロコマンドを用いて
記述しなければならず、プログラム作成が容易ではな
い。
【0008】そこで、本発明は、従来、ユーザがプログ
ラムを作成することにより行なっていたデータ配置構造
の変換処理を、ユーザがいちいちプログラムを作成する
ことなく行なうことのできる、データ配置構造の変換方
法、および、その方法を用いたデータ配置構造変換シス
テムを提供することを目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するた
め、本実施例では、行を示す項目と列を示す項目とによ
り定義されるデータ配置構造を有する、あらかじめ与え
られた表の、該データ配置構造を変換する方法におい
て、上記項目のうち、外部からの入力により定められた
項目を、ブロック化キー項目とし、上記あらかじめ与え
られた表を変換元の表として、該変換元の表の複数行に
含まれるデータを、該ブロック化キー項目が一致するデ
ータを一行にまとめ、整列のために外部からの入力によ
り定められたキー項目である整列キー項目の順序に従っ
て整列させ、ブロック化後の表を作成するブロック化の
ステップを有することを特徴とするデータ配置構造変換
方法が提供される。
【0010】なお、上記データ配置構造変換方法は、あ
らかじめ与えられた表のデータを、外部からの入力によ
り定められた項目のデータを基にしてソートし、ソート
済の表を作成するソートステップをさらに有し、前記ブ
ロック化ステップを、上記ソート済の表を、前記変換元
の表としてブロック化を行なうステップであるとするこ
ともできる。
【0011】また、前記ブロック化ステップは、前記指
定されたブロック化キー項目および整列キー項目のデー
タの組み合わせを、前記あらかじめ与えられた表の一行
に含まれるデータの項目の組み合わせと照合し、上記あ
らかじめ与えられた表にない組み合わせがあれば、該変
換元の表に該項目の組み合わせ対応するブランクデータ
を挿入して前記変換元の表とし、上記あらかじめ与えら
れた表の一つの該組み合わせに重複して対応する複数の
組み合わせがあればエラーとするようにすることもでき
る。
【0012】さらに、本発明では、上記のブロック化ス
テップに加えて、前記あらかじめ与えられた表および前
記ブロック化後の表のいずれかを変換元の表として、該
変換元の前記表の一行に含まれるデータを、分配の仕様
を定めるために外部からの入力された分配化パラメータ
により定められた数の行に分け、複数行として、分配化
後の表を作成する分配化のステップをさらに有すること
を特徴とするデータ配置構造変換方法が提供される。
【0013】上記のブロック化ステップと分配化ステッ
プとの両方を有するデータ配置構造変換方法では、前記
分配化パラメータは、前記変換元の表の一行に含まれる
データのうち、前記分配化後の表の一行に配置するデー
タの配置の連続する個数と、該分配化後の表における該
変換元の表の一行に含まれるデータの配置される列の数
とを含むとすることができる。
【0014】また、本発明では、上記のブロック化ステ
ップと分配化ステップとの両方を有するデータ配置構造
変換方法において、前記ブロック化ステップは、前記指
定されたブロック化キー項目および整列キー項目のデー
タの組み合わせを、前記あらかじめ与えられた表の一行
に含まれるデータの項目の組み合わせと照合し、上記あ
らかじめ与えられた表にない組み合わせがあれば、該変
換元の表に該項目の組み合わせ対応するブランクデータ
を挿入して前記変換元の表とし、上記あらかじめ与えら
れた表の一つの該組み合わせに重複して対応する複数の
組み合わせがあればエラーとし、前記分配化ステップ
は、前記あらかじめ与えられた表が、前記ブロック化後
の表ではないときは、上記あらかじめ与えられた表の一
行に含まれるデータのうちの分配に供するデータの数
が、上記あらかじめ与えられた表の一行に含まれるデー
タのうちの前記変換後の表の一行に配置するデータの配
置の連続する個数と、上記あらかじめ与えられた表の一
行に含まれるデータのうちの該変換後の表における該変
換元の表の一行に含まれるデータの配置される列の数と
を掛けあわせて得られる数の整数倍であれば、上記あら
かじめ与えられた表を前記変換元の表とし、整数倍でな
ければ、エラーとし、上記あらかじめ与えられた表が、
前記ブロック化後の表のときは、該ブロック化後の表を
変換元の表とするデータ配置構造変換方法も提供され
る。
【0015】さらに、本発明では、行を示す項目と列を
示す項目とにより定義されるデータ配置構造を有する、
あらかじめ与えられた表の、該データ配置構造を変換す
る方法において、上記あらかじめ与えられた表を変換元
の表として、該変換元の表の一行に含まれるデータを、
分配の仕様を定めるために外部から入力された分配化パ
ラメータにより定められた数の行に分け、複数行とし
て、分配化後の表を作成する分配化のステップを有する
ことを特徴とするデータ配置構造変換方法が提供され
る。
【0016】上記の分配化ステップを有するデータ配置
構造変換方法では、あらかじめ与えられた表のデータ
を、外部からの入力により定められた項目のデータを基
にしてソートし、ソート済の表を作成するソートステッ
プをさらに有し、前記分配化ステップは、上記ソート済
の表を、前記変換元の表として分配化を行なうステップ
とすることができる。
【0017】また、上記分配化パラメータは、前記変換
元の表の一行に含まれるデータのうち、前記分配化後の
表の一行に配置するデータの配置の連続する個数と、該
分配化後の表における該変換元の表の一行に含まれるデ
ータの配置される列の数とを含むとすることができる。
【0018】さらに、前記分配化ステップは、前記あら
かじめ与えられた表の一行に含まれるデータのうち、分
配に供するデータの数が、上記あらかじめ与えられた表
の一行に含まれるデータのうち前記変換後の表の一行に
配置するデータの配置の連続する個数と、上記あらかじ
め与えられた表の一行に含まれるデータのうち該変換後
の表における該変換元の表の一行に含まれるデータの配
置される列の数とを掛けあわせて得られる数の整数倍で
あれば、上記あらかじめ与えられた表を前記変換元の表
とし、整数倍でなければ、エラーとするようにすること
ができる。
【0019】また、本発明では、記憶装置と制御装置と
を有し、該記憶装置は、変換元の表および変換後の表の
格納領域を有し、該制御装置は、変換元の表のデータ配
置構造を変換して、該変換後の表の格納領域に格納する
対応付け処理部を有するデータ配置構造変換システムに
おいて、上記記憶装置に格納される表は、行を示す項目
と列を示す項目とにより定義されるデータ配置構造を有
し、上記対応付け処理部は、上記項目のうち、外部から
の入力により定められた項目を、ブロック化キー項目と
し、上記あらかじめ与えられた表を変換元の表として、
該変換元の表の複数行に含まれるデータを、該ブロック
化キー項目が一致するデータを一行にまとめ、整列のた
めに外部からの入力により定められたキー項目である整
列キー項目の順序に従って整列させ、ブロック化後の表
を作成するブロック化処理部と、上記あらかじめ与えら
れた表を変換元の表として、該変換元の表の一行に含ま
れるデータを、分配の仕様を定めるために外部から入力
された分配化パラメータにより定められた数の行に分
け、複数行として、分配化後の表を作成する分配化処理
部とを有することを特徴とするデータ配置構造変換シス
テムが提供される。
【0020】
【作用】本発明では、DB表と同様のデータ配置構造を
有する本発明のデータ配置構造変換システムの記憶装置
内に保持された表(以後0次表と呼ぶ)からユーザ表へ
のデータの並べ替えを実行する手段と、変換処理のため
のパラメータを入力する手段と、前記パラメータを格納
する手段と、変換した表を表計算手段に転送する手段を
設けた。
【0021】ユーザ表は、データの並べ替え処理に先立
ち、表の見出しとなるデータの他、罫線、数式等をユー
ザが予め入力している表である。0次表は、ユーザ表に
おいて見出しとなる項目であるキー項目と、それ以外の
項目である数値項目で構成される。
【0022】データ配置構造の変換処理手段は、DB表
の複数レコードを1行にまとめるブロック化処理部と、
1レコードを複数行に分配する分配化処理部の処理の組
み合わせで実現する。これら処理のパラメータは、ユー
ザ表の見出しデータに適合するものであり、ユーザが入
力する。ブロック化処理のパラメータは、ユーザ表の列
の見出し(縦の見出し)となるキー項目、行の見出し
(横の見出し)となるキー項目と、数値項目である。ま
た、ソートのためのパラメータであるキー項目をソート
する際の昇順/降順の入力も受け付けられる。ブロック
化処理部は、パラメータに従いデータの並べ替えを行
う。分配化処理のパラメータは、0次表における分配を
行いたい項目と、0次表における1行のデータのうち、
1次表で1行に連続して配置するレコードの数と、0次
表における1行のデータのうち、1次表で1列に配置す
るデータの数とを有する。上記の各パラメータは、ブロ
ック化処理のパラメータと分配化処理のパラメータごと
にそれぞれ記憶装置に格納される。ブロック化処理部並
びに分配化処理部は、これら格納されたパラメータに従
いデータ配置構造の変換処理を実行する。データ転送を
する手段は、ブロック化処理と分配化処理によりユーザ
表のデータ配置に変換された表を表計算手段に転送す
る。
【0023】
【実施例】以下、本発明の一実施例を図面を用いて説明
する。ここでは、サーバと、該サーバに信号線を介して
接続された複数のクライアントを有するLAN(ローカ
ルエリアネットワーク)における、クライアントのデー
タ配置構造変換処理を例として、本実施例のDBデータ
の表形式データへのデータ配置構造変換システムを説明
する。図1に、本実施例のデータ配置構造変換システム
の機能ブロック図を示す。図中、黒太の矢印は表データ
の流れを示している。本実施例のLANは、図2に示す
ようにクライアント2が、信号線6を介してサーバ1と
接続されている。サーバ1は、DB表を保持する記憶装
置であるハードディスク4と、ハードディスク4内のD
B表を制御するためのDBエンジン3とを備える。クラ
イアント2は、制御装置200と、記憶装置201と、
入出力装置202とを備える。記憶装置201は、主記
憶22、およびハードディスク装置23を有する。入出
力装置202は、キーボード25、マウス27、および
表示装置29を有する。制御装置200は、CPU(中
央演算装置)21、キーボード25を制御するキーボー
ド制御部24、マウス27を制御するマウス制御部2
6、表示装置29を制御する表示制御部28、および、
信号線6を介して行なわれる通信を制御するLAN制御
部30を有する。
【0024】サーバ1上のDBエンジン3は、各クライ
アント2から発行される検索、更新等の要求コマンドを
受けて、サーバ1上のハードディスク4に格納されたD
B表5にアクセスする。DB表5は、DBエンジン3が
前記アクセスの対象とする表であり、従来の技術で述べ
たように、項目の内容を表す項目名を最上段に、それぞ
れの項目名の下にデータが配置されているデータ配置を
有する。
【0025】クライアント2の主記憶22は、0次表1
3、1次表14、スプレッドシート16、ユーザ表2
0、キー項目データテーブル18、キー項目データ最大
数テーブル19、キー項目データテーブルインデックス
50、ブロック化パラメータテーブル150、分配化パ
ラメータテーブル160、およびスプレッドシート16
を有する。ブロック化パラメータテーブル150は、ブ
ロック化の処理に必要なパラメータであるブロック化パ
ラメータを格納するテーブルであり、分配化パラメータ
テーブル160は、分配化の処理に必要なパラメータで
ある分配化パラメータを格納するテーブルである。ま
た、ブロック化パラメータおよび分配化パラメータを総
称して、対応付けパラメータと呼ぶ。スプレッドシート
16は、表計算手段15の作業用のシートであり、1フ
ァイルとして表計算手段15が管理している。
【0026】0次表13は、オペレーティングシステム
7を経由してDBエンジン3から受け取った検索データ
で構成される表であり、サーバ1内に保持されているD
B表5と同様、項目名を最上段に、以下、行見出し項目
と、その行に含まれる各列見出し項目に応じたデータ
が、一行または複数行配置されたデータ配置構造となっ
ている。また、ユーザ表20は、ユーザにより定義され
たデータ配置構造を有する表である。ユーザ表20は、
ユーザの入力に応じて、DB表5へのアクセスに先立
ち、スプレッドシート16上に表計算手段15により作
成される。ユーザ表20には、ユーザが作りたい表の見
出しとなるデータの他、罫線、数式等が予め入力されて
おり、1次表14のデータが表示される部分だけが空白
になっている。1次表14は、0次表13をブロック
化、分配化して得られるデータ群である。
【0027】0次表13、1次表14、およびユーザ表
20の関係を、具体例を用いて図3に示す。ユーザ表2
0は、ユーザが定義したデータ配置構造であり、図3の
例では、A地区、B地区、4月、5月、生産数、売上数
といった見出しデータが保持されている。これらのデー
タは、ユーザにより予め入力されたものである。0次表
13は、DB表5から検索されたデータであり、図3の
例では、「地区」、「月」、「生産数」、「売上数」と
いう項目から成るレコードで構成されている。この0次
表のデータ項目には、ユーザ表20と一致するもの(す
なわち、ユーザにとってみればユーザ表20に取り込み
たい数値データの項目および見出しデータの項目)が含
まれている。ただし、0次表13における見出しデータ
(図3の例の場合は「地区」、「月」)の項目は、数値
データを並べ換える際の並べ換えキーの役割をするだけ
であり、ユーザ表20において表示はされない。1次表
14は、0次表13Nの見出しデータの項目をキーとし
て、数値データを並べ換えた表であるが、実際に主記憶
22上で保持されるのは数値データのみであって見出し
データは含まれない。ただし、本実施例において図示す
る際には、多くの場合、説明を容易にするため、1次表
14に見出しデータも含めて示している。本実施例のデ
ータ配置構造変換処理装置においては、ユーザ表20
は、空白部分にこの1次表14の数値データのうち、ユ
ーザ表20の見出しデータに合致する項目の数値データ
が転送されることにより作成される。なお、本実施例で
は、0次表13の1行に含まれる各項目ごとの情報をデ
ータという。また、本実施例では、DB表5および0次
表13の1行に表わされる全データ群をレコードとい
う。
【0028】クライアント2の主記憶22は、オペレー
ティングシステム7と、対応付け処理部8と、表計算手
段15との命令をさらに備える。クライアント2のCP
U21は、主記憶22内のこれらの命令を実行する手段
であり、この命令の実行によりオペレーティングシステ
ム7、対応付け処理部8、表計算手段15が実現され
る。オペレーティングシステム7は、前記検索、更新等
の要求コマンドの発行、および検索したデータの授受を
制御する。表計算手段15は、集計、統計、グラフ化機
能を備えるアプリケーションであり、本実施例において
は、対応付け処理部8を起動するためのインターフェー
スを有する。対応付け処理部8は、データ配置構造の変
換処理をする。対応付け処理部8の機能を大別すると、
データ配置構造の変換処理に必要なパラメータをユーザ
が入力する機能、該パラメータに従いデータ配置構造の
変換処理を実行する機能、前記データ配置構造の変換を
行ったデータを表計算手段15に転送する機能がある。
【0029】対応付け処理部8は、対応付けパラメータ
入力処理部9と、ソート処理部17と、ブロック化処理
部10と、分配化処理部11と、データ転送処理部12
とを有する。パラメータの入力処理を制御するのは対応
付けパラメータ入力処理部9であり、データ配置構造の
変換処理をするのがブロック化処理部10ならびに分配
化処理部11であり、データ転送を実行するのがデータ
転送処理部12である。ソート処理部17は、ブロック
化処理部10および/または分配化処理部11の処理の
前に、0次表のレコードをソートする。
【0030】対応付けパラメータ入力処理部9は、GU
I(Graphic User Interface)
を用いて、マウス27やキーボード25等の入力手段に
より指定を受け付けた、同一データを有する複数レコー
ドを一行に並べる換える処理(ブロック化処理)のため
のブロック化パラメータ、または、1レコードの各デー
タを複数行に配置する処理(分配化処理)のための分配
化パラメータを、それぞれブロック化パラメータテーブ
ル150または分配化パラメータテーブル160に格納
する手段を持つ。
【0031】ブロック化処理部10は、ソート処理部1
7によりソート済みの0次表13の、入力により指示さ
れた項目のレコードについてブロック化処理を行う。並
べ換えたデータは1次表14で管理される。ブロック化
処理を行う際には、キー項目データテーブル18、キー
項目最大数テーブル19、キー項目データテーブルイン
デックス50を用いる。
【0032】分配化処理部11は、ソート処理部17に
よりソート済みの0次表13、あるいはブロック化処理
部10によるブロック化処理済の1次表14の分配化処
理を行う。ブロック化処理と同様、並べ換えたデータは
再び1次表14で管理される。データ転送処理部12
は、データ配置構造の変換処理を行った1次表14のデ
ータを表計算手段15に転送する。また、入出力装置2
02を介して受け付けたユーザの指示により、データの
配置構造の変換処理を行なって1次表14を作成するこ
となく、0次表13を表計算手段15に転送することも
ある。0次表13のデータ配置構造とユーザ表20のデ
ータ配置構造とが等しい場合は、変換処理を行なう必要
がないからである。表計算手段15は、該データをスプ
レッドシート16上のユーザ表20に表示する。表計算
手段15にデータが渡されると、ユーザ表20の空白部
分にデータが入る。
【0033】ところで、本実施例のデータ配置構造変換
システムは、データ配置構造の変換をするために、ブロ
ック化処理と分配化処理とを行うことを説明したが、ほ
とんどのデータ配置構造の変換は、これら2つの処理の
組み合わせにより実現することができる。この、本実施
例におけるブロック化変換および分配化変換の考え方
を、つぎに詳細に説明する。まず始めに、図4〜図8を
用いブロック化の考え方を説明する。
【0034】ブロック化変換の一例を図4に示す。表1
3Aは0次表の例であり、表14Aは1次表の例であ
る。0次表13Aは、地区13A1、月13A2、生産
数13A3、売上数13A4という項目で構成される。
ブロック化は、ある項目において同一データを有する複
数レコードを1つのブロックとみなし1行に並べ換える
処理のことである。ここでは、ブロック化の例として、
地区項目13A1のデータが等しい複数レコードを1行
に並べる場合を示している。すなわち、斜線を付して表
示した地区Aのレコード4つと、斜線を付していない地
区Bのレコード4つとが、それぞれ1次表14Aでは、
1行に並べられている。
【0035】ところで、0次表13の各レコードを1行
に並べる際には、規則的に並べなくては各列の整合性を
とれなくなってしまう。そのため、ある項目のデータを
キーとし、一定の順序(例えば、昇順または降順)に整
列させる必要がある。そこで、この例では項目「月」1
3A2をキーとし、昇順で整列させている。この例にお
ける項目「地区」13A1のように複数レコードを識別
する機能を持つ項目をブロック化キー項目と呼ぶ。ま
た、項目「月」13A2のように、ブロック内の複数レ
コードを整列させる機能を持つ項目を整列キー項目と呼
ぶ。また、ブロック化キー項目と整列キー項目とを合わ
せて単にキー項目と呼ぶ。さらに、「地区」や「月」と
いったキー項目以外の、「生産数」13A3、「売上
数」13A4のような並べ換えの対象となる項目を、数
値項目と呼ぶ。ブロック化キー項目は、1次表14Aに
おける行の見出し(縦方向の見出し)14A1となり、
整列キー項目は1次表14Aにおける列の見出し(横方
向の見出し)14A2となる。そして、数値項目は、1
次表14に配置する際の、0次表13のレコードとして
認識される。
【0036】以上に述べた図4の例では、ブロック化キ
ー項目、整列キー項目が1つずつの場合であったが、ブ
ロック化キー項目、整列キー項目は複数指定することも
可能である。以下、それぞれの場合について例を挙げて
説明する。
【0037】ブロック化キー項目が複数ある場合のブロ
ック化変換の一例を図5に示す。13Bは0次表であ
り、14Bは1次表である。0次表13Bは、項目とし
て、「地区」13B1、「商品名」13B2、「月」1
3B3、「生産数」13B4、「売上数」13B5を備
える。なお、図5に示した例では、0次表13Bにおい
て、項目「地区」13B1、および項目「商品名」13
B2をブロック化キー項目とし、項目「月」13B3を
整列キー項目、項目「生産数」13B4および項目「売
上数」13B5を数値項目として定義してある。項目
「地区」13B1と項目「商品名」13B2とをブロッ
ク化キー項目としているため、1次表14Bでは、「地
区」と「商品名」のデータの組み合わせが等しい複数レ
コードを1つのブロックとして1行に配置される。例え
ば、0次表13Bにおいて斜線を付して図示したデータ
は、「地区」項目が「A」であり、「商品名」が「テレ
ビ」であって、一つのブロックをなす。ゆえに、これら
のデータは、1次表14Bでは、1行(斜線を付して図
示)に配置されることになる。また、配置する際には項
目「月」13B3を並べ換えキー項目とし昇順に整列さ
せている。図4に示した例と同様、ブロック化キー項目
は1次表14Bにおける行の見出し(縦方向の見出し)
14B1、14B2となり、整列キー項目は1次表14
Bにおける列の見出し(横方向の見出し)14B3とな
っている。
【0038】整列キー項目が複数ある場合のブロック化
変換の一例を図6に示す。これは、上述の0次表13B
に、図5に示した例とは異なるキー項目を設定して1次
表14Cに変換する例である。0次表13Bにおいて、
項目「地区」13B1をブロック化キー項目、項目「商
品名」13B2、項目「月」13B3を整列キー項目、
項目「生産数」13B4と項目「売上数」13B5とを
数値項目としている。項目「地区」13B1をブロック
化キー項目としているため、1次表14Cでは地区のデ
ータが等しい複数レコードを1行に配置している。例え
ば、項目「地区」13B1が「A」のレコード(斜線を
付して図示)は、1次表14Cでは1行(斜線を付して
図示)に表示される。また、配置する際には、項目「商
品名」13B2と項目「月」13B3とを並べ換えキー
項目とし、昇順に整列させている。すなわち、まずレコ
ードは項目「商品名」13B2により整列され、「商品
名」の等しいレコードについては、項目「月」13B3
に応じて整列され、「商品名」の順番を崩さないように
配置される。なお、本実施例では「商品名」のデータ
は、テレビ、ラジオ、洗濯機の順を昇順とする。図4、
図5と同様、ブロック化キー項目は1次表14Cの行の
見出し(縦方向の見出し)14C1となり、整列キー項
目は列の見出し(横方向の見出し)14C2、14C3
となる。
【0039】以上3つの例では、1次表14が0次表1
3の各レコードによりもれなく変換できる場合、すなわ
ち、1次表14の行の見出し、列の見出しに相当するレ
コードが0次表13に全て存在する場合を示した。しか
し、0次表13のレコードによっては、変換が不可能な
場合、あるいは、変換に該当するレコードが0次表13
に存在しない場合もありうる。ここで、変換が不可能な
場合というのは、行の見出し、列の見出しに相当する項
目が同じであるレコードが複数あるということであり、
0次表13に該当するレコードがないというのは、1次
表14の行の見出し、列の見出しに相当する項目を持つ
レコードがないということである。これらの場合につい
ては、以下に示すブロック化におけるチェック機能で対
応する。
【0040】ブロック化におけるチェック機能を図7を
用いて説明する。ブロック化処理部10は、0次表13
のキー項目のデータの組み合わせを検査し、キー項目の
設定の整合性を判定する。これが、ブロック化における
チェック機能である。キー項目のデータの組み合わせと
は、0次表13の1レコードにおける全てのブロック化
キー項目と全ての整列キー項目のデータの組み合わせの
ことである。なお、ブロック化処理部10は、キー項目
のデータの組み合わせが重複する場合はエラーとし、不
足する場合は1次表の該当する箇所にブランクデータを
挿入する。
【0041】ブロック化処理部10によりエラーとされ
る場合の例を図7(a)に示す。13Hは0次表であ
り、14Hは1次表である。この例では、項目「地区」
13H1がブロック化キー項目、項目「月」13H2が
整列キー項目、項目「生産数」13H3と項目「売上
数」13H4とが数値項目として定義されている。例え
ば、図7(a)の0次表13Hにおけるキー項目のデー
タの組み合わせは、順に(A、4)、(A、4)、
(B、4)、(B、5)であり、(A、4)の組み合わ
せが2個ある(斜線を付して図示)。このように重複し
た組み合わせがある場合、1次表に変換しようとする
と、2つのレコードが同じ見出しの場所に重複して存在
することになり、変換は不可能である。そこで、ブロッ
ク化処理部10は、組み合わせの検査処理において、こ
れを検出し、このようなキー項目の設定には整合性がな
いとしてエラーとする。
【0042】ブロック化処理部10によりブランクデー
タが挿入される場合の例を図7(b)に示す。13Iは
0次表であり、14Iは1次表である。この例では、項
目「地区」13I1をブロック化キー項目、項目「月」
13I2を整列キー項目、項目「生産数」13I3と項
目「売上数」13I4とを数値項目としている。図7
(b)の0次表13Iにおけるキー項目のデータの組み
合わせとは、順に(A、4)、(A、5)、(B、
5)、(B、6)である。一方、1次表14Iの行の見
出しはAとB、列の見出しは4、5、6となるので、見
出しの組み合わせは、順に(A、4)、(A、5)、
(A、6)、(B、4)、(B、5)、(B、6)であ
る。そこで、キー項目のデータの組み合わせと、見出し
の組み合わせとを比べると、キー項目のデータの組み合
わせに、(A、6)、(B、4)の組み合わせが不足し
ていることがわかる。そこで、ブロック化処理部10
は、該当するデータがない箇所14I1〜14I4に
は、データなしを意味するブランクデータを挿入する。
【0043】このように、ブロック化におけるチェック
では、キー項目のデータの組み合わせに重複があるとき
にはエラーとし、キー項目のデータの組み合わせに該当
するレコードがないときには、1次表14にブランクデ
ータを挿入する。
【0044】以上説明したブロック化変換の考え方は、
図8に示すような一般的な表現で表すことができる。以
下、図8を用いてブロック化に必要なパラメータとそれ
らパラメータにより変換可能な表形式の説明をする。
【0045】まず始めに、ブロック化に必要なパラメー
タの説明をする。0次表13を一般化して表現すると表
13Jのように図示することができる。また、1次表1
4を一般化して表現すると表14Jのように図示するこ
とができる。0次表13Jにおいて、項目「A」13J
1、「B」13J2、…、「C」13Jvをブロック化
キー項目とし、項目「D」13J4、…、「E」13J
wを整列キー項目とし、項目「F」13J6、…、
「G」13Jhを数値項目とする。ここで、項目
「A」、「B」、…、「C」はv個、項目「D」、…、
「E」はw個、項目「F」、…、「G」はh個あるとす
る。1次表14Jにおいて、項目14J1、14J2、
…、14Jvは行の見出し(縦方向の見出し)となる項
目であり、項目14J4、14Jwは列の見出し(横方
向の見出し)となる項目である。また、14J6、14
Jhは数値項目である。なお、図8においては、図の表
現を簡潔にするため、1次表14Jの見出しの構成を、
行、列とも、3段階として図示した。
【0046】ここで、本実施例では、ブロック化キー項
目13J1、13J2、…13Jvのうち、1次表14
Jにおいて最も左側に位置付けられる14J1を第1ブ
ロック化キー項目と名付け、以下、左から順に、キー項
目14J2を第2ブロック化キー項目、…、キー項目1
4Jwを第vブロック化キー項目と名付ける。同様に、
本実施例では、整列キー項目13J4、…、13Jwの
うち、1次表14Jにおいて、最も上側に位置付けられ
る整列キー項目14J4を第1整列キー項目とし、上か
らw番目に位置付けられるキー項目14Jwを第w整列
キー項目と名付ける。また、本実施例では、前記数値項
目13J6、13Jhのうち、1次表14Jにおいて最
も左側に位置づける数値項目14J6を第1数値項目と
名付け、以下、左から順に、第2数値項目、…、第h数
値項目14Jhと名付ける。
【0047】したがって、本実施例では、ブロック化の
パラメータとして必要な情報は、第1ブロック化キー項
目名…第vブロック化キー項目名、第1整列キー項目
名、…、第w整列キー項目名、第1数値項目名、…、第
h数値項目名と表現することができる。
【0048】ところで、ブロック化の際には、0次表の
レコードは、各キー項目によるソート処理がすでに行な
われている必要がある。このソート処理は、本実施例で
はソート処理部17により行なわれる。ソート処理部1
7は、入力により指定されたキー項目のデータに従って
レコードを昇順または降順に並べ替える。本実施例で
は、各キー項目毎に、入出力装置202を介してパラメ
ータとして、昇順および降順のいずれによって並べ替え
をおこなうかの指定の入力を受け付け、ブロック化処理
部10は、この指定された順序で並べ替えを行なう。ま
た、前記各キー項目のソートの優先順位は、上述の位置
を識別するためにキー項目に付けた番号の順である。す
なわち、第1ブロック化キー項目>…>第vブロック化
キー項目>第1整列キー項目>…>第w整列キー項目の
順位である。ここで、記号>は、左側の項目が右側の項
目よりもソート処理の優先順位が高いことを表してい
る。これは、例えば、ある項目A、Bがあったとき、ソ
ートの優先順位が項目A>項目Bであった場合、項目A
のデータのソート順を崩さずに、項目Bのデータをソー
トすることを指す。
【0049】具体的な例を、前述の0次表13B(図5
に図示)を用いて説明する。前記0次表13Bは、項目
「地区」13B1を第1ブロック化キー項目とし、項目
「商品名」13B2を第2ブロック化キー項目とし、項
目「月」13B3を整列第1キー項目として既にソート
処理を実行済の表である。ソートの優先順位は項目「地
区」13B1>項目「商品名」13B2>項目「月」1
3B3であるため、項目「地区」13B1のデータのソ
ート順を崩さずに、項目「商品名」13B2のデータが
ソートされ、さらに、項目「商品名」13B2のデータ
のソート順を崩さずに、項目「月」13B3のデータが
ソートされている。なお、前述のように、本実施例で
は、項目「商品名」における昇順とは、テレビ、ラジ
オ、洗濯機の順を指す。
【0050】このようなソート処理を、1次表14への
データ配置に先立ち行っておくことで、データ配置の処
理を効率良く行うことができる。
【0051】以上示した、第1ブロック化キー項目名…
第vブロック化キー項目名、第1整列キー項目名、…、
第w整列キー項目名、第1数値項目名、…、第h数値項
目名、および各キー項目のソートの際の昇順、降順指定
を、ブロック化のパラメータとし、入出力装置202よ
りの入力を受け付けるすることにより、操作者による任
意のブロック化変換が可能となる。
【0052】次に、図9〜図11を用い分配化の考え方
について説明する。分配化変換の一例を図9に示す。表
13Dは0次表であり、表14D1および表14D2
は、1次表である。0次表13Dは、項目「商品コー
ド」13D1、項目「4月生産数」13D2、項目「4
月売上数」13D3、項目「5月生産数」13D4、項
目「5月売上数」13D5から構成される。分配は、1
レコード(0次表の1行に表わされる全データ群)の各
データを、複数行にわたって表現することである。0次
表13Dにおいて考えられる分配の方法は2通りある。
1次表14D1は、月毎の生産数と売上数を縦並びで表
現した場合であり、1次表14D2は、生産数、売上数
の月毎の数値を縦並びで表現した場合である。いずれの
場合も、0次表13Dの1レコード(例えば、斜線を付
して部分)が、1次表14D1、14D2では2行(斜
線を付して図示)に表現されている。
【0053】分配を行う可能性のある項目の特徴として
は、項目に2つ以上の意味が含まれるということが挙げ
られる。すなわち、ただ単に生産数という意味だけでな
く、4月の生産数、5月の生産数という限定条件が加わ
っているのである。
【0054】図10を用いて分配化に必要なパラメータ
を説明する。0次表における1レコードの例として、図
10(a)にレコード13Mを示す。また、13Mに対
応する分配化後の1次表の複数レコードを14Mとして
図10(b)に図示する。分配を行う項目を、分配対象
項目と呼ぶ。
【0055】本実施例では、分配時には、まず分配対象
項目の指定が受け付けられる。ここでは、項目B13M
2〜G13Mgが分配対象項目として指定された場合を
例にとって説明する。全ての分配対象項目の数を、分配
対象項目数と呼ぶ。また、分配対象項目数をmとする。
次に、本実施例では、1レコードに含まれるデータのう
ち、分配化後の1次表において1行に含まれるデータの
数pと、1列に含まれるデータの数qとが受け付けられ
る。
【0056】分配化を行なうためには、分配化の対象の
0次表13の各項目が、分割できる2以上の条件から成
り立っていなければならない。また、各項目は、図31
(a)に示すように、その項目の含んでいる条件をキー
としてソートした形で規則的に並んでいなければならな
い。図31(a)は、分配化の可能な0次表13の例を
1レコードを13Nとして図示したものである。ここ
で、1〜3およびA〜Bは、それぞれ分割可能な条件を
示す。また、ここで、「・」は条件の併合を示し、例え
ば「1・A」は「1」という条件と「A」という条件と
を同時に満たすデータであることを示している。
【0057】図31(a)に示す0次表13の分配には
2通り考えられる。すなわち、0次表13のレコード1
3Nの各項目のデータを、左から順に1次表14の各デ
ータ領域に格納する際に、横に連続して格納することな
く、つぎの行の左端の領域に格納した後、その縦の並び
を横に繰り返す分配と、横に2つのデータを連続して格
納した後、下の行に下がり、その行の左端から、連続し
て2データを格納することを繰り返す分配とがある。そ
れぞれの分配の結果生成される1次表14を、図31
(b)と(c)とに示す。図31(b)は、横に並べる
項目として、条件1〜3を選択した場合に生成される1
次表14であり、図31(c)は、横に並べる項目とし
て、条件A,Bを選択した場合に生成される1次表14
である。また、図31(b)と(c)とに示した矢印
は、データを格納されるデータの、0次表のレコード1
3Nにおける左端からの順序を示している。
【0058】このように、0次表のレコード中のデータ
を、1行(1レコード)の左端から右端まで順に、1次
表14の各項目のデータ領域への対応付ける際の、デー
タの対応付けの順番を、ここではつぎのように考える。
まず、1次表における1行の対応付けが終わると改行し
て1次表の次の行の対応付けを行なう。さらに、表の最
下行へのp個のデータの対応付けが終わって、さらに対
応付けるべきデータがある場合は、さらに改行して対応
付けの行を先頭行に戻し、各行の対応付けを、対応付け
るべきデータが無くなるまで繰り返す。
【0059】このように考えたとき、pは、改行するま
でに1行に並べるデータの個数を指す。図31(b)で
は、1データで改行するため、pは1になり、図31
(c)では、1行に2データを並べてから改行するた
め、pは2になる。また、qは、先頭行から最終行まで
の、改行の回数に1を足した数を指す。図31(b)で
は、1回の改行で最終行に達するため、qは2になり、
図31(c)では、2回の改行で最終行に達するため、
qは3になる。
【0060】本実施例においては、分配化処理のため
に、分配対象項目と、上述のpおよびqとが指定される
必要がある。本実施例では、分配化でのデータ並べ換え
処理では、分配対象項目の各データを、繰り返しの単位
となる数であるp、qを利用して並べ換える。そのた
め、並べ換え元レコードの分配対象項目の並び方には規
則性を持たせておく必要がある。0次表13D(図9に
図示)は、分配対象項目である「4月生産数」、「4月
売上数」、「5月生産数」、「5月売上数」が規則的に
並んでいるため、パラメータp、qにより意味のある分
配化を行うことができる例である。ここで、例えば、分
配対象項目を「4月生産数」、「5月売上数」、「4月
売上数」、「5月生産数」と並べた場合、規則性がない
ため意味のある分配化を行うことができない。これら分
配対象項目の並び方をパラメータで識別するために、各
分配対象項目を左から順に第1分配対象項目、…、第m
分配対象項目と名付ける。
【0061】ところで、実際に分配化が可能であるのか
を上記パラメータを用いチェックする必要がある。分配
化処理部11におけるチェックについて以下で説明す
る。パラメータpとパラメータqにより全分配対象項目
における繰り返しの最小単位(p×q)がわかるが、こ
こではその数をn(=p×q)とする。すなわち、n
は、最初に最終行に達して先頭行への改行をするまでに
対応付けられるデータの数ということになる。分配対象
項目数がmであるので分配の繰り返し数は、m÷nの解
であるa個となる。ここでaが正の整数ならば分配は可
能であるが、それ以外の場合は分配は不可能である。そ
こで、aが正の整数ではない場合、分配化処理部11
は、これをエラーとする。
【0062】図9の具体例に関する分配化パラメータ例
を図11に示す。0次表13Dの項目群13Lのうちの
分配対象項目は、第1分配対象項目から第4分配対象項
目まで順に、項目「4月生産数」13L2、項目「4月
売上数」13L3、項目「5月売上数」13L4、項目
「5月生産数」13L5であり、分配対象項目数mは4
である。なお、図11(a)および(b)では、最初に
最終行に達して先頭行への改行をするまでに対応付けら
れるデータについて、斜線を付して図示している。最初
に最終行に達して先頭行への改行をするまでに対応付け
られるデータ数nは、図11(a)では2であり、図1
1(b)では4である。
【0063】0次表13Dを1次表14D1へ分配する
場合を図11(a)に示す。この場合、1レコードに含
まれるデータのうち、分配化後の1次表において1行に
含まれるデータの数pと、1列に含まれるデータの数q
とは、それぞれ、14Lとして図示したように、p=
1、q=2である。また、0次表13Dを1次表14D
2へ分配する場合を図11(b)に示す。この場合、1
4Kとして図示したように、p=2、q=2である。
【0064】それぞれ、分配化におけるチェックの結
果、a(=m÷n=m÷(p×q))が正の整数となっ
ているので正しく分配化を行うことができることがわか
る。以上説明した分配化により、任意の分配化変換が可
能である。
【0065】なお、目的とする1次表14において縦に
並べる項目がキー項目のみの場合は、ブロック化のみで
該1次表を実現できるが、縦に並べる項目に数値項目が
含まれている場合は、ブロック化のみでは実現できな
い。このような1次表14を作成するためには、数値項
目以外の縦に表現するキー項目をブロック化キー項目と
してブロック化変換を行なって1次表14を作成した
後、さらに得られた1次表14について分配化変換を行
なって、数値項目が縦に並ぶようにする必要がある。
【0066】ブロック化済の1次表14は、複数レコー
ドを1つのブロックとしており、複数レコードが1行に
配置されている。分配化を行う際には、この1ブロック
を1レコードとみなし、上述の場合と同様のパラメータ
p、qを用いる。数値項目を縦に並べるためには、pを
1とした分配化変換を行なえばよい。pは、1レコード
に含まれるデータのうち、分配化後の1次表において1
行に含まれるデータの数であるから、pを1とすること
により、1レコード(すなわち、ブロック化後に分配化
する場合は、ブロック化後の1次表の1行)のデータ
を、各数値項目ごとに改行しながら対応付けることにな
り、結果として、各数値項目は、整列キー毎に縦に並ぶ
ことになる。また、この場合、最初に最終行に達して先
頭行への改行をするまでに対応付けられるデータの数
(繰返しの最小単位に含まれるデータ数)n、および、
1レコード中の1列に含まれるデータ数qは、数値項目
の数と一致する。1行に含まれるデータ数が1であり、
各数値項目のデータは1列に表現されるからである。以
下、図12〜図14を用い、ブロック化と分配化を組み
合わせた変換例について説明する。
【0067】図12は、ブロック化キー項目数1、整列
キー項目数1のブロック化変換後、分配化を行った例で
ある。図12に示す例では、0次表13Aをブロック化
変換して1次表14Aを得、さらに1次表14Aに分配
化変換を行って1次表14Eを得ている。なお、分配化
対象項目は、1次表14Aにおいては、整列キー項目の
データで限定されている数値項目、すなわち、「4月」
の「生産数」および「売上数」と、「5月」の「生産
数」および「売上数」とである。これにより、m=4で
あることがわかる。また、上述のように、pは1であ
り、数値項目の数は2であることから、n=2、p=
1、q=2となる。なお、ブロック化後に分配化を行う
場合には、分配対象項目数mは、必ず、繰り返しの最小
単位であるnの整数倍となるため、分配化におけるチェ
ックは必要ない。
【0068】つぎに、ブロック化キー項目数2、整列キ
ー項目数1のブロック化変換後、分配化を行った例を図
13に示す。この例では、0次表13Bをブロック化変
換して1次表14Bを得、さらに1次表14Bに分配化
変換を行って1次表14Fを得ている。1次表14Bに
おいては、分配化対象項目を、整列キー項目のデータで
限定されている数値項目、すなわち、「4月」の「生産
数」および「売上数」と、「5月」の「生産数」および
「売上数」とである。これにより、m=4であることが
わかる。また、数値項目が2個あるので、p=1、q=
2、n=2となる。この場合も、図12に示した例と同
様の理由で、分配化におけるチェックの必要はない。
【0069】図14は、ブロック化キー項目数1、整列
キー項目数2のブロック化変換後、分配化を行った例で
ある。この例では、0次表13Bをブロック化変換して
1次表14Cを得、この1次表14Cに、さらに分配化
変換を行って1次表14Gを得ている。1次表14Cに
おける、分配対象項目は、整列キー項目のデータで限定
されている数値項目である、「テレビ」の「4月」の
「生産数」および「売上数」と、「テレビ」の「5月」
の「生産数」および「売上数」と、「ラジオ」の「4
月」の「生産数」および「売上数」と、「ラジオ」の
「5月」の「生産数」および「売上数」と、「洗濯機」
の「4月」の「生産数」および「売上数」と、「洗濯
機」の「5月」の「生産数」および「売上数」とであ
る。これからわかるように、図12に示す例では、m=
12である。また、数値項目が2個あるので、p=1、
q=2、n=2となる。この例においても、図12に示
した例と同様の理由で、分配化におけるチェックの必要
はない。
【0070】以上説明したブロック化、および分配化に
よって、0次表13からユーザ表20のデータ配置構造
への変換が可能となる。
【0071】次に、本発明における実際の対応付け処理
方法について詳細に説明する。なお、以後の説明におい
ては、0次表13および1次表14は、図13に示した
13Bおよび14Fを例にする。まず始めに、ブロック
化パラメータテーブル150と分配化パラメータテーブ
ル160のデータ構造を、図15、および図16を用い
て説明する。
【0072】ブロック化パラメータテーブル150のデ
ータ構造を図15に示す。ブロック化パラメータテーブ
ル150は、主記憶22に配置され、ブロック化指定格
納領域151と、ブロック化キー項目数格納領域152
と、ブロック化キー情報格納領域1531〜153v
と、ブロック化キー項目名リストポインタ153と、整
列キー項目数格納領域154と、整列キー項目リストポ
インタ155と、整列キー項目名格納領域1551〜1
55wと、数値項目数格納領域156と、数値項目名格
納領域1571〜157hと、数値項目リストポインタ
157と、ブロック化エラーコード格納領域158とを
有する。なお、ブロック化キー情報格納領域はブロック
化キー項目の数(ここではvとする)だけ備えられ、整
列キー項目名格納領域は整列キー項目の数(ここではw
とする)だけ備えられ、数値項目名格納領域は数値項目
の数(ここではhとする)だけ備えられる。
【0073】ブロック化指定格納領域151はブロック
化指定の有無を格納するフィールドである。ブロック化
キー項目数格納領域152はブロック化キー項目数vを
格納するフィールドである。ブロック化キー情報格納領
域1531〜153vは、ブロック化キー項目名、およ
び該キー項目のソート指定(昇順/降順)を格納するフ
ィールド群であり、各々のフィールド群はブロック化キ
ー項目名リストポインタ153につながれたリスト構造
で形成される。該リストに接続される順は、第1ブロッ
ク化キー項目、第2ブロック化キー項目……第vブロッ
ク化キー項目の順である。整列キー項目数格納領域15
4は整列キー項目数wを格納するフィールドである。1
551〜155wは、整列キー項目名、および該キー項
目のソート指定(昇順/降順)を格納するフィールド群
であり、各々のフィールド群は整列キー項目リストポイ
ンタ155につながれたリスト構造で形成される。該リ
ストに接続される順は、第1整列キー項目、第2整列キ
ー項目……第w整列キー項目の順である。数値項目数格
納領域156は数値項目数hを格納するフィールドであ
る。数値項目名格納領域1571〜157hは、数値項
目名を格納するフィールド群であり、各々のフィールド
群は、数値項目リストポインタ157につながれたリス
ト構造で形成される。リストに格納される順は、第1数
値項目、第2数値項目……第h数値項目の順である。ブ
ロック化エラーコード格納領域158はブロック化にお
けるチェック処理の結果でエラーが検出された場合、該
エラーコードを格納するフィールドである。
【0074】各フィールドの初期値は以下の通りであ
る。すなわち、ブロック化指定格納領域151はブロッ
ク化指定無し、ブロック化キー項目数格納領域152、
整列キー項目数格納領域154、数値項目数格納領域1
56はゼロ、ブロック化キー項目名リストポインタ15
3、整列キー項目リストポインタ155、数値項目リス
トポインタ157にはヌルポインタ、エラーコード格納
領域158は、エラーコード無しが初期値である。
【0075】図16は、分配化パラメータテーブル16
0のデータ構造を示したものである。分配化パラメータ
テーブル160は、主記憶22に配置され、分配化指定
格納領域161と、分配対象項目数格納領域162と、
分配対象項目名格納領域1631〜163mと、分配対
象項目名リストポインタ163と、一行内データ数格納
領域164と、一列内データ数格納領域165と、分配
化エラーコード格納領域166とを有する。分配対象項
目名格納領域は、分配化対象項目の数(ここではmとす
る)だけ備えられる。
【0076】分配化指定格納領域161は分配化指定の
有無を格納するフィールドである。分配対象項目数格納
領域162は分配対象項目数mを格納するフィールドで
ある。分配対象項目名格納領域1631〜163mは、
分配対象項目名を格納するフィールド群であり、各々の
フィールド群は分配対象項目名リストポインタ163に
つながれたリスト構造で形成される。リストに格納され
る順は、第1分配対象項目〜第m分配対象項目の順であ
る。一行内データ数格納領域164は分配する際に、一
行中に並べる1レコードのデータ数pを格納するフィー
ルドである。一列内データ数格納領域165は分配する
際に一列中に並べる1レコードのデータ数qを格納する
フィールドである。分配化エラーコード格納領域166
は分配化におけるチェックの結果でエラーが検出された
場合、該エラーコードを格納するフィールドである。
【0077】各フィールドの初期値は以下の通りであ
る。すなわち、分配化指定格納領域161は分配化指定
無し、分配対象項目数格納領域162、一行内データ数
格納領域164、および一列内データ数格納領域165
はゼロ、分配対象項目名リストポインタ163はヌルポ
インタ、分配化エラーコード格納領域166はエラーコ
ード無しを初期値とする。
【0078】図17は、対応付け処理部8の動作を示す
フローチャートである。前述のように、対応付け処理部
8は、ユーザの指示により表計算手段15から起動され
ると、まず始めに、対応付けパラメータ入力処理部9を
動作させる。対応付けパラメータ入力処理部9は、ユー
ザが表示装置29の画面に示されたパラメータ情報をマ
ウス27で選択したり、キーボード25を用いて入力し
た、ブロック化パラメータおよび分配化パラメータを、
ブロック化パラメータテーブル150ならびに分配化パ
ラメータテーブル160に格納する(ステップ170
1)。
【0079】図13に示した例の場合には、ブロック化
パラメータテーブル150のブロック化指定格納領域1
51にはブロック化指定有りを示す符号、ブロック化キ
ー項目数格納領域152にはv=2、ブロック化項目名
格納領域1531には(「地区」、昇順)、ブロック化
項目名格納領域1532には(「商品名」、昇順)、整
列キー項目数格納領域154にはw=1、整列キー項目
名格納領域1551には(「月」、昇順)、数値項目数
格納領域156にはh=2、数値項目名格納領域157
1には「生産数」、数値項目名格納領域1572には
「売上数」が格納される。
【0080】また、分配化パラメータテーブル160の
分配化指定格納領域161には「分配化指定有り」、分
配化対象項目数格納領域162にはm=4、分配化対象
項目名格納領域1631には1次表14Bにおける「4
月」/「生産数」を示す項目名、分配化対象項目名格納
領域1632には同様に「4月」/「売上数」を示す項
目名、分配化対象項目名格納領域1633には「5月」
/「生産数」を示す項目名、分配化対象項目名格納領域
1634には「5月」/「売上数」を示す項目名、一行
内データ数格納領域164にはp=1、一列内データ数
格納領域に165はq=2が格納される。
【0081】次に、対応付け処理部8は、ソート処理部
17による0次表13のソート処理を実行する(ステッ
プ1709)。ソート処理部17は、図33に示すよう
に、ブロック化パラメータテーブル150のブロック化
キー項目名格納領域1531〜153vで示されるブロ
ック化キー項目、整列キー項目名格納領域1551〜1
55wで示される整列キー項目によるソート処理を行う
(ステップ3301)。ソート処理は、前述のように、
0次表13における第1ブロック化キー>…>第vブロ
ック化キー>第1整列キー>…>第w整列キーの優先順
位で行われる。
【0082】以下、ソート処理を、図13に示した例に
より説明する。まず始めに、ブロック化処理部10は、
第1ブロック化キー項目である項目「地区」13B1の
データによりレコードの並び順を判定し、そのデータ
(この例では「A」または「B」)が等しい場合は、次
に、第2ブロック化キー項目である項目「商品名」13
B2のデータによりレコードの並び順を判定し、そのデ
ータ(この例では「テレビ」、「ラジオ」、または「洗
濯機」)が等しい場合は、さらに、第1整列キー項目で
ある項目「月」13B3のデータ(この例では「4」ま
たは「5」)によりレコードの並び順を判定し、最終的
なレコードの並び順を決定する。以上のソート処理の結
果は、ソート前と同様0次表13に格納される。
【0083】ソート処理が済むと、対応付け処理部8
は、ブロック化パラメータテーブル150のブロック化
指定格納領域151を読みとり、ブロック化指定の有無
を判断する(ステップ1702)。ここでブロック化指
定が有りの場合、ブロック化処理部10に制御を移しブ
ロック化処理部にブロック化処理を行わせる(ステップ
1703)。
【0084】ブロック化処理後、対応付け処理部8は、
ブロック化パラメータテーブル150のブロック化エラ
ーコード格納領域158を参照してエラーの有無を判断
し(ステップ1704)、エラーがあった場合は、直ち
に対応付け処理を終了し、エラーがなかった場合にはス
テップ1705に制御を進める。
【0085】ステップ1702でブロック化指定が指定
されていなければ、ステップ1705に制御を進め、分
配化パラメータテーブル160の分配化指定格納領域1
61を読みとり、分配化指定の有無を判断する。ここで
分配化指定が有りの場合、分配化処理部11に制御を移
し、分配化処理部11に分配化処理を行わせる(ステッ
プ1706)。
【0086】分配化処理後、対応付け処理部8は、分配
化パラメータテーブル160の分配化エラーコード格納
領域166を参照してエラーの有無を判断し(ステップ
1707)、エラーがあった場合は、直ちに対応付け処
理を終了し、エラーがなかった場合にはステップ170
8に制御を進める。ステップ1705で分配化指定がな
ければステップ1708に制御を進め、そのままデータ
転送処理部12に制御を移す(ステップ1708)。
【0087】ステップ1708では、データ転送処理部
12が、以上の処理により変換された1次表14のデー
タを、表計算手段15のスプレッドシート16に転送す
る処理を行う。また、ステップ1704、ステップ17
07において、それぞれ、ブロック化処理(ステップ1
703)、分配化処理(ステップ1706)におけるエ
ラーが検出された場合には、データ転送(ステップ17
08)は実行されないまま処理が終了することになる。
【0088】次に、ブロック化処理(ステップ170
3)と分配化処理(ステップ1706)について、その
処理内容をフローチャートを用いてより詳しく説明す
る。
【0089】図18は、ステップ1703におけるブロ
ック化処理部10の動作を示すフローチャートである。
ブロック化処理部10は、まず始めに、ブロック化チェ
ック処理を行う(ステップ1802)。ブロック化チェ
ック処理は、前述のようにキー項目データの組み合わせ
で0次表13の整合性を検査する処理である。このブロ
ック化チェック処理でエラーが検出されると、ブロック
化処理部10は、ブロック化パラメータテーブル150
のブロック化エラーコード格納領域158にエラーコー
ドを格納する。ブロック化チェック処理が終了すると、
ブロック化処理部10は、ブロック化エラーコード格納
領域158の保持するエラーコードを参照することによ
りエラーの有無を判断する(ステップ1803)。ブロ
ック化処理部10は、エラーが有ったことを検出する
と、そのまま処理を終了し、エラーが無かったときは、
ブロック化並べ換え処理を行い(ステップ1804)、
0次表13の数値項目のデータを並べ換えて1次表14
に配置する。
【0090】ステップ1802のブロック化チェック処
理は、0次表13におけるキー項目データの組み合わせ
を、キー項目データテーブル18、キー項目データ最大
数テーブル19、キー項目データインデックス50を用
いて検査する処理である。
【0091】まず、図19を用いてキー項目データテー
ブル18の説明をする。キー項目データテーブル18
は、0次表13における全てのキー項目のデータを格納
したテーブルである。キー項目データテーブル18は、
第1ブロック化キー項目〜第vブロック化キー項目〜第
1整列キー項目〜第w整列キー項目の順で、各項目毎に
設けられたリストポインタ格納領域181〜18(v+
w)を備える。なお、ここでv、wは、それぞれブロッ
ク化キー項目の数、整列キー項目の数である。また、キ
ー項目データテーブル18は、キー項目の数(v+w)
だけ、データ格納領域群1810〜18(v+w)0を
備える。各データ格納領域群1810〜18(v+w)
0は、それぞれキー項目のデータを保持するためのデー
タ格納領域を有する。データ格納領域群内のデータ格納
領域は、リスト構造により連結されている。また、リス
トポインタ格納領域181〜18(v+w)には、それ
ぞれデータ格納領域群1810〜18(v+w)0内の
先頭のデータ格納領域を示すポインタが格納されてい
る。
【0092】図19では、ブロック化キー項目のデータ
の数を、第1ブロック化キー項目ではb(1)、第2ブ
ロック化キー項目ではb(2)、……第vブロック化キ
ー項目ではb(v)として表現している。これに伴い、
第1ブロック化キー項目のデータを格納するデータ格納
領域は、0番目(先頭)からb(1)−1番目(最後)
まであることになり、それぞれを、1811、181
2、……181(b(1))として図示する。また、第
vブロック化キー項目のデータを格納するデータ格納領
域は、0番目(先頭)からb(v)−1番目(最後)ま
であることになり、それぞれを、18v1、18v2、
……18v(b(v))として図示する。
【0093】また、整列キー項目のデータの数は、第1
整列キー項目ではs(1)、第2整列キー項目ではs
(2)、……第w整列キー項目ではs(w)として表現
される。これに伴い、第1整列キー項目のデータを格納
するデータ格納領域は、0番目(先頭)からs(1)−
1番目(最後)まであることになり、それぞれを、18
(v+1)1、18(v+1)2、……18(v+1)
(s(1))として図示する。また、第w整列キー項目
のデータを格納するデータ格納領域は、0番目(先頭)
からs(w)−1番目(最後)まであることになり、そ
れぞれを、18(v+w)1、18(v+w)2、……
18(v+w)(s(w))として図示する。
【0094】各キー項目のデータは、ブロック化パラメ
ータテーブル150のキー項目毎のブロック化キー項目
名格納領域1531〜153v、整列キー項目名格納領
域1551〜155wで指定されているソート順に従
い、0番目のデータ格納領域から順に格納される。キー
項目の各データの参照は、何番目のリストポインタの指
すデータ格納領域群にあるか(配列の行の番号を示す添
え字)と、何番目のデータ格納領域にあるかを用いて行
う。なお、各ポインタ領域の初期値はヌルポインタであ
る。
【0095】図20は、キー項目データテーブル18を
参照するために用いるキー項目データ最大数テーブル1
9とキー項目データテーブルインデックス50の構造を
示したものである。キー項目データ最大数テーブル19
は、0行目〜v+w−1行目のv+w個の領域を有する
配列である。各領域には、第1ブロック化キー項目から
第w整列キー項目まで各キー項目データの数が格納され
る。すなわち、キー項目データ最大数テーブル19の0
行目の(すなわち、先頭の)領域にはb(1)で表わさ
れる第1ブロック化キー項目のデータ数が、v−1行目
の領域にはb(v)で表わされる第vブロック化キー項
目(すなわち、最後のブロック化キー項目)のデータ数
が、v行目の領域にはs(1)で表わされる第1整列キ
ー項目のデータ数が、v+w−1行目の領域にはs
(w)で表わされる第w整列キー項目(すなわち、最後
の整列キー項目)のデータ数が、それぞれ格納される。
なお、各領域の初期値はゼロである。各領域は、何行目
の領域か(行番号:0〜v+w−1の添え字)を指定す
ることにより参照される。この配列の各領域の保持する
情報をmax_ind(行番号)で表す。例えば、ma
x_ind(level)は、キー項目データテーブル
18のlevel行に格納されたキー項目の最大数を表
す。
【0096】キー項目データテーブルインデックス50
は、データ格納領域群の数(v+w)だけ格納領域を備
える配列である。キー項目データテーブルインデックス
50は、キー項目データテーブル18の各データ格納領
域群1810〜18(v+w)0毎に、該データ格納領
域群内のデータ格納領域の番号をひとつ保持するキー項
目データテーブルインデックス50内に保持されたデー
タは、キー項目データテーブル18と同様、第1ブロッ
ク化キー項目から第w整列キー項目までの何番目の項目
のデータ格納領域群かを示す0〜v+w−1の添え字に
より参照される。なお、各領域の初期値はゼロである。
【0097】キー項目データテーブルインデックス50
の各行の要素には、キー項目データテーブル18のデー
タ格納領域1811〜18(v+w)(s(w))の番
号(何番目のデータ格納領域か)が格納される。この配
列の各領域の保持する情報をind_list(行番
号)で表わす。例えば、ind_list(leve
l)は、キー項目データテーブルインデックス50のl
evel行目の格納領域に格納された数値を示す。in
d_list(level)=iのときは、level
行目の、リスト順がi番目のデータ格納領域が示されて
いる。なお、配列内の各格納領域の初期値はゼロであ
る。
【0098】次に、図21を用いて、ステップ1802
でのブロック化チェック処理の説明をする。ブロック化
チェック処理1802は、ブロック化処理部10が実行
する処理である。まず始めに、ブロック化処理部10
は、キー項目データテーブル18に、各項目のデータを
格納する(ステップ2101)。つぎに、ブロック化処
理部10は、0次表13のキー項目のデータを読み出す
ためのカウンタ(以後、キー項目読み込み用カウンタと
記す)を初期化する(ステップ2102)。キー項目読
み込み用カウンタ(図示せず)は主記憶22に配置され
る。
【0099】つぎに、ブロック化処理部10は、後述す
るブロック化サブチェック処理(図23に図示)を引き
数の値=0で実行する(ステップ2103)。ブロック
化サブチェック処理は、引き数として渡される変数を用
いて、0次表13のキー項目データに不整合がないかど
うかを検査する処理である。ブロック化サブチェック処
理を引き数を、キー項目データテーブル18の行を示す
値levelで実行することにより、キー項目データテ
ーブル18のlevel行からv+w−1行までの各フ
ィールドに格納されたデータの全ての組み合わせ(キー
項目データの組み合わせ)と、0次表13のキー項目デ
ータとを照合することができる。ステップ2103で
は、引き数として0を指定するため、キー項目データ最
大数テーブル18の全てのデータの組み合わせを検査す
ることができる。
【0100】ここで、図22を用いてキー項目データテ
ーブル格納処理(ステップ2101)の詳細について説
明する。ブロック化処理部10による0次表13のキー
項目データのキー項目データテーブル18へのデータ格
納処理は、第1ブロック化キー項目……第vブロック化
キー項目、第1整列キー項目、……第w整列キー項目の
順で行われる。
【0101】まず始めに、ブロック化処理部10は、処
理対象を第1ブロック化キー項目とし(ステップ220
1)、処理対象のデータを該当キー項目の最初のデータ
とする(ステップ2202)。次に、ブロック化処理部
10は、キー項目データテーブル18の、該キー項目の
データ格納領域群(1810〜18(v+w)0のいず
れかひとつである。処理対象が第1ブロック化キー項目
の場合は、1810)に、処理対象のデータと等しいデ
ータがあるかどうかを調べ(ステップ2203)、あれ
ば、ステップ2205に処理を進め、なければ、キー項
目データテーブル18の該当キー項目のデータ格納領域
(処理対象が第1ブロック化キー項目の場合は、181
1〜181(b(1))のうちのいずれか最初の空き領
域)に該データを格納して、キー項目データ最大数テー
ブル19の該当キー項目に対応する格納領域に保持され
ている値(データ格納領域群に含まれるデータ格納領域
の数)を1増やし(ステップ2204)、その後、ステ
ップ2205を実行する。
【0102】ステップ2205において、ブロック化処
理部10は、0次表13の該当キー項目の全てのデータ
を処理したかを調べ、処理していなければ、処理対象を
0次表13の該当キー項目の次のデータに移し(ステッ
プ2206)、再びステップ2203に処理を戻す。ス
テップ2205において、該当キー項目の全てのキー項
目データを処理していれば、ブロック化処理部10は、
全てのキー項目についての処理をしたか調べ(ステップ
2207)、全てのキー項目についての処理をしていれ
ば終了し、そうでなければ対象キー項目を次の項目に移
し(ステップ2208)、再びステップ2202に処理
を戻す。以上の処理により、キー項目データテーブル1
8に、処理対象の0次表の情報が格納され、ブロック化
チェック処理に使用することができるようになる。
【0103】上記のキー項目データテーブル格納処理
を、図13の0次表13Bの場合を例に具体的に説明す
る。まず、第1ブロック化キー項目は、項目「地区」1
3B1であるから、ブロック化処理部10は、ステップ
2201において、処理対象を項目「地区」とする。こ
の例では、項目「地区」の最初のデータは「A」であ
る。そこで、ブロック化処理部10は、ステップ220
2において、処理対象をデータ「A」とし、ステップ2
203で、第1ブロック化キー項目のデータ格納領域群
1810内に「A」が格納されているかどうか検査す
る。データ格納領域群1810にはまだ何も格納されて
いないので、ブロック化処理部10は、ステップ220
4で、リストの先頭のデータ格納領域1811にデータ
「A」を格納し、キー項目データ最大数テーブル19の
0行目(先頭)の格納領域に1を格納する。これによ
り、max_ind(0)=1になる。
【0104】ステップ2205では、まだ未処理のデー
タが残っていることが検出されるので、ブロック化処理
部10は、処理対象を次のデータとするが(ステップ2
206)、次のレコードの「地区」のデータも「A」で
あるので、ステップ2203では、すでに「A」がデー
タ格納領域1811に保持されていることを検出して、
「A」の再度の格納処理を行なうことなく、ステップ2
205に処理を進める。このようにデータ「A」の処理
を6回繰り返すと、次のレコードでは、「地区」のデー
タが「B」となるので、ステップ2203において、デ
ータ格納領域群1810内に同じデータが検出されない
ため、ブロック化処理部10は、データ格納領域181
2に「B」を格納し、キー項目データ最大数テーブル1
9の0行目の格納領域の保持する値に1を加える格納す
る。これにより、max_ind(0)=2になる。
【0105】さらにデータ「B」の処理を5回繰り返す
と、ステップ2205において、項目「地区」のデータ
をすべて処理したことになる。このため、ブロック化処
理部10は、ステップ2207に処理を進め、まだ処理
していないキー項目があるので、ステップ2208にお
いて、処理対象を第2ブロック化キー項目、すなわち項
目「商品名」にして、処理をステップ2202に戻す。
上述の「地区」の場合と同様に、「商品名」のすべての
データについてステップ2203〜2205を繰り返す
と、キー項目データテーブル18のデータ格納領域18
21には「テレビ」、データ格納領域1822には「ラ
ジオ」、データ格納領域1823には「洗濯機」がそれ
ぞれ格納され、キー項目データ最大数テーブル19の1
行目の格納領域の保持する値は3(すなわち、max_
ind(1)=3)になる。
【0106】項目「商品名」のデータの処理がすると、
処理の対象のキー項目は、整列キー項目である「月」に
なる(ステップ2208)。この「月」についても、上
述のステップ2203〜2205の処理が繰り返され
る。これにより、キー項目データテーブル18のデータ
格納領域1831には「4」、データ格納領域1832
には「5」がそれぞれ格納され、キー項目データ最大数
テーブル19の2行目の格納領域の保持する値は2(す
なわち、max_ind(2)=2)になる。「月」の
データの処理が終了すると、すべてのキー項目について
の処理が終了したことになるので、ブロック化処理部1
0は、キー項目データテーブル格納処理を終了する。
【0107】次に、図23を用いてブロック化サブチェ
ック処理2300の説明をする。ブロック化サブチェッ
ク処理は、キー項目データテーブルインデックス50の
すべての行に、参照すべきキー項目データの格納場所を
示す番号を格納した後、0次表データチェック処理を行
ない、キー項目データテーブル18に保持されているキ
ー項目のすべての組み合わせと、0次表のキー項目デー
タの組み合わせとの照合を行なう処理である。
【0108】ブロック化サブチェック処理2300で
は、ブロック化処理部10は、まず始めに引き数の値を
変数levelに設定する(ステップ2301)。すな
わち、主記憶22内の変数levelの格納領域に引き
数の値を格納する。次に、ブロック化処理部10は、変
数iを初期化、すなわち、変数iの格納領域に0を格納
し(ステップ2302)、該変数iをキー項目データテ
ーブルインデックス50のlevel行目の格納領域に
格納する(ステップ2303)。さらに、ブロック化処
理部10は、該変数iの値と、キー項目データ最大数テ
ーブル19のlevel行に格納されている数(max
_ind(lebel):level行目の示すキー項
目のデータ数)との比較を行う(ステップ2304)。
該変数iの値がmax_ind(lebel)と等しく
なった場合は、対象キー項目のすべてのデータについて
処理を行なったことになるので、ブロック化処理部10
はブロック化サブチェック処理を終了する。
【0109】変数iの値の方が小さい場合は、leve
lの値を調べ(ステップ2305)、その値が(v+w
−1)以外のときには、引き数をlevel+1とし、
再帰的にブロック化サブチェック処理2300を実行し
て(ステップ2310)、ステップ2309に処理を進
める。最初に引き数として与えられた数をxとすると、
ブロック化サブチェック処理2300を再帰的に実行す
ることにより、キー項目データテーブルインデックス5
0の、先頭行(0行目)から最終行(v+w−1行)ま
での各行に、検索すべきキー項目データの番号が格納さ
れることになる。そこで、最終行(v+w−1行)まで
のすべての行に値が格納されると(すなわち、leve
lの値が(v+w−1)になると)、0次表のデータの
組み合わせとの照合が行なわれることになる。
【0110】ステップ2305において、levelの
値が(v+w−1)の場合は、levelの値が上限に
達し、データテーブルインデックス50のすべての行に
値が格納されているので、0次表データチェック処理
(ステップ2306)を行う。0次表データチェック処
理は、実行する時点のキー項目データテーブルインデッ
クスの保持する、各キー項目毎のデータ格納領域番号の
示す格納領域から、各キー項目ごとにデータを読み出
し、そのデータの組み合わせと、キー項目データ読み込
み用カウンタの示す0次表のレコードのキー項目データ
の組み合わせとを照合する処理である。
【0111】0次表データチェック処理が終わると、ブ
ロック化処理部10は、照合対象を0次表13の次のレ
コードにするため、キー項目データ読み込み用カウンタ
を1増やして(ステップ2308)、処理をステップ2
309に進める。ステップ2309では、ブロック化処
理部10は、次のデータを処理するため、変数iの値を
1増やしてステップ2303に処理を戻す。
【0112】以上説明したブロック化サブチェック処理
は、再帰手続きを利用した処理であるが、level、
i、及びキー項目用読み込み用カウンタの値は、局所変
数としてスタックに領域を確保するため、再帰呼び出し
の際にも値は保持される。
【0113】ブロック化サブチェック処理では、キー項
目データインデックス50のすべての行にデータが格納
される毎に、0次表データチェック処理が行なわれる。
キー項目データインデックス50の保持する値の遷移
を、図32を用いて説明する。ind_list(le
vel)の値の遷移を図32に示す。図32では、例と
して、0次表13B(図13に図示)のように、キー項
目数は3、第1ブロック化キー項目のデータ数が2、第
2ブロック化キー項目のデータ数が3、第1整列キー項
目のデータ数が2の場合を示す。この場合は、図32に
示すように、ind_list(0)=0または2、i
nd_list(1)=0、1または2、ind_li
st(2)=0または1、の12通りの組み合わせのす
べてについて、0次表データチェック処理を行なわれ
る。また、チェックの順番は、各キーの優先順位に従っ
て、図32に示すような順番で行なわれる。
【0114】つぎに、ブロック化サブチェック処理の再
帰処理を、再帰処理の各階層間の制御の流れに従って説
明する。再帰処理の第1階層:引き数0でブロック化サ
ブチェック処理が呼ばれると、まず、変数levelお
よび変数iの値は0となり(ステップ2301、230
2)、ステップ2302において、ind_list
(0)の格納領域には、0が格納され、ステップ230
1において、引き数を1として、再帰的にブロック化サ
ブチェック処理が呼ばれる。
【0115】再帰処理の第2階層:このブロック化サブ
チェック処理では、変数levelの値は1、変数iの
値は0となり(ステップ2301、2302)、ステッ
プ2302において、ind_list(1)の格納領
域には、0が格納され、ステップ2301において、引
き数を2として、再び、再帰的にブロック化サブチェッ
ク処理が呼ばれる。
【0116】再帰処理の第3階層(1回目):このブロ
ック化サブチェック処理では、変数levelの値は
2、変数iは0となり(ステップ2301、230
2)、ステップ2302において、ind_list
(2)の格納領域には0が格納される。この処理では、
levelが上限に達しているので、ステップ2306
において、第1回目の0次表データチェック処理が行な
われる。この0次表データチェック処理では、ind_
list(0)=0、ind_list(1)=0、i
nd_list(2)=0の条件で、0次表の1番目の
レコードとの照合が行なわれる。照合が終了して、エラ
ーがなかった場合、ブロック化処理部10は、次の照合
対象を0次表の2番目のレコードとし(ステップ230
8)、変数iの値を1として(ステップ2309)、処
理をステップ2303に戻す。
【0117】変数levelの値が2、変数iの値が1
であることから、ステップ2302では、今度はind
_list(2)の格納領域に1が格納される。さら
に、依然としてlevelの値は上限に達しているの
で、ステップ2306において、第2回目の0次表デー
タチェック処理が行なわれる。この0次表データチェッ
ク処理では、ind_list(0)=0、ind_l
ist(1)=0、ind_list(2)=1の条件
で、0次表の1番目のレコードとの照合が行なわれる。
照合が終了して、エラーがなかった場合、ブロック化処
理部10は、次の照合対象を0次表の3番目のレコード
とし(ステップ2308)、変数iの値を2として(ス
テップ2309)、処理をステップ2303に戻す。ブ
ロック化処理部10は、変数iの値が、max_ind
(2)の値(3番目のキー項目(第1整列キー項目)の
データ数)である2と一致したため、このブロック化サ
ブチェック処理を終了する。これにより、制御は再帰処
理の第2階層に戻ることになる。
【0118】再帰処理の第2階層:第2階層に制御が戻
ると、ブロック化処理部10は、ステップ2309で、
変数iの値を1増やして、処理をステップ2303に戻
す。第2階層では変数iの値は0だったので、ステップ
2309により変数iの値は0となる。なお、変数le
velの値は1のままである。ステップ2302におい
て、ind_list(1)の格納領域には、1が格納
され、ステップ2301において、引き数を2として、
再び、再帰的にブロック化サブチェック処理が呼ばれ
る。
【0119】再帰処理の第3階層(2回目):このブロ
ック化サブチェック処理では、変数levelの値は
2、変数iは0となり(ステップ2301、230
2)、ステップ2302において、ind_list
(2)の格納領域には0が格納される。この処理では、
levelが上限に達しているので、ステップ2306
において、第3回目の0次表データチェック処理(in
d_list(0)=0、ind_list(1)=
1、ind_list(2)=0の条件)が行なわれ
る。照合が終了して、エラーがなかった場合、ブロック
化処理部10は、次の照合対象を0次表の4番目のレコ
ードとし(ステップ2308)、変数iの値を1として
(ステップ2309)、処理をステップ2303に戻
す。
【0120】さらに、変数levelの値が2、変数i
の値が1であることから、ステップ2302では、in
d_list(2)の格納領域に1が格納され、ステッ
プ2306において、第4回目の0次表データチェック
処理(ind_list(0)=0、ind_list
(1)=0、ind_list(2)=1の条件)が行
なわれる。照合が終了して、エラーがなかった場合、ブ
ロック化処理部10は、次の照合対象を0次表の5番目
のレコードとし(ステップ2308)、変数iの値を2
として(ステップ2309)、処理をステップ2303
に戻し、このブロック化サブチェック処理を終了する。
これにより、制御は再び再帰処理の第2階層に戻ること
になる。
【0121】再帰処理の第2階層:第2階層に制御が戻
ると、ブロック化処理部10は、(ステップ2309)
で、変数iの値を1増やして、処理をステップ2303
に戻す。第2階層では変数iの値は1だったので、ステ
ップ2309により変数iの値は2となる。なお、変数
levelの値は1のままである。ステップ2302に
おいて、ind_list(1)の格納領域には、2が
格納され、ステップ2301において、引き数を2とし
て、再び、再帰的にブロック化サブチェック処理が呼ば
れる。
【0122】再帰処理の第3階層(3回目):このブロ
ック化サブチェック処理でも、上述の第3階層の処理と
同様にして、第5回目の0次表データチェック処理(i
nd_list(0)=0、ind_list(1)=
2、ind_list(2)=0の条件)と、第6回目
の0次表データチェック処理(ind_list(0)
=0、ind_list(1)=2、ind_list
(2)=1の条件)とが行なわれ、制御は再び再帰処理
の第2階層に戻される。
【0123】再帰処理の第2階層:第2階層に制御が戻
ると、ブロック化処理部10は、ステップ2309で、
変数iの値を3とする。これにより、ステップ2304
において、変数iの値がmax_ind(1)の値であ
る3と一致するので、ブロック化処理部10はこのブロ
ック化サブチェック処理を終了する。これにより、制御
は再び再帰処理の第1階層に戻ることになる。
【0124】再帰処理の第1階層:第1階層に制御が戻
ると、ブロック化処理部10は、ステップ2309で、
変数iの値を1増やして、処理をステップ2303に戻
す。なお、第1階層では変数iの値は0だったので、ス
テップ2309により変数iの値は1となる。変数le
velの値は0のままである。ステップ2302におい
て、ind_list(0)の格納領域には、1が格納
され、ステップ2301において、引き数を1として、
再び、再帰的にブロック化サブチェック処理が呼ばれ、
上述の第2階層および第3階層の処理が繰り返される。
これにより、ind_list(0)=1の、第7回目
〜12回目の0次表データチェック処理が実行される。
【0125】次に、ステップ2306で実行する0次表
データチェック処理を、図24のフローチャートを用い
て説明する。0次表データチェック処理は、ブロック化
処理部10が行なう。
【0126】まず始めに、ブロック化処理部10は、キ
ー項目毎に、キー項目データテーブルインデックス50
の保持する番号のデータを読み込む(ステップ240
1)。すなわち、第1ブロック化キー項目のデータ格納
領域群1810のind_list(0)番目のデータ
格納領域、第2ブロック化キー項目のデータ格納領域群
1820のind_list(1)番目、…第v+wブ
ロック化キー項目のデータ格納領域群18(v+w)2
0のind_list(v+w−1)番目のデータ格納
領域から、それぞれデータを読み込む。
【0127】次に、ブロック化処理部10は、0次表1
3の、キー項目データ読み込み用カウンタの示している
レコードにおけるキー項目データの組み合わせを読み込
む(ステップ2402)。さらに、ブロック化処理部1
0は、上記ステップ2401で読み込んでいるキー項目
データテーブル18のデータの組み合わせと、ステップ
2402で読み込んだ0次表13のキー項目データの組
み合わせが等しいかを検査し、等しい場合は終了する。
【0128】図13の0次表13Bの1レコード目をチ
ェックする場合を例にとると、1レコード目のチェック
(1回目の0次表データチェック処理)では、ind_
list(0)=0、ind_list(1)=0、i
nd_list(2)=0であるから、ステップ240
1では、ブロック化処理部10はデータ格納領域181
1、1821、1831からデータを読み込み、読み込
まれるキー項目データの組み合わせは(「A」、「テレ
ビ」、「4」)である。また、ステップ2402では、
1回目の0次表データチェック処理であるためカウンタ
には初期値が設定されているので、0次表13Bの1レ
コード目のキー項目データである、(「A」、「テレ
ビ」、「4」)が読み込まれる。この1レコード目のチ
ェックの場合、ステップ2401で読み込んだキー項目
データと、ステップ2402で読み込んだキー項目デー
タが等しいため、0次表データチェック処理はここで終
了する。
【0129】また、ステップ2403において2つのデ
ータの組み合わせが等しくない場合、ブロック化処理部
10は、照合対象が0次表の1番目のレコードであれ
ば、すなわち、キー項目データ読み込み用カウンタの値
が1であれば(ステップ2404)、0次表の先頭にブ
ランクレコードを追加するため、ステップ2408に処
理を進める。照合対象が1番目のレコードではない場合
は、0次表の直前のレコードのキー項目データ組み合わ
せと比較するため、ブロック化処理部10は、キー項目
データ読み込み用カウンタを1減らし(ステップ240
5)、キー項目データ読み込み用カウンタの示す0次表
13のレコードのキー項目データを再び読み出す(ステ
ップ2406)。次に、ブロック化処理部10は、ステ
ップ2402で読み込んだ0次表13のキー項目データ
の組み合わせとステップ2406で読み込んだ0次表1
3のキー項目データの組み合わせが等しいか否かを検査
する(ステップ2407)。ここで、2つのデータが等
しくない場合、キー項目データの組み合わせに該当する
レコードが0次表13にないことになるため、ブロック
化処理部10は、図25(b)に示すように、0次表1
3のi行目にブランクレコードを挿入する(ステップ2
408)。ブランクレコードを挿入すると、ブランクレ
コード以降に続く0次表13の全てのレコードが1レコ
ード分繰り下げられる。次に、ステップ2405で減ら
したカウンタを元通りにするために、キー項目データ読
み込み用カウンタを1増やす(ステップ2409)。
【0130】例えば、図25(a)に示す0次表13J
の2レコード目をチェックする場合(2回目の0次表デ
ータチェック処理)は、ind_list(0)=0、
ind_list(1)=0、ind_list(2)
=1であるから、ステップ2401では、ブロック化処
理部10はデータ格納領域1811、1821、183
2からデータを読み込み、読み込まれるキー項目データ
の組み合わせは(「A」、「テレビ」、「5」)であ
る。また、ステップ2402で読み込まれるデータは、
2回目の0次表データチェック処理であるためカウンタ
には2が設定されているので、0次表13Hの2レコー
ド目のキー項目データの組み合わせである(「A」、
「ラジオ」、「4」)である。ゆえに、ステップ240
3ではステップ2401で読み込んだキー項目データ
と、ステップ2402で読み込んだキー項目データは異
なると判定されるため、処理はステップ2405に進め
られる。ステップ2405でカウンタの値は1となるた
め、ステップ2406で読み込まれるデータは、0次表
13Hの1レコード目のキー項目データの組み合わせで
ある(「A」、「テレビ」、「4」)となる。
【0131】従って、ステップ2402で読み込まれた
データの組み合わせと、ステップ2406で読み込まれ
たデータの組み合わせとが等しくないため、ブロック化
処理部10は、0次表13Jのi行目、すなわち、2行
目にブランクレコードを挿入する。同様にしてすべての
レコードのチェックが終了すると、0次表13Jの場
合、結果として3ヵ所にブランクレコードが挿入され、
図25(b)に図示する0次表13Kが得られる。
【0132】また、ステップ2407で等しい場合は、
0次表13におけるキー項目データの組み合わせが重複
していることになるため、ブロック化パラメータテーブ
ル150のブロック化エラーコード格納領域158にエ
ラーコードを設定して(ステップ2410)、0次表デ
ータチェック処理を終了する。
【0133】例えば、図7(a)に示した0次表13H
の2レコード目をチェックする場合(2回目の0次表デ
ータチェック処理)を考えると、ind_list
(0)=0、ind_list(1)=1であるから、
ステップ2401では、ブロック化処理部10はデータ
格納領域1811、1822からデータを読み込み、読
み込まれるキー項目データの組み合わせは(「A」、
「5」)である。また、ステップ2402で読み込まれ
るデータは、2回目の0次表データチェック処理である
ためカウンタには2が設定されているので、0次表13
Hの2レコード目のキー項目データの組み合わせである
(「A」、「4」)である。ゆえに、ステップ2403
ではステップ2401で読み込んだキー項目データと、
ステップ2402で読み込んだキー項目データは異なる
と判定されるため、処理はステップ2405に進められ
る。ステップ2405でカウンタの値は1となるため、
ステップ2406で読み込まれるデータは、0次表13
Hの1レコード目のキー項目データの組み合わせである
(「A」、「4」)となる。この例では、ステップ24
02で読み込まれたデータの組み合わせと、ステップ2
406で読み込まれたデータの組み合わせとが等しい。
これは、0次表にキー項目の重複するレコードがあるた
めである。ステップ2407でこのようなキー項目の重
複を検出したブロック化処理部10は、ステップ241
0でエラーコードを設定し、0次表データチェック処理
を終了する。
【0134】次に、ステップ1804のブロック化並べ
換え処理について説明する。ブロック化並べ換え処理の
一例を図26に示す。
【0135】データ配列40は、ブロック化変換の元と
なる0次表にブロック化チェック処理を行なった後の0
次表13における、第1数値項目〜第h数値項目のデー
タを抽出した配列である。これを、ブロック化変換元表
と呼ぶ。また、この配列の各要素は、行番号をi、列番
号をjとすると、S(i,j)で表わす。ブロック化変
換元表40の列の総数は、数値項目の数であるhであ
り、行の総数は、全てのブロック化キー項目のデータ数
と全ての整列キー項目のデータ数とを掛け合わせた数で
ある。行の総数はb(1)×…b(v)×s(1)×…
s(w)で求められる。本実施例では、ブロック化変換
元表40は新たに主記憶22に確保された領域に保持さ
れるわけではない。
【0136】一方、1次表14は、ブロック化変換元表
40のデータを配置させるため、ブロック化処理部10
が新たに作成する表であり、主記憶22に配置される。
1次表14の列の総数は、全ての整列キー項目のデータ
数と数値項目数とを掛け合わせた数である。すなわち、
列の総数はs(1)×…×s(w)×h個となる。ま
た、1次表14の行の総数は、全てのブロック化キー項
目のデータ数を掛け合わせたb(1)×…×b(v)個
となる。ここでは、1次表14Kの各要素は、行番号を
k、列番号をtとすると、D(k,t)で表わす。
【0137】次に、ブロック化変換元表40の各要素
を、1次表14Kに対応付ける方法について説明する。
ブロック化変換元表40の任意のデータをS(i、
j)、1次表14Kの任意の要素をD(k、t)と表
し、S(i、j)の1次表14Kへの写像を考える。i
は、ブロック化変換元表40のX座標であり、0〜hー
1の範囲で動き、jは、ブロック化変換元表40のY座
標であり、0〜s(1)×…s(w)×b(1)×…×
b(v)ー1の範囲で動く。同様に、kは、1次表14
KのX座標であり、tは、1次表14のY座標である。
【0138】今、αをj÷(s(1)×…s(w))の
商、βをj÷(s(1)×…s(w))の余りとする
と、1次表14KのX座標はk=i+β×h、Y座標は
t=αという写像を考えることができる。本実施例で
は、0次表の各データについて、このようにして1次表
14上の格納位置を求め、データを1次表14に格納し
て、1次表14を得る。
【0139】図27は、以上説明したブロック化並べ換
え処理をフローチャートで表したものである。ブロック
化処理部10は、まず始めに、1次表14Kの配列のエ
リアを主記憶22内に確保する(ステップ2701)。
配列のエリアを確保する際には、キー項目データ最大数
テーブル19の各要素と、ブロック化パラメータテーブ
ル150の数値項目数格納領域156を参照する。例え
ば、1次表14B(図13に図示)を作成する場合を考
える。この例ではb(1)=2、b(2)=3、s
(1)=2、h=2である。ゆえに、キー項目データ最
大数テーブル19の0番目の格納領域には2が、1番目
の格納領域には3が、2番目の格納領域には2が、それ
ぞれ保持され、数値項目数格納領域156には2が格納
されている。従って、列の総数は、s(1)×h=2×
2=4、行の総数はb(1)×b(2)=2×3=6の
大きさの配列を格納する領域が確保される。
【0140】次に、ブロック化処理部10は、変換元表
40のY座標を参照する変数jを初期化、すなわち、主
記憶22上の変数jの格納領域に0を格納し(ステップ
2702)、α、β、tを求める(ステップ270
3)。上述のように、αはj÷(s(1)×…s
(w))の商、βはj÷(s(1)×…s(w))であ
る。また、tは1次表14の各要素を参照する際の列番
号(Y座標)を表わす変数であり、ステップ2703で
は、主記憶22内のtの格納領域にαの値が格納され
る。
【0141】α、β、tが定められると、ブロック化処
理部10は変数iを初期化、すなわち、主記憶22上の
変数iの格納領域に0を格納し(ステップ2704)、
続いて、1次表14のX座標kを算出する。なお、k
は、k=i+β×hの計算式により求められる。これに
より、処理対象のデータの1次表14KにおけるX座標
とY座標とが求められたので、ブロック化処理部10
は、変換元表40のi行j列のデータを、1次表14の
k行t列に格納する処理を行う(ステップ2705)。
【0142】次に、ブロック化処理部10は、変数iと
変換元表40の列数であるhの大きさを比べ(ステップ
2706)、変数iが小さければ、変数iを1増やして
(ステップ2707)、ステップ2705に処理をもど
して、同じ行の次の列のレコードのY座標を計算して、
データの1次表14への格納処理を行なう。また、変数
iの示す0次表のレコードの列番号が、すでに最終列に
達している場合(ステップ2706)、ブロック化処理
部10は、変数jと変換元表40の行数とを比べる(ス
テップ2708)。なお、上述のように、行数はs
(1)×…s(w)×b(1)×…×b(v)により求
められる。変数jが小さければ、まだ処理すべき行が残
っているので、変数jを1増やし(ステップ270
9)、処理をステップ2703に戻す。これにより、変
換元表40の次の行のレコードの、1次表14への格納
が実行される。また、ステップ2708において、すで
に処理対象の行番号iが最終行に達していた場合、ブロ
ック化チェック済みの0次表に含まれるすべてのレコー
ドが、1次表の対応する場所に格納されたことになるの
で、ブロック化処理部10はブロック化並べ替え処理を
終了する。以上の処理の結果、図13の0次表13Bか
ら、1次表14Bが作成される。
【0143】図28は、分配化処理(ステップ170
6)における分配化処理部11の動作を示すフローチャ
ートである。図17を用いて説明したように、分配化
は、ブロック化処理を経て行う場合と、ブロック化処理
を経ないで行う場合がある。なお、ブロック化処理を経
て行う場合、ブロック化処理部10による整合性のチェ
ックと、ブランクデータの挿入が行なわれているため、
分配化処理におけるパラメータの整合性のチェックは、
行なう必要がない。そこで、まず、分配化処理部11
は、ブロック化パラメータテーブル150のブロック化
指定格納領域151を参照して、ブロック化指定の有無
を調べる(ステップ2801)。ここで、ブロック化指
定が有った場合は、すでにブロック化処理が済んでいる
はずなので分配化処理部11は、パラメータのチェック
を行なうことなく、分配化並べ換え処理を実行する(ス
テップ2804)。また、ブロック化指定が無ければ、
ブロック化は行なわれていないので、分配化処理部11
は、分配化パラメータのチェック処理を行う(ステップ
2802)。
【0144】この分配化パラメータのチェックは、ブロ
ック化の際のチェックと同様に、分配対象項目数mが繰
返し最小単位nで割り切れるかどうか(m÷nが正の整
数となるかどうか)を調べることで実現する。ここでチ
ェックの結果、m÷nが正の整数であれば、分配化パラ
メータが正しいので、分配化処理部11は、次の並び換
え処理を行い(ステップ2804)、分配化処理を終了
する。また、正の整数でなければ、パラメータの指定が
正しくないので、分配化処理部11は、分配化パラメー
タテーブル160の分配化エラーコード格納領域166
にエラーコードを設定して(ステップ2803)、分配
化処理を終了する。
【0145】つぎに、分配化並び換え処理(ステップ2
804)について説明する。まず、分配化並べ替え処理
の際の1次表における格納位置の決定方法について説明
する。分配化並べ替え処理における配列の座標変換の概
念を図29に示す。前述のように、分配化は、分配化の
みを行う場合とブロック化処理後に行う場合がある。分
配化のみを行う場合は、分配対象項目で構成される表、
ブロック化処理後に行う場合は、ブロック化処理後の1
次表14の数値項目で構成される表が分配化変換の元に
なる。この分配化の元になる表(ブロック化を経ていな
いときは0次表の分配化対象項目のデータの配列、ブロ
ック化済のときは1次表の数値項目のデータの配列)を
分配化変換元表と呼ぶ。分配化変換元表41は配列の構
造を有するた、ここでは、x列y行の配列であるとす
る。すなわち、分配化変換元表41は、1行内に横に並
べるデータがx個、1列内に縦に並べるデータがy個あ
るとする。この分配化変換元表41のi行j列に保持さ
れるデータは、S(i,j)として表わされる。例え
ば、1次表14B(図13に図示)の場合は、列の総数
xは4、行の総数yは6である。分配化変換元表41
は、分配化処理部11が新たに主記憶22にエリアを確
保後、ブロック化処理後の1次表14における数値項目
のデータか、あるいは、0次表13における分配化対象
項目のデータをコピーすることで作成される。
【0146】分配化処理部11は、新たに主記憶22に
格納領域を確保し、分配化変換元表41のデータを再配
置して1次表14Mを作成する。1次表14Mは、配列
であり、そのk行t列の位置に保持されるデータはD
(k,t)として表わすことができる。1次表14Mの
列の総数は、分配化変換元表41の列の総数xをqで割
った数となり、行の総数は、分配化変換元表41の行の
総数yにqをかけたものとなる。なお、qは、分配化パ
ラメータとして、入出力装置を介して入力された値であ
り、分配化変換元表41の1行に含まれるデータのうち
の、分配化後の1次表において1列に表現されるデータ
の数qである。1次表14F(図13に図示)の場合
は、列の総数はx÷q=4÷2=2となり、行の総数は
y×q=6×2=12となる。
【0147】次に、分配化変換元表41の各データの、
1次表14Mにおける格納位置の求め方について説明す
る。ここで、分配化変換元表41のデータをS(i、
j)、1次表14Kの要素をD(k、t)と表し、分配
化変換元表41のS(i、j)の1次表14への写像を
考える。iは、分配化変換元表41のX座標であり、j
は、分配化変換元表41のY座標である。同様に、k
は、1次表14MのX座標であり、tは、1次表14M
のY座標である。今、αをi÷(p×q)の商、βをi
÷(p×q)の余りとし、さらに、γをβ÷pの商、δ
をβ÷pの余りとすると、1次表14Mの要素(X座標
k、Y座標t)は、k=pα+δ、t=qj+γの変換
式により変換して得られる写像として考えることができ
る。
【0148】本実施例における、分配化処理部11の分
配化並べ替え処理を図30に示す。まず始めに、分配化
処理部11は、変換元表41のエリアを主記憶22に確
保後、ブロック化後の1次表14、あるいはブロック化
が行なわれていない場合は0次表13のデータを、変換
元表41用に確保された領域にコピーする(ステップ3
001)。ここで、ブロック化が行なわれていない場合
には、0次表13における分配対象項目の第1分配対象
項目から第m分配対象項目までのデータがコピーされ、
ブロック化後に分配化を行う場合には、1次表14の数
値項目のデータがコピーされる。
【0149】次に、分配化処理部11は、1次表14M
の配列のエリアを主記憶22に確保する(ステップ26
02)。なお、分配化処理部11は、配列のエリアを確
保するに際して、分配化変換元表41の列の総数xおよ
び行の総数yと、分配化パラメータテーブル160の一
列内データ数格納領域に165に保持されている、分配
化により一列に表現されるデータの数qを参照し、これ
らの値に従って、作成する1次表14Mの大きさを決定
する。次に、分配化処理部11は、変換元表41のX座
標を示すための変数iを初期化して0とし(ステップ3
003)、上述の計算式によりα、β、γ、δを算出
後、1次表14MのX座標であるkをk=pα+δの計
算式により算出する(ステップ3004)。
【0150】X座標が求められたので、分配化処理部1
1は、次に、変換元表41のY座標を参照する変数jを
初期化し、0にする(ステップ3005)。次に、分配
化処理部11は、1次表14MのY座標tを、t=qj
+γの計算により算出し(ステップ3006)、変換元
表41のi行j列のデータを1次表14Mのk行t列の
格納領域に格納する処理を行う(ステップ3007)。
【0151】データを格納すると、さらに格納すべきデ
ータがあるかどうか調べるため、分配化処理部11は、
変数jと分配化変換元表41の行の総数yとを比べる
(ステップ3008)。変数jが小さければ、処理対象
の列内に、まだ処理すべきデータが残っているので、分
配化処理部11は、変数jを1増やし(ステップ300
9)、ステップ3006に処理を戻す。ステップ300
8において、変数jがyに達していれば、処理対象の列
内の最後のデータの処理が終わったことを示しているの
で、分配化処理部11は、今度は、変数iと分配化変換
元表41の列の総数xを比べる(ステップ3010)。
ここで、変数iが小さければ、まだ処理すべき列が残っ
ているので、分配化処理部11は、変数iを1増やし
(ステップ3011)、ステップ3004に処理を戻し
て、次の列の並べ替えを行なう。ステップ3010にお
いて、変数iがxに達していれば、すでにすべての列の
並べ替えが行なわれているので、分配化処理部11は、
分配化並べ替え処理を終了する。
【0152】以上の処理によって、図13の1次表14
Fが生成される。そして、ステップ1708にてデータ
転送処理部12が、生成された1次表14を、表計算手
段15を介してユーザ表20に転送することにより、D
B表5のデータ配置構造を、ユーザの求めるデータ配置
構造に変換し、表計算手段15で扱うことができるユー
ザ表20とすることができる。
【0153】以上説明したように、本実施例では、デー
タ配置構造の変換処理をブロック化処理と分配化処理の
組み合わせとして考え、該変換処理毎にパラメータを与
えることによりデータ配置構造の変換を実現することが
できる。ゆえに、本実施例のデータ構造変換システムを
用いれば、データ配置構造を変換するために新たにプロ
グラムを作成することなく、データ配置構造を変換する
ことができる。
【0154】ところで、本実施例のブロック化における
チェック機能では、キー項目データの組み合わせに相当
する数値データがない場合は、0次表13の相当行にブ
ランクレコードを挿入していた。しかしこの場合、ブラ
ンク行を挿入せずエラーメッセージを表示して終了する
ことも可能である。
【0155】また、本実施例では、キー項目データのソ
ート処理を、ブロック化処理部10で行っているが、該
ソート処理を、サーバ1の前記DBエンジン3を利用し
て行うことも可能である。その場合、前記0次表13に
は既にソート済のデータが入るので、本実施例のデータ
構造変換システムでは、改めてソート処理を行なわない
ようにすることができる。
【0156】また、本実施例では、キー項目データのソ
ートを、ブロック化処理部10のソート機能にしたがっ
て行う例を示したが、キー項目のデータの順序をユーザ
が指定することも可能である。この場合、パラメータ入
力処理時(ステップ1401)に、該キー項目の並び順
のユーザによる入力を受け付け、対応付けパラメータ入
力処理部9が、指定された並び順をパラメータとしてパ
ラメータテーブル150に新たに設けられた格納領域に
格納するようにすればよい。この際には、ブロック化処
理部10は、該キー項目によるソート処理時(ステップ
1501)に、パラメータテーブル150内のデータ順
にしたがってソートするようにする。これにより、キー
項目のデータの順序をユーザの指定順にすることができ
るようになる。この場合、ユーザが見出しデータの順序
を自由に指定できるので、より柔軟な表作成を行うこと
ができる。
【0157】以上説明したように、本実施例によれば、
表のデータ配置構造の変換を、変換の仕様を定めるため
のパラメータを指定するだけで、該パラメータを用いた
ブロック化と分配化の組み合わせにより実現でき、任意
のデータ配置構造の変換を行うことができる。
【0158】
【発明の効果】本発明によれば、変換の仕様を定めるた
めのパラメータを指定するだけで、ユーザが新たにプロ
グラムを組まなくとも任意のデータ配置構造の変換を行
うことができる。
【図面の簡単な説明】
【図1】本発明の一実施例におけるデータ配置構造変換
システムの機能ブロック図である。
【図2】本発明の一実施例におけるデータ処理システム
のハードウェア構成図である。
【図3】本発明の一実施例における0次表、1次表、ユ
ーザ表の一例を示す図である。
【図4】本発明の一実施例におけるブロック化の一例を
示す図である。
【図5】本発明の一実施例におけるブロック化の一例を
示す図である。
【図6】本発明の一実施例におけるブロック化の一例を
示す図である。
【図7】本発明の一実施例におけるブロック化における
チェック機能を示す図である。
【図8】本発明の一実施例におけるブロック化で変換可
能な表形式を示す図である。
【図9】本発明の一実施例における分配化の一例を示す
図である。
【図10】本発明の一実施例における分配化パラメータ
を示す図である。
【図11】本発明の一実施例における分配化パラメータ
の一例を示す図である。
【図12】本発明の一実施例におけるブロック化と分配
化の組み合わせの一例を示す図である。
【図13】本発明の一実施例におけるブロック化と分配
化の組み合わせの一例を示す図である。
【図14】本発明の一実施例におけるブロック化と分配
化の組み合わせの一例を示す図である。
【図15】本発明の一実施例におけるブロック化パラメ
ータテーブルの一例を示す図である。
【図16】本発明の一実施例における分配化パラメータ
テーブルの一例を示す図である。
【図17】本発明の一実施例における対応付け処理動作
を示す図である。
【図18】本発明の一実施例におけるブロック化処理動
作を示す図である。
【図19】本発明の一実施例におけるキー項目データテ
ーブルの一例を示す図である。
【図20】本発明の一実施例におけるmax_indの
一例とind_listの一例を示す図である。
【図21】本発明の一実施例におけるブロック化チェッ
ク処理動作の一例を示す図である。
【図22】本発明の一実施例におけるキー項目データテ
ーブル格納処理の一例を示す図である。
【図23】本発明の一実施例におけるブロック化サブチ
ェック処理動作の一例を示す図である。
【図24】本発明の一実施例における0次表チェック処
理動作の一例を示す図である。
【図25】本発明の一実施例におけるブロック化におけ
るブランクレコード挿入処理の一例を示す図である。
【図26】本発明の一実施例におけるブロック化並べ換
え処理の写像の一例を示す図である。
【図27】本発明の一実施例におけるブロック化並べ換
え処理動作の一例を示す図である。
【図28】本発明の一実施例における分配化処理動作を
示す図である。
【図29】本発明の一実施例における分配化並べ換え処
理の写像の一例を示す図である。
【図30】本発明の一実施例における分配化並べ換え処
理動作の一例を示す図である。
【図31】分配化のパラメータを説明する説明図であ
る。
【図32】キー項目データテーブルインデックスの各領
域の保持する値の組み合わせを示す説明図である。
【図33】ソート処理部の処理の流れを示す流れ図であ
る。
【符号の説明】 1…サーバ、2…クライアント、3…DBエンジン、4
…ハードディスク、5…DBファイル、6…ネットワー
ク、7…オペレーティングシステム、8…対応付け処理
部、9…対応付けパラメータ入力処理部、10…ブロッ
ク化処理部、11…分配化処理部、12…データ転送処
理部、13…0次表、14…1次表、15…表計算ソフ
ト、16…スプレッドシート、18…キー項目データテ
ーブル、19…キー項目データ最大数テーブル、20…
ユーザ表、21…CPU、22…主記憶、23…外部記
憶装置、24…キーボード制御部、25…キーボード、
26…マウス制御部、27…マウス、28…表示制御
部、29…表示装置、30…LAN制御部、31…LA
Nボード、50…キー項目データテーブルインデック
ス、150…ブロック化パラメータテーブル、160…
分配化パラメータテーブル。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年6月27日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図3】
【図21】
【図33】
【図2】
【図4】
【図5】
【図7】
【図28】
【図6】
【図8】
【図10】
【図9】
【図11】
【図12】
【図16】
【図18】
【図13】
【図14】
【図17】
【図20】
【図15】
【図19】
【図26】
【図31】
【図22】
【図23】
【図24】
【図25】
【図27】
【図29】
【図30】
【図32】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 菊地 聡 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立製作所マイクロエレクトロニク ス機器開発研究所内 (72)発明者 中根 啓一 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立製作所マイクロエレクトロニク ス機器開発研究所内 (72)発明者 田中 勝 神奈川県川崎市幸区鹿島田890番地の12 株式会社日立製作所情報システム事業部内 (72)発明者 藤井 泰文 神奈川県川崎市幸区鹿島田890番地の12 株式会社日立製作所情報システム事業部内

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】行を示す項目と列を示す項目とにより定義
    されるデータ配置構造を有する、あらかじめ与えられた
    表の、該データ配置構造を変換する方法において、 上記項目のうち、外部からの入力により定められた項目
    を、ブロック化キー項目とし、上記あらかじめ与えられ
    た表を変換元の表として、該変換元の表の複数行に含ま
    れるデータを、該ブロック化キー項目が一致するデータ
    を一行にまとめ、整列のために外部からの入力により定
    められたキー項目である整列キー項目の順序に従って整
    列させ、ブロック化後の表を作成するブロック化のステ
    ップを有することを特徴とするデータ配置構造変換方
    法。
  2. 【請求項2】行を示す項目と列を示す項目とにより定義
    されるデータ配置構造を有する、あらかじめ与えられた
    表の、該データ配置構造を変換する方法において、 上記あらかじめ与えられた表を変換元の表として、該変
    換元の表の一行に含まれるデータを、分配の仕様を定め
    るために外部から入力された分配化パラメータにより定
    められた数の行に分け、複数行として、分配化後の表を
    作成する分配化のステップを有することを特徴とするデ
    ータ配置構造変換方法。
  3. 【請求項3】請求項1において、 前記あらかじめ与えられた表および前記ブロック化後の
    表のいずれかを変換元の表として、該変換元の前記表の
    一行に含まれるデータを、分配の仕様を定めるために外
    部からの入力された分配化パラメータにより定められた
    数の行に分け、複数行として、分配化後の表を作成する
    分配化のステップをさらに有することを特徴とするデー
    タ配置構造変換方法。
  4. 【請求項4】請求項1において、 あらかじめ与えられた表のデータを、外部からの入力に
    より定められた項目のデータを基にしてソートし、ソー
    ト済の表を作成するソートステップをさらに有し、 前記ブロック化ステップは、上記ソート済の表を、前記
    変換元の表としてブロック化を行なうステップであるこ
    とを特徴とするデータ配置構造変換方法。
  5. 【請求項5】請求項2において、 あらかじめ与えられた表のデータを、外部からの入力に
    より定められた項目のデータを基にしてソートし、ソー
    ト済の表を作成するソートステップをさらに有し、 前記分配化ステップは、上記ソート済の表を、前記変換
    元の表として分配化を行なうステップであることを特徴
    とするデータ配置構造変換方法。
  6. 【請求項6】請求項2において、 前記分配化パラメータは、前記変換元の表の一行に含ま
    れるデータのうち、前記分配化後の表の一行に配置する
    データの配置の連続する個数と、該分配化後の表におけ
    る該変換元の表の一行に含まれるデータの配置される列
    の数とを含むことを特徴とするデータ配置構造変換方
    法。
  7. 【請求項7】請求項3において、 前記分配化パラメータは、前記変換元の表の一行に含ま
    れるデータのうち、前記分配化後の表の一行に配置する
    データの配置の連続する個数と、該分配化後の表におけ
    る該変換元の表の一行に含まれるデータの配置される列
    の数とを含むことを特徴とするデータ配置構造変換方
    法。
  8. 【請求項8】請求項1において、 前記ブロック化ステップは、 前記指定されたブロック化キー項目および整列キー項目
    のデータの組み合わせを、前記あらかじめ与えられた表
    の一行に含まれるデータの項目の組み合わせと照合し、 上記あらかじめ与えられた表にない組み合わせがあれ
    ば、該変換元の表に該項目の組み合わせ対応するブラン
    クデータを挿入して前記変換元の表とし、 上記あらかじめ与えられた表の一つの該組み合わせに重
    複して対応する複数の組み合わせがあればエラーとする
    ことを特徴とするデータ配置構造変換方法。
  9. 【請求項9】請求項2において、 前記分配化ステップは、 前記あらかじめ与えられた表の一行に含まれるデータの
    うち、分配に供するデータの数が、上記あらかじめ与え
    られた表の一行に含まれるデータのうち前記変換後の表
    の一行に配置するデータの配置の連続する個数と、上記
    あらかじめ与えられた表の一行に含まれるデータのうち
    該変換後の表における該変換元の表の一行に含まれるデ
    ータの配置される列の数とを掛けあわせて得られる数の
    整数倍であれば、上記あらかじめ与えられた表を前記変
    換元の表とし、整数倍でなければ、エラーとすることを
    特徴とするデータ配置構造変換方法。
  10. 【請求項10】請求項3において、 前記ブロック化ステップは、 前記指定されたブロック化キー項目および整列キー項目
    のデータの組み合わせを、前記あらかじめ与えられた表
    の一行に含まれるデータの項目の組み合わせと照合し、
    上記あらかじめ与えられた表にない組み合わせがあれ
    ば、該変換元の表に該項目の組み合わせ対応するブラン
    クデータを挿入して前記変換元の表とし、上記あらかじ
    め与えられた表の一つの該組み合わせに重複して対応す
    る複数の組み合わせがあればエラーとし、 前記分配化ステップは、 前記あらかじめ与えられた表が、前記ブロック化後の表
    ではないときは、上記あらかじめ与えられた表の一行に
    含まれるデータのうちの分配に供するデータの数が、上
    記あらかじめ与えられた表の一行に含まれるデータのう
    ちの前記変換後の表の一行に配置するデータの配置の連
    続する個数と、上記あらかじめ与えられた表の一行に含
    まれるデータのうちの該変換後の表における該変換元の
    表の一行に含まれるデータの配置される列の数とを掛け
    あわせて得られる数の整数倍であれば、上記あらかじめ
    与えられた表を前記変換元の表とし、整数倍でなけれ
    ば、エラーとし、 上記あらかじめ与えられた表が、前記ブロック化後の表
    のときは、該ブロック化後の表を変換元の表とすること
    を特徴とするデータ配置構造変換方法。
  11. 【請求項11】記憶装置と制御装置とを有し、該記憶装
    置は、変換元の表および変換後の表の格納領域を有し、
    該制御装置は、変換元の表のデータ配置構造を変換し
    て、該変換後の表の格納領域に格納する対応付け処理部
    を有するデータ配置構造変換システムにおいて、 上記記憶装置に格納される表は、行を示す項目と列を示
    す項目とにより定義されるデータ配置構造を有し、 上記対応付け処理部は、 上記項目のうち、外部からの入力により定められた項目
    を、ブロック化キー項目とし、上記あらかじめ与えられ
    た表を変換元の表として、該変換元の表の複数行に含ま
    れるデータを、該ブロック化キー項目が一致するデータ
    を一行にまとめ、整列のために外部からの入力により定
    められたキー項目である整列キー項目の順序に従って整
    列させ、ブロック化後の表を作成するブロック化処理部
    と、 上記あらかじめ与えられた表を変換元の表として、該変
    換元の表の一行に含まれるデータを、分配の仕様を定め
    るために外部から入力された分配化パラメータにより定
    められた数の行に分け、複数行として、分配化後の表を
    作成する分配化処理部とを有することを特徴とするデー
    タ配置構造変換システム。
JP6001297A 1994-01-11 1994-01-11 データ配置構造変換方法およびデータ配置構造変換システム Pending JPH07210432A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6001297A JPH07210432A (ja) 1994-01-11 1994-01-11 データ配置構造変換方法およびデータ配置構造変換システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6001297A JPH07210432A (ja) 1994-01-11 1994-01-11 データ配置構造変換方法およびデータ配置構造変換システム

Publications (1)

Publication Number Publication Date
JPH07210432A true JPH07210432A (ja) 1995-08-11

Family

ID=11497542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6001297A Pending JPH07210432A (ja) 1994-01-11 1994-01-11 データ配置構造変換方法およびデータ配置構造変換システム

Country Status (1)

Country Link
JP (1) JPH07210432A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1196250A (ja) * 1997-09-16 1999-04-09 Casio Comput Co Ltd データ集計表示装置及び記憶媒体
JP2006268688A (ja) * 2005-03-25 2006-10-05 Nec Corp 複数系列データ配置方法及び複数系列データ配置装置
JP6055948B1 (ja) * 2016-04-20 2016-12-27 株式会社岩崎電機製作所 データベース構築装置、データベース構築方法、および、データベース構築プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1196250A (ja) * 1997-09-16 1999-04-09 Casio Comput Co Ltd データ集計表示装置及び記憶媒体
JP2006268688A (ja) * 2005-03-25 2006-10-05 Nec Corp 複数系列データ配置方法及び複数系列データ配置装置
JP6055948B1 (ja) * 2016-04-20 2016-12-27 株式会社岩崎電機製作所 データベース構築装置、データベース構築方法、および、データベース構築プログラム
JP2017194840A (ja) * 2016-04-20 2017-10-26 株式会社岩崎電機製作所 データベース構築装置、データベース構築方法、および、データベース構築プログラム

Similar Documents

Publication Publication Date Title
JP3581831B2 (ja) 表形式データの検索・集計・ソート方法及び装置
US8112448B2 (en) Table classification device, table classification method, and table classification program
US5237678A (en) System for storing and manipulating information in an information base
US6240395B1 (en) Device and method for project management
US5272628A (en) Method and system for aggregating tables having dissimilar formats
EP0294187A2 (en) Computer system for advanced financial applications
US5432930A (en) System for accessing cobol data files by generating a dictionary of NF.sup.2
JP2000155795A (ja) 帳票認識方法および装置
US4644480A (en) Reliability analyzing system for manufacturing processes
CN114579839B (zh) 一种基于网页的数据处理系统
EP0167725A2 (en) Dynamic data type conversion system
JPH07295776A (ja) データ配置構造変換方法およびそのシステム並びにクライアントサーバシステム
JPH07210432A (ja) データ配置構造変換方法およびデータ配置構造変換システム
KR101030250B1 (ko) 데이터 처리방법 및 데이터 처리 프로그램
JPS5892077A (ja) 巻片編集印刷装置
US20020174141A1 (en) Method and system for automated data manipulation in an electronic spreadsheet program or the like
JPS6172333A (ja) 複数ファイルのマージ方法
JPH07296084A (ja) データ処理システムおよびその方法
JPS6165333A (ja) システム構造評価方式
JP2636472B2 (ja) 階層データ配置装置
JPH0421229B2 (ja)
US20060036990A1 (en) Tool comprising systems engineering environment for meeting task requirements
Stacey CODAP: Control Card Specifications for the Univac 1108.
JPS63228222A (ja) デ−タベ−ス処理方式
JPH08171486A (ja) データ項目部品を利用するプログラム開発支援装置