(57)【特許請求の範囲】
【請求項１】
データを格納するデータ格納部と、データ構造の要素や要素の値の型別に決められたデータ格納操作の処理方法に関する格納操作情報を格納する操作情報格納部と、データ構造の要素ごとに前記格納操作情報への参照情報を格納する要素情報格納部と、データ処理部とを有する処理システムにおけるデータ格納処理方法であって、
前記データ処理部は、
データファイルのデータを前記データ格納部へ格納する際に、前記要素情報格納部を参照し、
前記データファイルのデータ構造の構成要素が前記要素情報格納部内に存在する場合には、前記要素情報格納部に格納されている当該要素の参照情報をもとに、前記操作情報格納部から対応する格納操作情報を取得し、該格納操作情報を用いて前記データファイルのデータを前記データ格納部へ格納し、
前記データファイルのデータ構造内に存在する要素が前記要素情報格納部内に存在しない場合には、当該要素を飛ばすか又は参考要素として、前記データファイルのデータを前記データ格納部へ格納し、
前記要素情報格納部内に存在する要素が、前記データファイルのデータ構造内に存在しない場合には、当該要素のデータを前記データファイルに記載されている他のデータから生成できるか判断し、生成できる場合、該要素のデータを前記データファイルの他のデータから生成して前記データ格納部へ格納する、
ことを特徴とするデータ格納処理方法。
【請求項２】
請求項１記載のデータ格納処理方法における前記データ処理部の処理をコンピュータに実行させるためのプログラム。
【請求項３】
プログラムを記憶したコンピュータが読み取り可能な記憶媒体であって、前記請求項２に記載のプログラムを記憶した記憶媒体。
【請求項４】
データを格納するデータ格納部と、データ構造の要素や要素の値の型別に決められたデータ格納操作の処理方法に関する格納操作情報を格納する操作情報格納部と、データ構造の要素ごとに前記格納操作情報への参照情報を格納する要素情報格納部と、データ処理部とを有する処理システムであって、
前記データ処理部は、
データファイルのデータを前記データ格納部へ格納する際に、前記要素情報格納部を参照し、
前記データファイルのデータ構造の構成要素が前記要素情報格納部内に存在する場合には、前記要素情報格納部に格納されている当該要素の参照情報をもとに、前記操作情報格納部から対応する格納操作情報を取得し、該格納操作情報を用いて前記データファイルのデータを前記データ格納部へ格納し、
前記データファイルのデータ構造内に存在する要素が前記要素情報格納部内に存在しない場合には、当該要素を飛ばすか又は参考要素として、前記データファイルのデータを前記データ格納部へ格納し、
前記要素情報格納部内に存在する要素が、前記データファイルのデータ構造内に存在しない場合には、当該要素のデータを前記データファイルに記載されている他のデータから生成できるか判断し、生成できる場合、該要素のデータを前記データファイルの他のデータから生成して前記データ格納部へ格納する、
ことを特徴とする処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＡＤシステムなどのように、作成したデータファイルを長期に保存したりデータファイルを介して他の処理システムとデータの交換を行なったりする場合に、当該処理システムにおいてデータ構造の変更があっても前記データファイルのデータを当該処理システムのデータ格納部に格納できるようにする技術に関する。
【０００２】
【従来の技術】
一般に、コンピュータソフトウエア（プログラム，以下、単にソフトウエアと称す）は改良のために絶えず機能の追加や変更が行われており、それに併せてデータ構造の変更も頻繁に行われる。ソフトウエアで用いられているデータは何らかのデータ構造を持ち、様々な要素で構成されているが、例えばそのような要素の一部が削除されたり追加されたり変更されたりするのである。このようにデータ構造が変更になると、当該処理システムの過去のバージョン（版）のソフトウエアで書き込んだデータファイルのデータがデータ構造の違いにより現在のバージョンでは読み込んで当該処理システムのデータ格納部に格納できないという問題が発生する。これを回避するために、従来技術ではデータファイルを変換する方法により、データファイルを新しいバージョンに合うように変換してから読み込ませる方法がとられていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、前記の従来技術においては、当該システムのバージョンが変わるたびにデータファイルも変換しなければならないという大変な労力を必要とした。また、安全のために元のデータファイルも保存するとなるとデータファイルを格納する記憶手段の記憶容量も何倍も必要となってしまう。さらに、作成したデータファイルを他のシステムの利用者が利用する場合も、バージョンの違いによってその都度データファイルの変換が必要になってしまい、大変わずらわしい。
【０００４】
本発明の目的は、このような従来技術の問題を解決することにあり、具体的には、当該処理システムのデータ構造の変更に関係なくデータファイルのデータを読み込んで当該処理システムのデータ格納部などに格納できるようにし、データファイルを作成した当該処理システムのバージョンを気にすることなく用いることができるデータ格納処理方法、そのプログラム及び記憶媒体、並びに処理システムを提供することにある。
【０００５】
【課題を解決するための手段】
請求項１の発明は、データを格納するデータ格納部と、データ構造の要素や要素の値の型別に決められたデータ格納操作の処理方法に関する格納操作情報を格納する操作情報格納部と、データ構造の要素ごとに前記格納操作情報への参照情報を格納する要素情報格納部と、データ処理部とを有する処理システムにおけるデータ格納処理方法であって、前記データ処理部は、データファイルのデータを前記データ格納部へ格納する際に、前記要素情報格納部を参照し、前記データファイルのデータ構造の構成要素が前記要素情報格納部内に存在する場合には、前記要素情報格納部に格納されている当該要素の参照情報をもとに、前記操作情報格納部から対応する格納操作情報を取得し、該格納操作情報を用いて前記データファイルのデータを前記データ格納部へ格納し、前記データファイルのデータ構造に存在する要素が前記要素情報格納部内に存在しない場合には、当該要素を飛ばすか又は参考要素として、前記データファイルのデータを前記データ格納部へ格納し、前記要素情報格納部内に存在する要素が、前記データファイルのデータ構造内に存在しない場合には、当該要素のデータを前記データファイルに記載されている他のデータから生成できるか判断し、生成できる場合、該要素のデータを前記データファイルの他のデータから生成して前記データ格納部へ格納することを特徴とする。
【０００６】
請求項２の発明は、請求項１記載のデータ格納処理方法における前記データ処理部の処理をコンピュータに実行させるためのプログラムであることを特徴とする。
【０００７】
請求項３の発明は、プログラムを記憶したコンピュータが読み取り可能な記憶媒体であって、前記請求項２に記載のプログラムを記憶した記憶媒体であることを特徴とする。
【０００８】
請求項４の発明は、データを格納するデータ格納部と、データ構造の要素や要素の値の型別に決められたデータ格納操作の処理方法に関する格納操作情報を格納する操作情報格納部と、データ構造の要素ごとに前記格納操作情報への参照情報を格納する要素情報格納部と、データ処理部とを有する処理システムであって、前記データ処理部は、データファイルのデータを前記データ格納部へ格納する際に、前記要素情報格納部を参照し、前記データファイルのデータ構造の構成要素が前記要素情報格納部内に存在する場合には、前記要素情報格納部に格納されている当該要素の参照情報をもとに、前記操作情報格納部から対応する格納操作情報を取得し、該格納操作情報を用いて前記データファイルのデータを前記データ格納部へ格納し、前記データファイルのデータ構造内に存在する要素が前記要素情報格納部内に存在しない場合には、当該要素を飛ばすか又は参考要素として、前記データファイルのデータを前記データ格納部へ格納し、前記要素情報格納部内に存在する要素が、前記データファイルのデータ構造内に存在しない場合には、当該要素のデータを前記データファイルに記載されている他のデータから生成できるか判断し、生成できる場合、該要素のデータを前記データファイルの他のデータから生成して前記データ格納部へ格納することを特徴とする。
【０００９】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。
図１は本発明の一実施例を示す処理システム要部の構成図である。図示したように、この実施例の処理システムは、データを格納しておくデータ格納部１、要素ごとに格納操作情報への参照情報などを格納しておく要素情報格納部２、データ構造の要素や要素の値の型別に決められたデータ格納操作の処理方法に関する格納操作情報を格納しておく操作情報格納部３、データを前記データ格納部１から取り出すデータ取り出し処理部４、データを前記データ格納部１に格納するデータ格納処理部５などを備えている。なお、前記データ格納部１、要素情報格納部２、および操作情報格納部３は、例えばハードディスク装置とＲＡＭにより実現され、データ取り出し処理部４およびデータ格納処理部５はプログラムを記憶するＲＡＭとそのプログラムに従って動作するＣＰＵなどにより実現される。また、前記において、データ構造の要素とは、例えばプロパティやページ設定情報や本文など、データ構造の要素であり、プロパティというデータ構造の要素には、ファイル情報、ファイル概要、詳細情報などがあり、さらに、ファイル情報というデータ構造の要素にはファイル名や種類や場所といった要素がある。また、本文のデータ構造については、各章を要素と考えることができるし、各章を構成している文字部分、データ貼り付け部分、イメージ貼り付け部分などを要素と考えることができる。このような構成で、この実施例のデータ格納方法では、例えば他の処理システムからこの処理システムに取り込んだファイルのデータをこの処理システムが持っているデータ格納情報（要素情報格納部２および操作情報格納部３に格納されている情報）などに従ってこの処理システム内のデータ格納部１に格納する。
【００１０】
図２に、前記データファイルの構成を示す。図示したように、このデータファイルは、データ構造情報（データファイルに格納されているデータのデータ構造を記述した情報）とデータから構成されている。また、データ構造情報は、各データ構造名（図示の例ではＡ，Ｂなど）、各データ構造ＡやＢの要素の数、各データ構造ＡやＢの要素名（図示の例ではAa，Ab，---，Ba，Bb---など）、要素の型名（図示の例では、x，y，---，k，l---）などから成る。
【００１１】
図３に、この実施例のデータ格納時の動作フローを示す。以下、図３に従って、データ格納時の動作を説明する。
まず、データ格納処理部５が、データ格納部１にデータを格納しようとするデータファイルを開く（Ｓ１）。例えば、このデータファイルは他の処理システムから取り込んだデータファイルである。続いて、データ格納処理部５はそのデータファイルのデータ構造情報を読み出し（Ｓ２）、データ構造情報の先頭に書かれたデータ構造名を取り出す（Ｓ３）。このデータ構造名を例えばＡとする。次に、取り出したデータ構造名（前記した例ではＡ）に関する格納操作情報への参照情報（ポインタ）を要素情報格納部２から取り出す（Ｓ４）。この情報テーブルをTableＡとする。さらに、ステップＳ２で取り出したデータ構造情報中のデータ構造名の次の位置に書かれている例えばデータ構造Ａの要素の数を取り出し、これをNAとする（Ｓ５）。続いて、データ構造Ａの格納操作参照テーブルFunctionPointerTableＡを要素数NAで確保する（Ｓ６）。そして、i=0とし（Ｓ７）、ステップＳ２で取り出したデータ構造情報中の要素の数の次の位置に書かれているデータ構造Ａのi番目の要素名（例えばAa）とその次の位置に書かれている例えば要素Aaの型名（例えばx）を取り出す（Ｓ９）。こうして、データ格納処理部５は、取り出した要素AaがステップＳ４で取り出したTableＡに記載されているか否かを判定し（Ｓ10）、記載されていれば（Ｓ10でYES）TableＡから要素Aaの格納操作情報への参照情報を取得し、FunctionPointerTableＡ[i]に格納する（Ｓ11）。また、記載されていなければ（Ｓ10でNO）、要素Aaの型名xを要素情報格納部２のダミーデータ要素のテーブル（図１参照）から検索し、要素の型名xのダミー格納操作情報への参照情報を取得し、FunctionPointerTableＡ[i]に格納する（Ｓ12）。つまり、データファイルのデータ構造の構成要素と当該処理システムのデータ構造の構成要素が一致する場合には当該処理システムのデータ構造要素の格納操作情報を用いて後述するデータ格納を行い、当該データファイルの構成要素が当該処理システムにない場合、すなわち、当該データファイルのデータ構造内に存在する要素が要素情報格納部内に存在しない場合には、後述するように、その要素を例えば飛ばすか参考考要素として処理するのである。
【００１２】
iの値を増やしながら（Ｓ13）、ステップＳ９〜Ｓ12の処理を各要素について実行し、要素の数分の実行が終了すると（Ｓ８でNO）、データ格納処理部５はデータファイルのデータ構造中のすべてのデータ構造（すべてのデータ構造名）についてステップＳ３〜Ｓ12の処理が終わったか否かを判定し（Ｓ14）、終わっていなければ（Ｓ14でNO）、次のデータ構造名のデータ構造についてステップＳ３から繰り返す。こうして、すべてのデータ構造について前記した処理が終了すると（Ｓ14でYES）、データ格納処理部５は前記データファイル（データを格納しようとしているデータファイル）からデータを読み込む（Ｓ15）。そして、そのデータファイルの各データ構造名のデータについて先頭から順に、まず一つのデータの先頭に書かれたデータ構造名を取り出し、そのデータを格納する領域をデータ格納部１内に確保し、確保した領域を初期化する（Ｓ17）。
【００１３】
続いて、i＝0とし（Ｓ18）、そのデータ構造名のデータについて、参照情報を格納しておいた前記格納操作参照テーブルFunctionPointerTableＫ（ＫはＡ，Ｂ，Ｃ，---）から最初の要素名の要素の格納操作情報への参照情報を取得し、その参照情報で示された格納操作情報を取得し、その格納操作情報に従ってその要素名のデータをデータ格納部１に格納する（Ｓ20）。例えば格納操作情報が“read  structA  a(引数)”というような関数であれば、データ構造structAの要素aを引数で与えられたファイルの先頭から読み込み、データ格納部１内の確保しておいたデータ構造structAの要素a用の格納場所に格納するのである。また、格納操作情報がダミー格納操作情報で、“dummy  read  int(引数)”というような関数であれば、引数で与えられたファイルの先頭からint（整数）型分のデータを取り出す操作を行う。なお、取り出したデータについては、格納をスキップして捨ててしまうような構成にしてもよいし、参考要素として（当該データ構造名のデータ構造とは全く別のものとして）格納するようにしてもよい。
【００１４】
続いて、iの値を増やして（Ｓ21）次の要素のデータについても同様にしてデータ格納を実行し（Ｓ20）、そのデータ構造のすべての要素についてデータ格納が終了すると（Ｓ19でNO）ステップＳ16へ戻り、次のデータ構造についてもステップＳ16以下を繰り返す。そして、当該データファイルのすべてのデータについて格納処理が終了すると（Ｓ16でYES）、この動作フローの処理を終了させる。また、前記において、当該処理システムのデータ構造内に存在して、データをデータ格納部へ格納しようとしているデータファイルのデータ構造内に存在しない要素については、すなわち、要素情報格納部内に存在する要素が、当該データファイル構造内に存在しない場合には、データ格納時にその要素をデータファイルに記載されているデータからできるだけ生成しながら格納する。例えば、円弧を表すデータ構造があるとして、その円弧の要素が、データファイルでは、円弧の開始点、円弧の終了点、円弧の中心であり、処理システムでは、円弧の開始点、円弧の終了点、円弧の中心、円弧が乗る円の半径である場合、データファイルの要素として、円弧が乗る円の半径を例えばデータファイル中の円弧の開始点と円弧の中心から生成して格納するのである。
【００１５】
なお、当該処理システムのデータ構造内に存在して、データをデータ格納部へ格納しようとしているデータファイルのデータ構造内に存在しない要素については、データ格納時にその要素を初期化して格納することも可能である。データ格納部１のその要素の格納場所に、例えば0やNULLを格納するのである。
【００１６】
こうして、この実施例によれば、当該データファイルと当該処理システムとが異なるデータ構造を持っていてもそのデータファイルからデータを読み込んでデータ格納部に格納することができるし、参照要素として格納されたデータを含め、格納されたデータを取り出すことができる。なお、格納されたデータを取り出してファイルに書き込む場合には、はじめにデータ構造の情報、次にデータそのものを取り出してファイルに書き込む。
【００１７】
以上、図１に示したような構成の処理システムについて本発明の一実施例を説明したが、説明したようなデータ格納方法に従ってプログラミングしたプログラムを例えば着脱可能な記憶媒体に記憶し、その記憶媒体をこれまで本発明によったデータ格納を行えなかったパーソナルコンピュータなど情報処理装置に装着することにより、また、前記情報処理装置が前記プログラムをネットワークを介して取り込むことにより、その情報処理装置においても本発明によったデータ格納を行うことができる。
【００１８】
【発明の効果】
以上説明したように、本発明によれば、次のような効果が得られる。
（１）データファイルのデータをデータ格納部へ格納する際、データ構造の要素別または要素の値の型別に対応づけられたデータ格納操作情報を用いて格納されるので、当該処理システムのデータ構造の変更に関係なく以前のデータファイルなどを読み込むことができ、したがって、データファイルを当該処理システムのバージョンを気にすることなく用いることができる。
（２）当該処理システムのデータ構造内に存在せず、データをデータ格納部へ格納しようとしているデータファイルのデータ構造内に存在する要素については、データ格納時にその要素を飛ばしてデータを格納することにより、当該処理システムのデータの構成要素が削除されていた場合に余計なデータの格納が行われず、読み込み・格納後のデータが予測しやすく、期待した格納結果を得ることができる。あるいは、データ格納時にその要素を参考要素として格納することにより、後で、その要素を参照したり、別の要素に付加したりすることができる。
（３）当該処理システムのデータ構造内に存在して、データをデータ格納部へ格納しようとしているデータファイルのデータ構造内に存在しない要素については、その要素のデータがデータファイルに記載されている他のデータから生成できる場合、データ格納時、その要素のデータが他のデータから生成され、格納されるので、当該処理システムのデータの構成要素が追加されていた場合にデータファイルから読み込んで格納した後、データの整合性がその分だけ取れるようになり、一層安定した動作を期待することができる。
【図面の簡単な説明】
【図１】本発明の一実施例を示す処理システム要部の構成図である。
【図２】本発明の一実施例を示す処理システム要部のデータ構成図である。
【図３】本発明の一実施例を示すデータ格納方法の動作フロー図である。
【符号の説明】
１  データ格納部
２  要素情報格納部
３  操作情報格納部
４  データ取り出し処理部
５  データ格納処理部
【図１】
0004392780.tif 000002
【図２】
0004392780.tif 000003
【図３】
0004392780.tif 000004