JPH06309204A - データ処理方法及びその装置 - Google Patents
データ処理方法及びその装置Info
- Publication number
- JPH06309204A JPH06309204A JP5092787A JP9278793A JPH06309204A JP H06309204 A JPH06309204 A JP H06309204A JP 5092787 A JP5092787 A JP 5092787A JP 9278793 A JP9278793 A JP 9278793A JP H06309204 A JPH06309204 A JP H06309204A
- Authority
- JP
- Japan
- Prior art keywords
- file
- result
- data
- class
- procedure
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 ファイルの依存関係と変更日時とに基づいた
ファイルの処理において、処理結果と現在のファイル内
容とに差異がないものについては更新を行わないことで
処理効率を高める。 【構成】 クラス定義ファイルからクラス定義を読み込
み(ST201)、構造定義部と手続き定義部をメモリ
上に生成する(ST203)。構造定義部を格納するフ
ァイルが既に存在するか否かを調べる(ST204)。
存在する場合、メモリ上の構造定義部とファイルに格納
された以前の構造定義部とを比較し、有意な差異がある
か否かを判断する(ST205)。ファイルが存在しな
い場合または差異がある場合に、メモリ上の構造定義部
をファイルに書き込む(ST206)。手続き定義部に
ついても同様に処理する。
ファイルの処理において、処理結果と現在のファイル内
容とに差異がないものについては更新を行わないことで
処理効率を高める。 【構成】 クラス定義ファイルからクラス定義を読み込
み(ST201)、構造定義部と手続き定義部をメモリ
上に生成する(ST203)。構造定義部を格納するフ
ァイルが既に存在するか否かを調べる(ST204)。
存在する場合、メモリ上の構造定義部とファイルに格納
された以前の構造定義部とを比較し、有意な差異がある
か否かを判断する(ST205)。ファイルが存在しな
い場合または差異がある場合に、メモリ上の構造定義部
をファイルに書き込む(ST206)。手続き定義部に
ついても同様に処理する。
Description
【0001】
【産業上の利用分野】本発明は、コンピュータ上のデー
タ処理の方法と装置、特にプログラムの翻訳方法とその
装置、さらにはオブジェクト指向言語プログラムのプリ
プロセス方法とその装置に関する。
タ処理の方法と装置、特にプログラムの翻訳方法とその
装置、さらにはオブジェクト指向言語プログラムのプリ
プロセス方法とその装置に関する。
【0002】
【従来の技術】一般にコンピュータ上でのデータ処理
は、ファイルからデータを読み込み結果のデータを別の
ファイルに書き出すという形で実行される。特に、コン
ピュータ上でよく行なわれるプログラムのプリプロセス
やコンパイルというプログラムの翻訳は、いくつかの源
泉ファイルから源泉データであるソースプログラムを読
み込み、結果データであるオブジェクトプログラムをい
くつかの結果ファイルに書き込むというデータ処理であ
る。このようなデータ処理方法について具体的な例を図
面を用いて説明する。
は、ファイルからデータを読み込み結果のデータを別の
ファイルに書き出すという形で実行される。特に、コン
ピュータ上でよく行なわれるプログラムのプリプロセス
やコンパイルというプログラムの翻訳は、いくつかの源
泉ファイルから源泉データであるソースプログラムを読
み込み、結果データであるオブジェクトプログラムをい
くつかの結果ファイルに書き込むというデータ処理であ
る。このようなデータ処理方法について具体的な例を図
面を用いて説明する。
【0003】図7は、オブジェクト指向言語のC言語を
ベースとした従来のプリプロセス方式の処理系における
プリプロセスシステムの動作を示すフローチャートであ
る。
ベースとした従来のプリプロセス方式の処理系における
プリプロセスシステムの動作を示すフローチャートであ
る。
【0004】なお、オブジェクト指向言語に関しては、
書籍「オブジェクト指向入門」(オーム社、酒井博敬・
堀内一共著)で詳しく解説されている。
書籍「オブジェクト指向入門」(オーム社、酒井博敬・
堀内一共著)で詳しく解説されている。
【0005】このプリプロセスシステムは、オブジェク
ト指向言語で記述されたクラス定義をC言語のソースプ
ログラムに変換する。さらにこの処理系ではそのC言語
のソースプログラムをC言語のコンパイラで処理してオ
ブジェクト(機械語プログラム)を得る。
ト指向言語で記述されたクラス定義をC言語のソースプ
ログラムに変換する。さらにこの処理系ではそのC言語
のソースプログラムをC言語のコンパイラで処理してオ
ブジェクト(機械語プログラム)を得る。
【0006】まず、このプリプロセスシステムがクラス
名を指定されて起動されると、名前が「クラス名.k」
のファイルからクラス定義を読み込む(ST701)。
名を指定されて起動されると、名前が「クラス名.k」
のファイルからクラス定義を読み込む(ST701)。
【0007】次に、そのクラス定義にスーパークラスが
指定されていれば名前が「スーパークラス名.h」のフ
ァイルからスーパークラスの構造定義部を読み込む(S
T702)。このファイルは、そのスーパークラスのプ
リプロセスによって前もって生成されている必要があ
る。
指定されていれば名前が「スーパークラス名.h」のフ
ァイルからスーパークラスの構造定義部を読み込む(S
T702)。このファイルは、そのスーパークラスのプ
リプロセスによって前もって生成されている必要があ
る。
【0008】そしてこのクラスに関して、C言語で記述
された構造定義部を名前が「クラス名.h」のファイル
に書き込む(ST703)。同様にこのクラスに関し
て、C言語で記述された手続き定義部を名前が「クラス
名.c」のファイルに書き込む(ST704)。
された構造定義部を名前が「クラス名.h」のファイル
に書き込む(ST703)。同様にこのクラスに関し
て、C言語で記述された手続き定義部を名前が「クラス
名.c」のファイルに書き込む(ST704)。
【0009】
【発明が解決しようとする課題】しかしながら上記の従
来の方法では、以前にファイルに格納された結果と今回
ファイルに格納する結果とに差異がない場合でも必ずフ
ァイルに格納し直しており、そのためファイルの更新が
必ず行なわれ、その結果そのファイルの変更日時が最新
日時に変更されてしまう。
来の方法では、以前にファイルに格納された結果と今回
ファイルに格納する結果とに差異がない場合でも必ずフ
ァイルに格納し直しており、そのためファイルの更新が
必ず行なわれ、その結果そのファイルの変更日時が最新
日時に変更されてしまう。
【0010】この場合、ファイルの依存関係とファイル
の変更日時とによって複数のファイルの一連の処理を制
御するソフトウェア(例えばOSのUNIXにおけるm
akeコマンド)を利用してデータ処理の全体の流れを
制御している時に問題が生じる。それは、今回の結果と
以前の結果との間に差異がない場合でも、いま更新した
ファイルに依存するファイルがさらに処理され、そのフ
ァイルに依存するファイルがまた処理されるというよう
に、次々と後続する処理が実行されてしまうという問題
である。なおUNIXやmakeコマンドに関しては、
書籍「UNIXプログラミング環境」(アスキー出版
局、B.W.Kernighan他著、石田晴久監訳)
で詳しく解説されている。
の変更日時とによって複数のファイルの一連の処理を制
御するソフトウェア(例えばOSのUNIXにおけるm
akeコマンド)を利用してデータ処理の全体の流れを
制御している時に問題が生じる。それは、今回の結果と
以前の結果との間に差異がない場合でも、いま更新した
ファイルに依存するファイルがさらに処理され、そのフ
ァイルに依存するファイルがまた処理されるというよう
に、次々と後続する処理が実行されてしまうという問題
である。なおUNIXやmakeコマンドに関しては、
書籍「UNIXプログラミング環境」(アスキー出版
局、B.W.Kernighan他著、石田晴久監訳)
で詳しく解説されている。
【0011】この問題点を前記のプリプロセス方式の処
理系におけるプリプロセスシステムの例でさらに詳しく
説明する。
理系におけるプリプロセスシステムの例でさらに詳しく
説明する。
【0012】一般にオブジェクト指向言語によるプログ
ラミングでは、開発するソフトウェアは多数のクラスに
分割されプログラミングされる。クラス定義(ソースプ
ログラム)は別々のファイルに格納され、おのおのがプ
リプロセスシステムやコンパイラにより翻訳されてオブ
ジェクト(機械語プログラム)になり、リンカによって
最終的に1つに編集され実行形式のプログラムが生成さ
れる。この一連の処理に関して多くのファイルが関係す
る。このとき、前記のmakeコマンドを利用してプリ
プロセスシステムやコンパイラなどのソフトウェアを順
次起動するのが一般的である。
ラミングでは、開発するソフトウェアは多数のクラスに
分割されプログラミングされる。クラス定義(ソースプ
ログラム)は別々のファイルに格納され、おのおのがプ
リプロセスシステムやコンパイラにより翻訳されてオブ
ジェクト(機械語プログラム)になり、リンカによって
最終的に1つに編集され実行形式のプログラムが生成さ
れる。この一連の処理に関して多くのファイルが関係す
る。このとき、前記のmakeコマンドを利用してプリ
プロセスシステムやコンパイラなどのソフトウェアを順
次起動するのが一般的である。
【0013】今、具体的なクラス構成のソフトウェアの
開発について、前記の従来方式のプリプロセスシステム
を適用したときの全体の処理について図を参照して説明
する。
開発について、前記の従来方式のプリプロセスシステム
を適用したときの全体の処理について図を参照して説明
する。
【0014】図4は開発するソフトウェアを構成するク
ラスの階層図である。オブジェクト指向言語の継承の機
能を利用して、クラスB402とクラスC403とはク
ラスA401のサブクラスとして定義されている。矢印
404は、クラスC403がクラスB402を参照して
いることを示している。一般にオブジェクト指向言語プ
ログラムではクラスどうしが参照しあうことにより全体
の処理が記述される。
ラスの階層図である。オブジェクト指向言語の継承の機
能を利用して、クラスB402とクラスC403とはク
ラスA401のサブクラスとして定義されている。矢印
404は、クラスC403がクラスB402を参照して
いることを示している。一般にオブジェクト指向言語プ
ログラムではクラスどうしが参照しあうことにより全体
の処理が記述される。
【0015】図5はこれらのクラス定義から最終の目標
である実行形式のプログラムを得るまでに関係するファ
イルの生成関係を示す図である。図の矢印の根本のファ
イル(複数のときもある)に格納された源泉データを元
に、矢印の矢先のファイルに格納される結果データが生
成される。逆に言えばこれは、矢印の矢先のファイルが
その矢印の根本のファイルに依存することを示してお
り、ファイルの依存関係を示す図でもある。
である実行形式のプログラムを得るまでに関係するファ
イルの生成関係を示す図である。図の矢印の根本のファ
イル(複数のときもある)に格納された源泉データを元
に、矢印の矢先のファイルに格納される結果データが生
成される。逆に言えばこれは、矢印の矢先のファイルが
その矢印の根本のファイルに依存することを示してお
り、ファイルの依存関係を示す図でもある。
【0016】図6におけるテキスト601は、図5に示
したファイルの依存関係を示したテキストデータであ
る。これはmakeコマンドによって参照される。各行
において、コロン(:)の前に記述されているファイル
がコロンの後に記述されているファイルに依存すること
を示している。
したファイルの依存関係を示したテキストデータであ
る。これはmakeコマンドによって参照される。各行
において、コロン(:)の前に記述されているファイル
がコロンの後に記述されているファイルに依存すること
を示している。
【0017】この図5および図6についてファイルの生
成関係をさらに詳しく説明する。まずプリプロセスシス
テムによりクラスAのクラス定義のファイルA.k50
1から構造定義部のファイルA.h504と手続き定義
部のファイルA.c505とが生成される。クラスBと
クラスCに関しても同様である。ただし、クラス定義フ
ァイルと共にスーパークラスであるクラスAの構造定義
ファイルA.h504も読み込まれる。従ってクラスA
のプリプロセスはクラスBおよびクラスCのプリプロセ
スより前に実行されなければならない。
成関係をさらに詳しく説明する。まずプリプロセスシス
テムによりクラスAのクラス定義のファイルA.k50
1から構造定義部のファイルA.h504と手続き定義
部のファイルA.c505とが生成される。クラスBと
クラスCに関しても同様である。ただし、クラス定義フ
ァイルと共にスーパークラスであるクラスAの構造定義
ファイルA.h504も読み込まれる。従ってクラスA
のプリプロセスはクラスBおよびクラスCのプリプロセ
スより前に実行されなければならない。
【0018】次にクラスAの手続き定義部のファイル
A.c505は言語Cのコンパイラによってコンパイル
されオブジェクトファイルA.o510が生成される。
このときクラスAの構造定義ファイルA.h504がイ
ンクルードファイルとして読み込まれる。同様にクラス
Bの手続き定義部のファイルB.c507がコンパイル
されオブジェクトファイルB.o511が生成される。
このときクラスBの構造定義ファイルB.h506がイ
ンクルードファイルとして読み込まれる。さらに同様に
クラスCの手続き定義部のファイルC.c509がコン
パイルされオブジェクトファイルC.o512が生成さ
れる。このときクラスCの構造定義ファイル508C.
hと参照しているクラスBの構造定義ファイルB.h5
06とがインクルードファイルとして読み込まれる。最
後にこれらのオブジェクトファイルA.o510とB.
o511とC.oと512とがリンカによって結合さ
れ、目的の実行形式ファイルProgram513が生
成される。
A.c505は言語Cのコンパイラによってコンパイル
されオブジェクトファイルA.o510が生成される。
このときクラスAの構造定義ファイルA.h504がイ
ンクルードファイルとして読み込まれる。同様にクラス
Bの手続き定義部のファイルB.c507がコンパイル
されオブジェクトファイルB.o511が生成される。
このときクラスBの構造定義ファイルB.h506がイ
ンクルードファイルとして読み込まれる。さらに同様に
クラスCの手続き定義部のファイルC.c509がコン
パイルされオブジェクトファイルC.o512が生成さ
れる。このときクラスCの構造定義ファイル508C.
hと参照しているクラスBの構造定義ファイルB.h5
06とがインクルードファイルとして読み込まれる。最
後にこれらのオブジェクトファイルA.o510とB.
o511とC.oと512とがリンカによって結合さ
れ、目的の実行形式ファイルProgram513が生
成される。
【0019】この状況の下で、クラスA、クラスB、ク
ラスCの各クラス定義が記述され、makeコマンドが
実行されれば、図6のテキスト601の依存関係に従っ
て、プリプロセスシステム、コンパイラ、リンカが順次
起動されて一旦すべてのファイルの生成が行なわれる。
ラスCの各クラス定義が記述され、makeコマンドが
実行されれば、図6のテキスト601の依存関係に従っ
て、プリプロセスシステム、コンパイラ、リンカが順次
起動されて一旦すべてのファイルの生成が行なわれる。
【0020】以下で、その後クラスAのクラス定義の中
で手続きのみを変更した場合、再度makeコマンドを
実行してファイルを生成し直すときに実行される処理と
更新されるファイルとを説明する。最初のmakeコマ
ンドの実行によるファイルの生成を問題にしないのは、
最初にはすべてのファイルが生成されるのは当然である
からである。
で手続きのみを変更した場合、再度makeコマンドを
実行してファイルを生成し直すときに実行される処理と
更新されるファイルとを説明する。最初のmakeコマ
ンドの実行によるファイルの生成を問題にしないのは、
最初にはすべてのファイルが生成されるのは当然である
からである。
【0021】まず、クラスAのクラス定義ファイルA.
k501が更新されたので、このファイルに依存する
A.h504とA.c505とを更新するためにプリプ
ロセスシステムが起動されクラスAのクラス定義ファイ
ルA.k501が処理される。その結果ファイルA.h
504とA.c505とが更新される。クラス定義にお
けるクラスの構造は変更されておらず、その結果構造定
義には変化がなかったにもかかわらず、図7のフローチ
ャートのステップST703とステップST704とに
基づき、プリプロセスシステムは必ずファイルA.h5
04とファイルA.c505との両方を更新する。
k501が更新されたので、このファイルに依存する
A.h504とA.c505とを更新するためにプリプ
ロセスシステムが起動されクラスAのクラス定義ファイ
ルA.k501が処理される。その結果ファイルA.h
504とA.c505とが更新される。クラス定義にお
けるクラスの構造は変更されておらず、その結果構造定
義には変化がなかったにもかかわらず、図7のフローチ
ャートのステップST703とステップST704とに
基づき、プリプロセスシステムは必ずファイルA.h5
04とファイルA.c505との両方を更新する。
【0022】次に、この処理によりA.h504が更新
されたため、それに依存するB.h506とC.h50
8とを更新するためにプリプロセスシステムが2回順次
起動され、クラス定義ファイルB.k502とC.k5
03とが処理される。これによってファイルB.h50
6とB.c507とC.h508とC.c509とが更
新される。
されたため、それに依存するB.h506とC.h50
8とを更新するためにプリプロセスシステムが2回順次
起動され、クラス定義ファイルB.k502とC.k5
03とが処理される。これによってファイルB.h50
6とB.c507とC.h508とC.c509とが更
新される。
【0023】そして依存関係に従って、C言語コンパイ
ラが3回順次起動され、ファイルA.o510、B.o
511、C.o512がすべて更新される。そしてリン
カが起動されファイルProgram513が更新され
る。結局、プリプロセス、コンパイル、リンクを合わせ
て7回の処理を行ない、ファイルProgram513
が更新されることになる。
ラが3回順次起動され、ファイルA.o510、B.o
511、C.o512がすべて更新される。そしてリン
カが起動されファイルProgram513が更新され
る。結局、プリプロセス、コンパイル、リンクを合わせ
て7回の処理を行ない、ファイルProgram513
が更新されることになる。
【0024】この方法では、クラスAの構造定義部には
変化がなかったにも関わらずファイルA.h504が更
新されてしまい、その結果このファイルに依存するファ
イルの処理が行なわれ、全体の処理が増えてしまってい
る。
変化がなかったにも関わらずファイルA.h504が更
新されてしまい、その結果このファイルに依存するファ
イルの処理が行なわれ、全体の処理が増えてしまってい
る。
【0025】本発明は上記の従来の方法の問題点を解決
するもので、ファイルの依存関係とファイルの変更日時
とによって複数のファイルの一連の処理を制御するソフ
トウェアを利用しているときに、後続する不必要な処理
が実行されないようにするデータ処理方法を提供するも
のである。
するもので、ファイルの依存関係とファイルの変更日時
とによって複数のファイルの一連の処理を制御するソフ
トウェアを利用しているときに、後続する不必要な処理
が実行されないようにするデータ処理方法を提供するも
のである。
【0026】
【課題を解決するための手段】この目的を達成するた
め、本発明は、データ処理手順と結果処理手順とを備
え、ファイル相互に優先関係があり、前記優先関係で下
位のファイルは少なくとも1つの前記優先関係で上位の
ファイルに依存し、前記上位のファイルが更新された場
合には、前記上位のファイルに依存する前記下位のファ
イルの内容を更新し、前記データ処理手順で、少なくと
も1つの源泉ファイルの源泉データから少なくとも1つ
の新たな結果データを生成する処理方法であって、前記
新たな結果データを格納する結果ファイルが既に存在す
るか否かを判断し、前記結果ファイルが存在しない場合
には、前記結果処理手順で新たな結果ファイルを生成さ
せ、前記新たな結果データを前記新たな結果ファイルに
格納させる判断手順と、前記結果ファイルが存在する場
合に、前記結果ファイル内の古い結果データと前記デー
タ処理手順で生成した新たな結果データとに有為な差異
があるか否かを判断し、有為な差異が認められる場合に
は、前記結果処理手順で、前記データ処理手順で生成し
た新たな結果データを前記結果ファイルに格納するデー
タ比較手順とを備えたことを特徴とする。
め、本発明は、データ処理手順と結果処理手順とを備
え、ファイル相互に優先関係があり、前記優先関係で下
位のファイルは少なくとも1つの前記優先関係で上位の
ファイルに依存し、前記上位のファイルが更新された場
合には、前記上位のファイルに依存する前記下位のファ
イルの内容を更新し、前記データ処理手順で、少なくと
も1つの源泉ファイルの源泉データから少なくとも1つ
の新たな結果データを生成する処理方法であって、前記
新たな結果データを格納する結果ファイルが既に存在す
るか否かを判断し、前記結果ファイルが存在しない場合
には、前記結果処理手順で新たな結果ファイルを生成さ
せ、前記新たな結果データを前記新たな結果ファイルに
格納させる判断手順と、前記結果ファイルが存在する場
合に、前記結果ファイル内の古い結果データと前記デー
タ処理手順で生成した新たな結果データとに有為な差異
があるか否かを判断し、有為な差異が認められる場合に
は、前記結果処理手順で、前記データ処理手順で生成し
た新たな結果データを前記結果ファイルに格納するデー
タ比較手順とを備えたことを特徴とする。
【0027】
【作用】本発明のデータ処理方法によれば、ファイルの
処理の結果と以前の結果とを比較してその内容に変化が
なければ結果ファイルの更新を行わないため、更新され
なかったファイルに依存するファイルについては更新処
理が行われない。
処理の結果と以前の結果とを比較してその内容に変化が
なければ結果ファイルの更新を行わないため、更新され
なかったファイルに依存するファイルについては更新処
理が行われない。
【0028】
【実施例】以下、本発明の実施例について図面を参照し
ながら詳細に説明する。
ながら詳細に説明する。
【0029】図1は、本発明の実施例におけるデータ処
理システムである、C言語をベースとしたプリプロセス
方式オブジェクト指向言語のプリプロセスシステムの構
成図である。
理システムである、C言語をベースとしたプリプロセス
方式オブジェクト指向言語のプリプロセスシステムの構
成図である。
【0030】図1において、101はI/Oコントロー
ラであり、源泉データであるクラス定義を格納した源泉
ファイルであるクラス定義ファイル103と、結果デー
タの1つである構造定義部を格納する結果ファイルであ
る構造定義ファイル104と、もう1つの結果データで
ある手続き定義部を格納する結果ファイルである手続き
定義ファイル105とを記憶するファイリング手段であ
るディスク装置102を制御する。106は結果データ
の1つである構造定義部107ともう1つの結果データ
である手続き定義部108とを格納する記憶手段である
メモリである。I/Oコントローラ101とメモリ10
6とはバス110を介して演算手段であるCPU109
が制御する。
ラであり、源泉データであるクラス定義を格納した源泉
ファイルであるクラス定義ファイル103と、結果デー
タの1つである構造定義部を格納する結果ファイルであ
る構造定義ファイル104と、もう1つの結果データで
ある手続き定義部を格納する結果ファイルである手続き
定義ファイル105とを記憶するファイリング手段であ
るディスク装置102を制御する。106は結果データ
の1つである構造定義部107ともう1つの結果データ
である手続き定義部108とを格納する記憶手段である
メモリである。I/Oコントローラ101とメモリ10
6とはバス110を介して演算手段であるCPU109
が制御する。
【0031】次にこの実施例の全体の動作を図2に示す
フローチャートを参照して説明する。
フローチャートを参照して説明する。
【0032】まず、このプリプロセスシステムがクラス
名を指定されて起動されると、ファイル名が「クラス
名.k」であるクラス定義ファイル103からクラス定
義を読み込む(ST201)。
名を指定されて起動されると、ファイル名が「クラス
名.k」であるクラス定義ファイル103からクラス定
義を読み込む(ST201)。
【0033】次に、そのクラス定義にスーパークラスが
指定されていれば名前が「スーパークラス名.h」のフ
ァイルからスーパークラスの構造定義部を読み込む(S
T202)。このファイルは、そのスーパークラスのク
ラス定義をこのプリプロセスシステムで処理することに
より前もって生成されている必要がある。
指定されていれば名前が「スーパークラス名.h」のフ
ァイルからスーパークラスの構造定義部を読み込む(S
T202)。このファイルは、そのスーパークラスのク
ラス定義をこのプリプロセスシステムで処理することに
より前もって生成されている必要がある。
【0034】そしてこのクラス定義からC言語で記述さ
れた構造定義部107と同じくC言語で記述された手続
き定義部108とをメモリ106上に生成する(ST2
03)。
れた構造定義部107と同じくC言語で記述された手続
き定義部108とをメモリ106上に生成する(ST2
03)。
【0035】次にこの構造定義部107を格納するファ
イル、すなわちファイル名が「クラス名.h」の構造定
義ファイル104が既に存在するかどうかを調べる(S
T204)。
イル、すなわちファイル名が「クラス名.h」の構造定
義ファイル104が既に存在するかどうかを調べる(S
T204)。
【0036】存在する場合、このメモリ上の構造定義部
107と既に構造定義ファイル104に格納された以前
の構造定義部とを比較し、有意な差異があるかどうかを
判断する(ST205)。
107と既に構造定義ファイル104に格納された以前
の構造定義部とを比較し、有意な差異があるかどうかを
判断する(ST205)。
【0037】ステップST204で構造定義ファイル1
04が存在しなかった場合およびステップST205で
差異があった場合には、メモリ上の構造定義部107を
構造定義ファイル104に書き込む(ST206)。
04が存在しなかった場合およびステップST205で
差異があった場合には、メモリ上の構造定義部107を
構造定義ファイル104に書き込む(ST206)。
【0038】次に構造定義部と同様に手続き定義部につ
いても行なう。手続き定義部108を格納するファイ
ル、すなわちファイル名が「クラス名.c」の手続き定
義ファイル105が既に存在するかどうかを調べる(S
T207)。
いても行なう。手続き定義部108を格納するファイ
ル、すなわちファイル名が「クラス名.c」の手続き定
義ファイル105が既に存在するかどうかを調べる(S
T207)。
【0039】存在する場合、このメモリ上の手続き定義
部108と既に手続き定義ファイル105に格納された
以前の手続き定義部とを比較し、有意な差異があるかど
うかを判断する(ST208)。
部108と既に手続き定義ファイル105に格納された
以前の手続き定義部とを比較し、有意な差異があるかど
うかを判断する(ST208)。
【0040】ステップST207で手続き定義ファイル
105が存在しなかった場合およびステップST209
で差異があった場合には、メモリ上の手続き定義部10
8を手続き定義ファイル105に書き込む(ST20
9)。
105が存在しなかった場合およびステップST209
で差異があった場合には、メモリ上の手続き定義部10
8を手続き定義ファイル105に書き込む(ST20
9)。
【0041】以上ではこの実施例の全体の動作を説明し
たが、さらに詳細に、図2のフローチャートのステップ
204およびステップ207における今回の結果と以前
の結果との比較処理の一例を、図3に示すフローチャー
トを参照して説明する。
たが、さらに詳細に、図2のフローチャートのステップ
204およびステップ207における今回の結果と以前
の結果との比較処理の一例を、図3に示すフローチャー
トを参照して説明する。
【0042】この実施例のプリプロセスシステムが生成
するのはC言語のソースプログラムであるので、差異の
比較はテキスト(文字列)の比較で行なうことが出来
る。
するのはC言語のソースプログラムであるので、差異の
比較はテキスト(文字列)の比較で行なうことが出来
る。
【0043】まず、メモリ上の今回の結果およびファイ
ルに書き込まれている以前の結果からコメントを取り除
く(ステップ301)。次にコメントを取り除かれたそ
れらのテキストを文字列として、先頭から1字ずつ単純
に比較する(ステップ302)。このときどこかの文字
が異なっていた場合には差異が有ったことになり、すべ
ての文字が等しければ差異が無かったことになる。
ルに書き込まれている以前の結果からコメントを取り除
く(ステップ301)。次にコメントを取り除かれたそ
れらのテキストを文字列として、先頭から1字ずつ単純
に比較する(ステップ302)。このときどこかの文字
が異なっていた場合には差異が有ったことになり、すべ
ての文字が等しければ差異が無かったことになる。
【0044】次に、ファイルの依存関係とファイルの変
更日時とによって複数のファイルの一連の処理を制御す
るソフトウェア(例えばOSであるUNIXのmake
コマンド)を利用して、本実施例のプリプロセスシステ
ムを、具体的なクラス構成のソフトウェアの開発に適用
したときの全体の処理の省力化について、従来の技術の
ところで説明したのと同じクラス例および同じ図面を用
いて説明する。
更日時とによって複数のファイルの一連の処理を制御す
るソフトウェア(例えばOSであるUNIXのmake
コマンド)を利用して、本実施例のプリプロセスシステ
ムを、具体的なクラス構成のソフトウェアの開発に適用
したときの全体の処理の省力化について、従来の技術の
ところで説明したのと同じクラス例および同じ図面を用
いて説明する。
【0045】参考のために参照する図をもう一度簡単に
説明する。図4は開発するソフトウェアを構成するクラ
スの階層図である。図5はこれらのクラス定義から最終
の目標である実行形式のプログラムを得るまでに関係す
るファイルの生成関係を示す図である。図6におけるテ
キスト601は、図5に示したファイルの依存関係を示
したテキストデータである。これはmakeコマンドに
よって参照される。
説明する。図4は開発するソフトウェアを構成するクラ
スの階層図である。図5はこれらのクラス定義から最終
の目標である実行形式のプログラムを得るまでに関係す
るファイルの生成関係を示す図である。図6におけるテ
キスト601は、図5に示したファイルの依存関係を示
したテキストデータである。これはmakeコマンドに
よって参照される。
【0046】この状況の下で、クラスA、クラスB、ク
ラスCの各クラス定義が記述され、makeコマンドが
実行されれば、図6のテキスト601の依存関係に従っ
て、本プリプロセスシステム、コンパイラ、リンカが順
次起動されて、一度図5に示されるすべてのファイルの
生成が行なわれる。
ラスCの各クラス定義が記述され、makeコマンドが
実行されれば、図6のテキスト601の依存関係に従っ
て、本プリプロセスシステム、コンパイラ、リンカが順
次起動されて、一度図5に示されるすべてのファイルの
生成が行なわれる。
【0047】以下で、その後クラスAのクラス定義の中
の手続きを変更した場合に、再度makeコマンドを実
行してファイルを生成し直すときに実行される処理を説
明する。最初のmakeコマンドの実行によるファイル
の生成を問題にしないのは、最初にはすべてのファイル
が生成されるのは従来の技術と全く同じであるからであ
る。
の手続きを変更した場合に、再度makeコマンドを実
行してファイルを生成し直すときに実行される処理を説
明する。最初のmakeコマンドの実行によるファイル
の生成を問題にしないのは、最初にはすべてのファイル
が生成されるのは従来の技術と全く同じであるからであ
る。
【0048】まず、クラスAのクラス定義ファイルA.
k501が更新されたので、このファイルに依存する
A.h504とA.c505とを更新するためにクラス
Aを指定して本プリプロスシステムが起動される。
k501が更新されたので、このファイルに依存する
A.h504とA.c505とを更新するためにクラス
Aを指定して本プリプロスシステムが起動される。
【0049】本プリプロスシステムはファイル名が
「A.k」であるクラス定義ファイル501(図1では
103に対応する)からクラス定義を読み込む(ST2
01)。このクラスAにはスーパークラスがないので、
ステップST202では何も読まない。そしてこのクラ
ス定義から構造定義部107と手続き定義部108とを
メモリ106上に生成する(ST203)。
「A.k」であるクラス定義ファイル501(図1では
103に対応する)からクラス定義を読み込む(ST2
01)。このクラスAにはスーパークラスがないので、
ステップST202では何も読まない。そしてこのクラ
ス定義から構造定義部107と手続き定義部108とを
メモリ106上に生成する(ST203)。
【0050】次にこの構造定義部107を格納するファ
イル、すなわちファイル名が「A.h」の構造定義ファ
イル504(図1では104に対応する)が既に存在す
るかどうかを調べる(ST204)。この場合存在する
ので、このメモリ上の構造定義部107と既にその構造
定義ファイル504(図1では104に対応する)に格
納された以前の構造定義部とを比較し、有意な差異があ
るかどうかを判断する(ST205)。今説明している
状況ではクラス定義の構造は変更されていないので、こ
のステップST205では差異がないと判断される。従
ってメモリ上の構造定義部107を構造定義ファイル5
04(図1では104に対応する)に書き込むステップ
ST206は実行されない。
イル、すなわちファイル名が「A.h」の構造定義ファ
イル504(図1では104に対応する)が既に存在す
るかどうかを調べる(ST204)。この場合存在する
ので、このメモリ上の構造定義部107と既にその構造
定義ファイル504(図1では104に対応する)に格
納された以前の構造定義部とを比較し、有意な差異があ
るかどうかを判断する(ST205)。今説明している
状況ではクラス定義の構造は変更されていないので、こ
のステップST205では差異がないと判断される。従
ってメモリ上の構造定義部107を構造定義ファイル5
04(図1では104に対応する)に書き込むステップ
ST206は実行されない。
【0051】次に手続き定義部108を格納する手続き
定義ファイル、すなわちファイル名が「A.c」の手続
き定義ファイル505(図1では105に対応する)が
既に存在するかどうかを調べる(ST207)。この場
合存在するので、このメモリ上の手続き定義部108と
既に手続き定義ファイル505(図1では105に対応
する)に格納された以前の手続き定義部とを比較し、有
意な差異があるかどうかを判断する(ST208)。今
説明している状況ではクラス定義の手続きが変更された
ので、このステップST207では差異があると判断さ
れる。従ってメモリ上の手続き定義部108を手続き定
義ファイル505(図1では105に対応する)に書き
込む(ST209)。
定義ファイル、すなわちファイル名が「A.c」の手続
き定義ファイル505(図1では105に対応する)が
既に存在するかどうかを調べる(ST207)。この場
合存在するので、このメモリ上の手続き定義部108と
既に手続き定義ファイル505(図1では105に対応
する)に格納された以前の手続き定義部とを比較し、有
意な差異があるかどうかを判断する(ST208)。今
説明している状況ではクラス定義の手続きが変更された
ので、このステップST207では差異があると判断さ
れる。従ってメモリ上の手続き定義部108を手続き定
義ファイル505(図1では105に対応する)に書き
込む(ST209)。
【0052】以上の結果、手続き定義ファイル505
(図1では105に対応する)のみが更新され、構造定
義ファイル504(図1では104に対応する)は更新
されないことになる。
(図1では105に対応する)のみが更新され、構造定
義ファイル504(図1では104に対応する)は更新
されないことになる。
【0053】このプリプロセスによりファイル名が
「A.c」の構造定義ファイル505が更新されたた
め、それに依存するファイル名が「A.o」のオブジェ
クトファイル510を更新するためにC言語コンパイラ
が起動され、ファイル510が更新される。そしてファ
イル510に依存するファイル名が「Program」
のファイル513を更新するためにリンカが起動され、
ファイル513が更新される。
「A.c」の構造定義ファイル505が更新されたた
め、それに依存するファイル名が「A.o」のオブジェ
クトファイル510を更新するためにC言語コンパイラ
が起動され、ファイル510が更新される。そしてファ
イル510に依存するファイル名が「Program」
のファイル513を更新するためにリンカが起動され、
ファイル513が更新される。
【0054】結局、プリプロセス、コンパイル、リンク
を合わせて3回の処理だけで実行形式プログラムである
ファイル513の最新版が得られることになる。これ
は、従来の技術で説明したときの7回と比べて非常に少
なく効率が良い。
を合わせて3回の処理だけで実行形式プログラムである
ファイル513の最新版が得られることになる。これ
は、従来の技術で説明したときの7回と比べて非常に少
なく効率が良い。
【0055】なお、以上の実施例においては、C言語を
ベースとしたプリプロセス方式オブジェクト指向言語の
プリプロセスシステムを説明したが、これは本発明をな
んら限定するものではない。使用言語はC言語のみに限
らず他のコンピュータ上の言語であってもよい。また、
本発明はオブジェクト指向言語のプリプロセスシステム
のみでなく、一般のコンピュータプログラムの翻訳方法
にも適用可能である。また、結果データの記憶場所とし
てメモリを使用したが、これは一時的なファイルを使用
しても同様の効果を得られる。また、図3のフローチャ
ートで示した結果の比較方法は、字句解析を含めた詳し
い比較の方法でも同様の効果を得られる。
ベースとしたプリプロセス方式オブジェクト指向言語の
プリプロセスシステムを説明したが、これは本発明をな
んら限定するものではない。使用言語はC言語のみに限
らず他のコンピュータ上の言語であってもよい。また、
本発明はオブジェクト指向言語のプリプロセスシステム
のみでなく、一般のコンピュータプログラムの翻訳方法
にも適用可能である。また、結果データの記憶場所とし
てメモリを使用したが、これは一時的なファイルを使用
しても同様の効果を得られる。また、図3のフローチャ
ートで示した結果の比較方法は、字句解析を含めた詳し
い比較の方法でも同様の効果を得られる。
【0056】
【発明の効果】本発明は、結果データに変化があるとき
にのみ結果データをファイルに書き込むという簡単な手
段によって、ファイルへの書き込み回数を減少させると
ともに、結果データに変化のないファイルの変更日時が
変化せず、それにより、UNIXにおけるmakeコマ
ンドなどの、ファイルの依存関係とファイルの変更日時
とによって複数のファイルの一連の処理を制御するソフ
トウェアを利用しているときに、変更日時が変化してい
ても内容に変更の無いファイルに依存するファイルにつ
いては処理を省くことが出来るため、一連のファイル処
理の全体的な処理効率を上げることが可能となる。
にのみ結果データをファイルに書き込むという簡単な手
段によって、ファイルへの書き込み回数を減少させると
ともに、結果データに変化のないファイルの変更日時が
変化せず、それにより、UNIXにおけるmakeコマ
ンドなどの、ファイルの依存関係とファイルの変更日時
とによって複数のファイルの一連の処理を制御するソフ
トウェアを利用しているときに、変更日時が変化してい
ても内容に変更の無いファイルに依存するファイルにつ
いては処理を省くことが出来るため、一連のファイル処
理の全体的な処理効率を上げることが可能となる。
【図1】本発明の一実施例におけるプリプロセスシステ
ムの構成図
ムの構成図
【図2】同実施例におけるプリプロセスシステムの全体
の動作を示すフローチャート
の動作を示すフローチャート
【図3】同実施例における結果データの比較方法を示す
フローチャート
フローチャート
【図4】同実施例および従来のプリプロセスシステムで
処理されるプログラムの具体例を構成するクラスのクラ
ス階層図
処理されるプログラムの具体例を構成するクラスのクラ
ス階層図
【図5】図4で示したクラスのクラス定義ファイルとそ
れから生成されるファイルの生成関係を示した図
れから生成されるファイルの生成関係を示した図
【図6】図4で示したクラスのクラス定義ファイルとそ
れから生成されるファイルの依存関係を示したテキスト
データを示す図
れから生成されるファイルの依存関係を示したテキスト
データを示す図
【図7】従来のプリプロセスシステムの全体の動作を示
すフローチャート
すフローチャート
101 I/Oコントローラ 102 ディスク装置 103 クラス定義ファイル 104 構造定義ファイル 105 手続き定義ファイル 106 メモリ 107 構造定義部 108 手続き定義部 109 演算装置
Claims (2)
- 【請求項1】データ処理手順と結果処理手順とを備え、 ファイル相互に優先関係があり、 前記優先関係で下位のファイルは少なくとも1つの前記
優先関係で上位のファイルに依存し、 前記上位のファイルが更新された場合には、前記上位の
ファイルに依存する前記下位のファイルの内容を更新
し、 前記データ処理手順で、少なくとも1つの源泉ファイル
の源泉データから少なくとも1つの新たな結果データを
生成する処理方法であって、 前記新たな結果データを格納する結果ファイルが既に存
在するか否かを判断し、前記結果ファイルが存在しない
場合には、前記結果処理手順で新たな結果ファイルを生
成させ、前記新たな結果データを前記新たな結果ファイ
ルに格納させる判断手順と、 前記結果ファイルが存在する場合に、前記結果ファイル
内の古い結果データと前記データ処理手順で生成した新
たな結果データとに有為な差異があるか否かを判断し、
有為な差異が認められる場合には、前記結果処理手順
で、前記データ処理手順で生成した新たな結果データを
前記結果ファイルに格納するデータ比較手順とを備えた
ことを特徴とするデータ処理方法。 - 【請求項2】データ処理手段と結果処理手段とを備え、 ファイル相互に優先関係があり、 前記優先関係で下位のファイルは少なくとも1つの前記
優先関係で上位のファイルに依存し、 前記上位のファイルが更新された場合には、前記上位の
ファイルに依存する前記下位のファイルの内容を更新
し、 前記データ処理手段で、少なくとも1つの源泉ファイル
の源泉データから少なくとも1つの新たな結果データを
生成する処理装置であって、 前記新たな結果データを格納する結果ファイルが既に存
在するか否かを判断し、前記結果ファイルが存在しない
場合には、前記結果処理手段で新たな結果ファイルを生
成させ、前記新たな結果データを前記新たな結果ファイ
ルに格納させる判断手段と、 前記結果ファイルが存在する場合に、前記結果ファイル
内の古い結果データと前記データ処理手段で生成した新
たな結果データとに有為な差異があるか否かを判断し、
有為な差異が認められる場合には、前記結果処理手段
で、前記データ処理手段で生成した新たな結果データを
前記結果ファイルに格納するデータ比較手段とを備えた
ことを特徴とするデータ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5092787A JPH06309204A (ja) | 1993-04-20 | 1993-04-20 | データ処理方法及びその装置 |
KR1019940007910A KR960016398B1 (ko) | 1993-04-20 | 1994-04-15 | 데이터 처리방법 및 그 장치 |
US08/228,904 US5617564A (en) | 1993-04-20 | 1994-04-18 | Program source file preprocessing method and apparatus to detect modifications and generate a class of files |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5092787A JPH06309204A (ja) | 1993-04-20 | 1993-04-20 | データ処理方法及びその装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06309204A true JPH06309204A (ja) | 1994-11-04 |
Family
ID=14064138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5092787A Pending JPH06309204A (ja) | 1993-04-20 | 1993-04-20 | データ処理方法及びその装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5617564A (ja) |
JP (1) | JPH06309204A (ja) |
KR (1) | KR960016398B1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6377954B1 (en) * | 1997-04-04 | 2002-04-23 | Fujitsu Limited | Object-oriented processing system and object-oriented case apparatus |
US6317759B1 (en) | 1997-12-01 | 2001-11-13 | Emc Corporation | Method and apparatus for providing an applications development system for internet based applications |
SE514762C2 (sv) * | 1998-05-28 | 2001-04-23 | Ericsson Telefon Ab L M | Förfarande, anordning och portabel terminal för programvarunedladdning i ett trådlöst näverk samt sådant telekommunikationsnät |
US6236993B1 (en) | 1998-06-24 | 2001-05-22 | Victor V. Fanberg | Computer file comparison method |
JP3762867B2 (ja) * | 1999-01-29 | 2006-04-05 | 富士通株式会社 | コンパイラ装置、コンパイル方法、およびそのためのプログラムを格納した記憶媒体 |
DE60142136D1 (de) * | 2000-02-21 | 2010-07-01 | Panasonic Corp | Linken von Java class files für eingebettete Geräte |
US20030233621A1 (en) * | 2002-06-13 | 2003-12-18 | International Business Machines Corporation | Editor for smart version control |
US8667404B2 (en) * | 2008-08-06 | 2014-03-04 | Autodesk, Inc. | Predictive material editor |
US9342901B2 (en) * | 2008-10-27 | 2016-05-17 | Autodesk, Inc. | Material data processing pipeline |
US8584084B2 (en) * | 2008-11-12 | 2013-11-12 | Autodesk, Inc. | System for library content creation |
KR101156227B1 (ko) * | 2010-11-22 | 2012-06-18 | 주식회사 파수닷컴 | 전처리가 수행된 파일을 실행하기 위한 파일 처리장치 및 그 방법을 컴퓨터에서 실행시키기 위한 기록매체 |
US20140258347A1 (en) * | 2013-03-11 | 2014-09-11 | Microsoft Corporation | Grouping files for optimized file operations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4524427A (en) * | 1982-08-04 | 1985-06-18 | The University Of Bordeaux 1 | Method for making comparisons between reference logical entities and logical entities proceeding from a file |
JP2834171B2 (ja) * | 1989-02-06 | 1998-12-09 | 株式会社日立製作所 | コンパイル方法 |
US5278979A (en) * | 1990-12-20 | 1994-01-11 | International Business Machines Corp. | Version management system using pointers shared by a plurality of versions for indicating active lines of a version |
JPH05250244A (ja) * | 1992-03-04 | 1993-09-28 | Nec Corp | データベースシステム |
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
-
1993
- 1993-04-20 JP JP5092787A patent/JPH06309204A/ja active Pending
-
1994
- 1994-04-15 KR KR1019940007910A patent/KR960016398B1/ko not_active IP Right Cessation
- 1994-04-18 US US08/228,904 patent/US5617564A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR940024600A (ko) | 1994-11-18 |
US5617564A (en) | 1997-04-01 |
KR960016398B1 (ko) | 1996-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5854932A (en) | Compiler and method for avoiding unnecessary recompilation | |
US6298481B1 (en) | System for modifying the functionality of compiled computer code at run-time | |
US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
JP3041222B2 (ja) | ソース・コード作成システム及び方法 | |
US5325533A (en) | Engineering system for modeling computer programs | |
US6961931B2 (en) | Dependency specification using target patterns | |
US20020013862A1 (en) | Method for data access code generation | |
JP4181326B2 (ja) | コード最適化のための方法、装置及びプログラム | |
CA2144875A1 (en) | Incremental linker system | |
US6983458B1 (en) | System for optimizing data type definition in program language processing, method and computer readable recording medium therefor | |
JP2002508561A (ja) | 自動コンフィギュレーション発生 | |
JP2000181725A (ja) | 実行可能なコ―ドを改変し、追加機能を付与するための方法およびシステム | |
JP2000035893A (ja) | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 | |
US6240546B1 (en) | Identifying date fields for runtime year 2000 system solution process, method and article of manufacture | |
JP2003526154A (ja) | 仮想記憶管理プログラムを有していないデータ処理装置にクラスをプレロードするためのシステム及び方法 | |
JPH06309204A (ja) | データ処理方法及びその装置 | |
JPH0254337A (ja) | 実行可能イメージの生成を容易とするデータ処理システム | |
JPH06324881A (ja) | メモリデータの重なり判定機能を備えたコンパイラ装置 | |
US20040261055A1 (en) | Predictively processing tasks for building software | |
US8935657B2 (en) | Model-to-model transformation by kind | |
JPH10507016A (ja) | ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ | |
US6742180B1 (en) | System and method providing seamless transition of operating system environment | |
US20030115571A1 (en) | Construction of a software application from a plurality of programming languages | |
US20090265697A1 (en) | Methods, Devices and Software Applications for Facilitating a Development of a Computer Program | |
JP3266097B2 (ja) | 非リエントラントプログラムの自動リエントラント化方法及びシステム |