JP4223746B2 - コンピュータ、プログラムソースコード生成方法 - Google Patents
コンピュータ、プログラムソースコード生成方法 Download PDFInfo
- Publication number
- JP4223746B2 JP4223746B2 JP2002193938A JP2002193938A JP4223746B2 JP 4223746 B2 JP4223746 B2 JP 4223746B2 JP 2002193938 A JP2002193938 A JP 2002193938A JP 2002193938 A JP2002193938 A JP 2002193938A JP 4223746 B2 JP4223746 B2 JP 4223746B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- data
- program source
- program
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムソースコードを生成するコンピュータ、プログラムソースコード生成方法、プログラムソースコード生成プログラムに関する。
【0002】
【従来の技術】
一般に、コンピュータ等の情報処理装置では、互いに共通なデータを受け渡しするためのプログラムを作成する場合、受け渡しするデータのデータ項目の定義が記載された仕様書などを参照しながら、プログラマがプログラムソースコードを作成している。データ項目の定義では、例えば作成対象とするプログラムソースコードファイルのそれぞれが受け渡しできるデータに関する情報(サイズやデータ型(文字列、数値など))が定義されている。
【0003】
プログラマは、データ項目の定義に従って、互いに共通なデータを受け渡しするプログラムのプログラムソースコードを、目的とするプログラミング言語を用いて記述することになる。
【0004】
互いに共通なデータを受け渡しするためのプログラムでは、相互のプログラム間で扱うデータが完全に一致していない。すなわち、データを受け渡しする相手となるプログラムが複数あるため、複数のプログラムとの間でそれぞれ互いに共通なデータを受け渡しすることができるプログラムソースコードを記述する必要がある。
【0005】
【発明が解決しようとする課題】
このように従来では、互いに共通なデータを受け渡しするためのプログラムソースコードを生成する場合には、プログラマがデータ項目の定義が記載された仕様書などを参照しながら、定義する記述に応じたプログラムコードを入力する作業が必要となっていた。
【0006】
このため、データ項目の定義において生成するプログラムソースコードファイルの数が多かったり、さらにデータを受け渡しするプログラム間の関係が複雑なものであったりした場合には、プログラマは多大な労力を要してプログラムソースコードを入力していかなければならなかった。
【0007】
また、データ項目の定義が一部変更となった場合には、プログラムソースコードの再生成をしたり、変更が必要なソースコードを抽出して変更したりする必要があった。さらに、対象とするプログラミング言語を変更する場合などにおいても、プログラムソースコードの再生成が必要な場合があり、多大な労力が必要となっていた。
【0008】
本発明は前記のような事情を考慮してなされたもので、所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化する、互いに共通するデータを対象とする複数のプログラムソースコードの生成に要する労力を軽減することが可能なコンピュータ、プログラムソースコード生成方法、プログラムソースコード生成プログラムを提供することを目的とする。
【0009】
【課題を解決するための手段】
本発明は、所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードを生成するコンピュータであって、データの単位となる複数のグループと、生成対象とする複数のプログラムソースコードのそれぞれについてシリアライズ及びストラクチャの対象とする前記複数のグループのうちの少なくとも1つのグループとが定義され、前記グループにはデータのデータサイズ及びデータ型が定義された要素を含んだ定義ファイルであって、異なるデータ項目に対するプログラムソースコードを再生成する場合には前記データ項目の定義が変更される定義ファイルを記憶する定義ファイル記憶部と、前記定義ファイル記憶部に記憶された前記定義ファイルを読み込み、前記定義ファイルに定義された生成対象とするそれぞれのプログラムソースコードがシリアライズ及びストラクチャの対象とするグループに含まれるデータの要素の定義に従って、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保して所定のスタック位置に順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順でスタック位置を順次更新しながら読み出して、前記要素に定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データをストラクチャするプログラムソースコードを生成する、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有したソースコード処理部と、生成対象とするプログラムソースコードのプログラム言語に応じて前記複数のプログラムソースコード自動生成手段の何れかを選択して実行させる変更手段と、
前記プログラムソースコード自動生成手段によって生成された複数のプログラムソースコードを記憶するソースコードファイル記憶部とを具備したことを特徴とする。
【0010】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図1は本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図である。本実施形態におけるプログラムソースコード生成方法は、プログラムソースコード生成プログラムをコンピュータ上で実行することで実現される。コンピュータは、例えば半導体メモリ、CD−ROM、DVD、磁気ディスク等の記録媒体に記録されたプログラムソースコード生成プログラムを読み込み、このプログラムによって動作が制御される。
【0011】
図1に示すように、プログラムソースコード生成方法は、ソースコード処理部10、定義ファイル記憶部12、ソースコードファイル記憶部14、定義ファイル変更部16、及び変更部18の機能が設けられる。
【0012】
ソースコード処理部10は、プログラム間で受け渡しが行われるデータのデータ項目を定義する情報をもとにプログラムソースコードを生成する処理を実行するもので、プログラムソースコード自動生成部20(20a,20b…)の機能が設けられる。プログラムソースコード自動生成部20は、定義ファイル記憶部12に記憶されたデータ項目の定義ファイル22を参照し、定義ファイル22において定義されたデータ項目に応じた、互いに共通なデータを受け渡しする機能を実現するためのプログラムソースコードを生成する。
【0013】
なお、ソースコード処理部10には、複数のプログラムソースコード自動生成部20a,20b…を設けることができる。各プログラムソースコード自動生成部20a,20b…は、生成の対象とするプログラムソースコードのプログラミング言語の違いに応じたプログラムソースコードを生成する機能が設けられており、何れかが選択されて実行される。
【0014】
定義ファイル記憶部12は、ソースコード処理部10(プログラムソースコード自動生成部20)によって生成されるプログラムソースコードのもとになるデータ項目の定義ファイル22が記憶される。データ項目の定義ファイル22では、互いに共通なデータを受け渡しする単位となるグループと、生成対象となるプログラムソースコードが持つグループの定義が含まれている。1つのプログラムソースコードは、複数のグループを持つことができる。また、グループには要素を含むことができ、この要素は他のグループと共通していても良い。なお、要素には、例えば受け渡しされるデータについてのデータサイズやデータ型(文字列、数値など)の情報が定義されている。
【0015】
ソースコードファイル記憶部14は、ソースコード処理部10(プログラムソースコード自動生成部20)によって生成されたプログラムソースコードファイル24を記憶する。
【0016】
定義ファイル変更部16は、定義ファイル記憶部12に記憶されたデータ項目の定義ファイル22に対して変更を加えるもので、異なるデータ項目に対するプログラムソースコードを再生成する場合などにおいて定義ファイル中のデータ項目の定義を変更する。
【0017】
変更部18は、プログラムソースコードのプログラミング言語の違いに応じたプログラムソースコードを生成するために、必要に応じてデータ項目の定義ファイル22をもとにプログラムソースコードファイル24を生成するプログラムソースコード自動生成部20を変更、すなわち複数のプログラムソースコード自動生成部20a,20b…の何れかを選択して実行させる。なお、ソースコード処理部10に複数のプログラムソースコード自動生成部20a,20b…を設けておいて何れかを選択して使用するのではなく、必要に応じて変更部18によってプログラムソースコード自動生成部20を変更する、あるいは別のプログラムソースコード自動生成部20に置き換えるものとしても良い。
【0018】
次に、本実施形態におけるプログラムソースコード作成の動作について、図2に示すフローチャートを参照しながら説明する。
【0019】
図3には、プログラムソースコードファイル24の生成のもとになるデータ項目の定義ファイル22の定義内容の一例と、この定義ファイル22をもとに生成される複数のプログラムソースコードの一例を示している。
【0020】
図3に示すデータ項目の定義ファイル22の定義内容では、グループ1には、要素A,B、グループ2には、要素C,D,E、グループ3には要素B,C,Dがそれぞれ含まれている。また、図3(a)に示すプログラムソースコード1はグループ1,2,3、図3(b)に示すプログラムソースコード2はグループ1、図3(c)に示すプログラムソースコード3はグループ3、図3(d)に示すプログラムソースコード4はグループ2,3をそれぞれ持つことが定義されている。
【0021】
まず、プログラムソースコード自動生成部20は、データ項目の定義ファイル22を参照し、このファイル中に作成対象とするプログラムソースコードについての定義の有無を判別する(ステップA1)。ここで、プログラムソースコードの定義がある場合には、プログラムソースコード自動生成部20は、1つのプログラムソースについての定義を読み込む(ステップA2)。図3に示す例では、プログラムソースコード1〜4について定義されているので、まず「プログラムソース1」の定義を読み込む。なお、プログラムソースコードの定義がある場合には処理を終了する。
【0022】
次に、プログラムソースコード自動生成部20は、読み込んだプログラムソースコードが持つグループの定義の有無を判別する(ステップA3)。ここで、グループの定義がある場合には、プログラムソースコード自動生成部20は、1つのグループについての定義を読み込む(ステップA4)。図3に示す例では、「プログラムソースコード1」については、グループ1,2,3について定義されているので、まず「グループ1」の定義を読み込む。
【0023】
次に、プログラムソースコード自動生成部20は、読み込んだグループに含まれる要素の定義の有無を判別する(ステップA5)。ここで、要素の定義がある場合には、プログラムソースコード自動生成部20は、1つの要素についての定義を読み込む(ステップA6)。図3に示す例では、「グループ1」には2つの「要素A」「要素B」が定義されているので、まず「要素A」の定義を読み込む。なお、要素には、例えば互いに共通な受け渡しの対象となるデータのデータサイズやデータ型(文字列、数値など)が定義されている。
【0024】
プログラムソースコード自動生成部20は、要素の定義(すなわちデータサイズやデータ型)をもとに、所定の手法により互いに共通なデータを受け渡しするためのプログラムソースコード生成する(ステップA7)。ここでは、例えば要素の定義がされたデータを直列化(シリアライズ)及び非直列化(ストラクチャ)するためのプログラムソースコードコードを生成するものとする。
【0025】
例えば、所定のデータ構造をもって管理されて記録媒体に記録されているデータを、通信経路を通じて伝送して他の記録媒体に記録させる場合には、所定のデータ構造のデータをシリアライズした上で通信経路を伝送し、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化する処理が実行される。ここでは、この処理を実現するためのプログラムのプログラムソースコードを生成する。
【0026】
データをシリアライズするプログラムソースコードは、スタックの位置を順次更新しながら、各要素に定義されたデータをスタックに順次格納していく手続きが記述される。また、データをストラクチャするプログラムソースコードは、シリアライズの手続きと逆となるように、スタックに格納されたデータを、スタックの位置を順次更新しながら読み出して、各要素で定義されたデータを構築する手続きが記述される(なお、具体例について、図6乃至図12に示す)。
【0027】
次に、プログラムソースコード自動生成部20は、前述と同様にして定義ファイル22を参照し、現在、対象としているグループについて、定義された要素の有無を判別し(ステップA5)、グループに要素が定義されている場合にはその要素を読み込む(ステップA6)。図3に示す例では、次に「グループ1」における「要素B」の定義を読み込む。
【0028】
プログラムソースコード自動生成部20は、要素の情報をもとに、所定の手法により互いに共通なデータを受け渡しするためのプログラムソースコード生成する(ステップA7)。
【0029】
以下、同様にして、グループに定義された要素の数だけ前述した処理を繰り返して実行し、それぞれの要素の互いに共通なデータを受け渡しするためのプログラムソースコード生成する(ステップA5〜A7)。
【0030】
こうして、グループに含まれる各要素の互いに共通なデータを受け渡しするためのプログラムソースコードを生成すると、これらをまとめてグループの定義に含まれる要素のデータをシリアライズ及びストラクチャするためのプログラムソースコードを生成する(ステップA8)。
【0031】
次に、前述と同様にして、プログラムソースコード自動生成部20は、読み込んだプログラムソースコードが持つグループの定義の有無を判別し(ステップA3)、他にグループの定義がある場合には、次のグループについての定義を読み込んで(ステップA4)、このグループに定義された各要素のデータを示すように、シリアライズ及びストラクチャするためのコードを生成する(ステップA5〜A7)。そして、これらをまとめてグループの定義に含まれる要素のデータをシリアライズ及びストラクチャするためのプログラムソースコードを生成する(ステップA8)。
【0032】
以上の処理をグループの数だけ繰り返して実行する(ステップA3〜A8)。
【0033】
こうして、全てのグループについて、各グループで定義される要素のデータを互いに受け渡しするコードを生成すると、プログラムソースコード自動生成部20は、作成対象とするプログラムソースコードの定義に含まれるグループ単位で、要素のデータを示すように、及びストラクチャするためのコードをまとめて生成する(ステップA9)。
【0034】
次に、プログラムソースコード自動生成部20は、データ項目の定義ファイル22を参照し、このファイル中に作成対象とするプログラムソースコードについての定義の有無を判別し(ステップA1)、別のプログラムソースコードの定義がある場合には、このプログラムソースについての定義を読み込み(ステップA2)、以下、前述と同様の処理を実行する(ステップA3〜A9)。こうして、プログラムソースコード自動生成部20は、データ項目の定義ファイル22に定義されたプログラムソースコードの数だけ処理を繰り返して実行する(ステップA1〜A9)。
【0035】
このようにして、プログラムソースコード自動生成部20は、例えば図3に示すデータ項目の定義ファイル22の定義内容を参照することで、定義された作成対象とするプログラムソースコードを作成することができる。
【0036】
すなわち、グループ1,2,3を持つと定義されたプログラムソースコード1については、グループ1に定義された要素A,Bのデータを受け渡しするためのコードと、グループ2に定義された要素C,D,Eのデータを受け渡しするためのコードと、グループ3に定義された要素B,C,Dのデータを受け渡しするためのコードを含むプログラムソースコードファイル24を作成する。また、グループ1を持つと定義されたプログラムソースコード2については、グループ1に定義された要素A,Bのデータを受け渡しするためのコードを含むプログラムソースコードファイル24を作成する。また、グループ3を持つと定義されたプログラムソースコード3については、グループ3に定義された要素B,C,Dのデータを受け渡しするためのコードを含むプログラムソースコードファイル24を作成する。また、グループ2,3を持つと定義されたプログラムソースコード4については、グループ3に定義された要素B,C,Dのデータを受け渡しするためのコードと、グループ2に定義された要素C,D,Eのデータを受け渡しするためのコードとを含むプログラムソースコードファイル24を作成する。
【0037】
図4には、図3に示すデータ項目の定義ファイル22の定義内容に応じて作成されたプログラムソースコード1,2,3,4の互いに共通なデータを受け渡しする関係を示し、図5にはプログラムソースコード1,2,3,4のそれぞれが扱えるグループと要素の関係を示している。
【0038】
図4に示すように、プログラムソースコード1は、グループ1,2,3のデータを扱うことができるので、プログラムソースコード1によるプログラムは、プログラムソースコード2,3,4によるプログラムとの何れとの間でも互いに共通なデータを受け渡しすることができる。図4(a)に示すプログラムソースコード1によるプログラムは、図4(b)に示すプログラムソースコード2によるプログラムとの間でデータを受け渡しする場合には、グループ1(A,B)を受け渡しするコードによるプログラムが機能することになる。また、プログラムソースコード1によるプログラムは、図4(d)に示すプログラムソースコード4によるプログラムとの間でデータを受け渡しする場合には、グループ2(C,D,E)とグループ3(B,C,D)を受け渡しするコードによるプログラムが機能することになる。また、図4(d)に示すプログラムソースコード4によるプログラムは、図4(c)に示すプログラムソースコード3によるプログラムとの間でデータを受け渡しする場合には、グループ3(B,C,D)を受け渡しするコードによるプログラムが機能することになる。
【0039】
このようにして、プログラムソースコード自動生成部20は、例えば図3に示すデータ構造の定義ファイル22を参照することで、図4に示すような関係で共通なデータを受け渡しするための複数のプログラムソースコードを自動生成することができる。従って、データ項目の定義において生成するプログラムソースコードファイルの数が多かったり、さらにデータを受け渡しするプログラム間の関係が複雑なものであったりした場合であっても、誤り無くプログラムソースコードを生成することができる。プログラムソースコード自動生成部20を用いることで、人手によるソースコードを作成するプログラミング作業を排除することができるので、人為的修正誤りを無くし、作業に要していた手間を大幅に削減することが可能となる。
【0040】
次に、互いに共通なデータを受け渡しするためのプログラムソースコードの具体例について説明する。
図6は、図3に示すデータ項目の定義ファイル22に該当する定義内容の具体例を示す図、図7及び図8は、図6に示すデータ項目の定義ファイル22の定義に応じてプログラムソースコード自動生成部20によって生成されるプログラムソースコードファイル1の具体例を示す図、図9は同様にして生成されるプログラムソースコード2の具体例を示す図、図10はプログラムソースコード3の具体例を示す図、図11及び図12はプログラムソースコード4の具体例を示す図である。
【0041】
図6に示す例では、データ項目の定義ファイル22において、3つのグループ1,2,3が含まれていることが先頭行「<dataClass section="group1 group2 group3">」の記述によって定義されている。
また、図6(1)〜(5)には、各グループで定義される要素A,B,C,D,Eについての定義が記述されている。
【0042】
例えば、図6(1)の「要素A」については「<type>long</type>」の記述にあるように、「long」サイズ(例えば、4byte)のデータであることが定義されている。同様にして、図6(2)の「要素B」については「<type>Short</type>」の記述から「Short」サイズ(例えば、2byte)のデータであり、図6(3)の「要素C」については、「<type>char</type>」の記述から文字のデータであり、図6(4)の「要素D」については、「<type>String</type>」の記述から文字列のデータであり、図6(5)の「要素E」については「<type>long</type>」の記述から「long」サイズのデータであることがそれぞれ定義されている。
【0043】
また、各要素A〜Eの定義において、それぞれの要素を含むグループが定義されている。
例えば、図6(1)の「要素A」の定義では、「<member section="group1">」の記述によって、要素Aがグループ1に含まれていることを表している。同様にして、図6(2)の「要素B」の定義では要素Bがグループ1,3、図6(3)の「要素C」の定義では要素Cがグループ2,3、図6(4)の「要素D」の定義では要素Dがグループ2,3、図6(5)の「要素E」の定義では要素Eがグループ2に含まれていることをそれぞれ表している(図3参照)。
【0044】
また、図6(6)には各プログラムソースコードが持つグループの定義が記述されている。
例えば、プログラムソースコード1(code1)については、「<code group="group1 group2 group3">code1</code>」の記述にあるように、3つのグループ(group1、group2、group3)を持つことが定義されている。同様にして、プログラムソースコード2(code2)については、「<code group="group1">code2</code>」の記述により1つのグループ(group1)、プログラムソースコード3(code3)については、「<code group="group3">code3</code>」の記述により1つのグループ(group3)、プログラムソースコード4(code4)については、「<code group="group2 group3">code4</code>」の記述により2つのグループ(group2、group3)をも持つことがそれぞれ定義されている。
【0045】
プログラムソースコード自動生成部20は、図6に示す定義ファイル22の記述に対して、全てのグループ1,2,3のデータを受け渡しできるプログラムソースコード1については、図7及び図8に示すようなプログラムソースコードファイル24を生成する。
【0046】
図7及び図8に示すプログラムソースコードファイル24では、(1)(2)に示すグループ1(要素A,B)のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。同様にして、(3)(4)に示すグループ2(要素C,D,E)のデータに対するシリアライズ及びストラクチャのプログラムソースコード、(5)(6)に示すグループ3(要素B,C,D)のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【0047】
さらに、(1)に示すグループ1(要素A,B)のデータに対するシリアライズのプログラムソースコードには、要素Aのデータに対するソースコード(11)と要素Bのデータに対するソースコード(12)が含まれている。
【0048】
例えば、ソースコード(11)には、「stack[count]」によって示すスタック位置に、要素Aのデータを、要素Aのデータ分のデータサイズを確保して格納し(「memcpy…」の行の記述)、スタックの次にデータを格納する位置を要素Aのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0049】
また、ソースコード(12)には、同様にして、「stack[count]」によって示すスタック位置に、要素Bのデータを、要素Bのデータ分のデータサイズを確保して格納し(「memcpy…」の行の記述)、スタックの次にデータを格納する位置を要素Bのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0050】
一方、(1)のシリアライズに対応するストラクチャのプログラムソースコード(2)には、要素Aのデータに対するソースコード(21)と要素Bのデータに対するソースコード(22)が含まれている。
【0051】
ソースコード(21)には、要素Aに対するシリアライズのプログラムソースコード(11)の記述とは逆の手順で、スタックからデータを読み出して要素Aのデータとし、同様にしてソースコード(22)には、要素Bに対するシリアライズのプログラムソースコード(12)の記述とは逆の手順でスタックからデータを読み出して要素Bのデータとするプログラムソースコードが含まれている。
【0052】
また、(3)に示すグループ2(要素C,D,E)のデータに対するシリアライズのプログラムソースコードには、要素Cのデータに対するソースコード(31)と要素Dのデータに対するソースコード(32)と要素Eのデータに対するソースコード(33)とが含まれている。
【0053】
例えば、ソースコード(31)には、「stack[count]」によって示すスタック位置に、要素Cのデータを、要素Cのデータ分のデータサイズを確保して格納し(「memcpy…」の行の記述)、スタックの次にデータを格納する位置を要素Cのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0054】
また、ソースコード(32)には、要素Dのデータ(文字列)の長さを定義し(「size=…」の行の記述)、「stack[count]」によって示すスタック位置に、定義した要素Dのデータの長さを示すデータ(「size」)を、このデータ分を確保して格納し(「memcpy(&stack…sizeof(size)」の行の記述)、スタックの次にデータを格納する位置を要素Dのデータの長さを示すデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。すなわち、要素Dのデータをスタックに格納する前に、要素Dのデータ(文字列)の長さを示すデータを格納するためのソースコードを生成している。次に、「stack[count]」によって示すスタック位置に、要素Dのデータを、要素Dのデータ分のデータサイズを確保して格納し(「memcpy(&stack…size)」の行の記述)、スタックの次にデータを格納する位置を要素Dのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0055】
また、ソースコード(33)には、「stack[count]」によって示すスタック位置に、要素Eのデータを、要素Eのデータ分のデータサイズを確保して格納し(「memcpy…」の行の記述)、スタックの次にデータを格納する位置を要素Eのデータ分更新する(「count=…」の行の記述)ことを表すソースコードが含まれている。
【0056】
一方、(3)のシリアライズに対応するストラクチャのプログラムソースコード(4)には、要素Cのデータに対するソースコード(41)と要素Dのデータに対するソースコード(42)と要素Eのデータに対するソースコード(43)とが含まれている。
【0057】
ソースコード(41)には、要素Cに対するシリアライズのプログラムソースコード(31)の記述とは逆の手順で、スタックからデータを読み出して要素Cのデータとし、同様にしてソースコード(42)には、要素Dに対するシリアライズのプログラムソースコード(32)の記述とは逆の手順でスタックからデータを読み出して要素Dのデータとし、ソースコード(43)には、要素Eに対するシリアライズのプログラムソースコード(33)の記述とは逆の手順でスタックからデータを読み出して要素Eのデータとするプログラムソースコードが含まれている。要素Dのデータについては、先に要素Dのデータ(文字列)の長さを示すデータを読み出し、このデータに従う長さのデータを読み出している。
【0058】
同様にして、(5)に示すグループ3(要素B,C,D)のデータに対するシリアライズのプログラムソースコードには、要素Bのデータに対するソースコード(51)と要素Cのデータに対するソースコード(52)と要素Dのデータに対するソースコード(53)とが含まれている。
【0059】
また、(6)に示すグループ3(要素B,C,D)のデータに対するストラクチャのプログラムソースコードには、要素Bのデータに対するソースコード(61)と要素Cのデータに対するソースコード(62)と要素Dのデータに対するソースコード(63)とが含まれている。なお、それぞれの要素B,C,Dに対する記述は前述と同じであるので説明を省略する。
【0060】
このようにして、図6に示すような内容を持つデータ項目の定義ファイル22を用意することで、この定義ファイル22で定義された内容に従って、グループ1,2,3を含むプログラムソースコード1については、図7及び図8に示すような互いに共通なデータを受け渡しするためのプログラムソースコードファイル24を自動生成することができる。
【0061】
また、プログラムソースコード自動生成部20は、図6に示す定義ファイル22の記述に対して、グループ1のデータを受け渡しできるプログラムソースコード2については、図9に示すようなプログラムソースコードファイル24を生成する。
【0062】
図9に示すプログラムソースコードファイル24では、(1)(2)に示すグループ1(要素A,B)のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【0063】
さらに、(1)に示すグループ1(要素A,B)のデータに対するシリアライズのプログラムソースコードには、要素Aのデータに対するソースコード(11)と要素Bのデータに対するソースコード(12)が含まれ、(2)に示すグループ1(要素A,B)のデータに対するストラクチャのプログラムソースコードには、要素Aのデータに対するソースコード(21)と要素Bのデータに対するソースコード(22)が含まれている。なお、各要素に対する記述内容については、前述した図7(1)(2)に示す場合と同じであるので説明を省略する。
【0064】
また、プログラムソースコード自動生成部20は、図6に示す定義ファイル22の記述に対して、グループ3のデータを受け渡しできるプログラムソースコード3については、図10に示すようなプログラムソースコードファイル24を生成する。
【0065】
図10に示すプログラムソースコードファイル24では、(1)(2)に示すグループ3(要素B,C,D)のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【0066】
さらに、(1)に示すグループ3(要素B,C,D)のデータに対するシリアライズのプログラムソースコードには、要素Bのデータに対するソースコード(11)と要素Cのデータに対するソースコード(12)と要素Dのデータに対するソースコード(13)とが含まれ、(2)に示すグループ3(要素B,C,D)のデータに対するストラクチャのプログラムソースコードには、要素Bのデータに対するソースコード(21)と要素Cのデータに対するソースコード(22)と要素Dのデータに対するソースコード(23)が含まれている。なお、各要素に対する記述内容については、前述した図8(5)(6)に示す場合と同じであるので説明を省略する。
【0067】
また、プログラムソースコード自動生成部20は、図6に示す定義ファイル22の記述に対して、グループ2,3のデータを受け渡しできるプログラムソースコード4については、図11及び図12に示すようなプログラムソースコードファイル24を生成する。
【0068】
図11及び図12に示すプログラムソースコードファイル24では、(1)(2)に示すグループ2(要素C,D,E)のデータに対するシリアライズ及びストラクチャのプログラムソースコードと、(3)(4)に示すグループ3(要素B,C,D)のデータに対するシリアライズ及びストラクチャのプログラムソースコードとが含まれている。なお、図11及び図12に示す(1)〜(4)の各要素の記述については前述と同じであるので説明を省略する。
【0069】
なお、図6に示す定義ファイル22における要素の記述は一例であって、様々な形式による記述が可能である。プログラムソースコード自動生成部20は、それらの様々な記述による定義に応じた、互いに共通なデータを受け渡しするための例えばシリアライズ及びストラクチャするためのプログラムソースコードを生成する機能が設けられる。
【0070】
なお、データ項目の定義ファイル22に記述された定義の内容が変更が必要な場合には、定義ファイル変更部16によって変更することができる。定義ファイル22による定義を変更してしまえば、前述したようにプログラムソースコード自動生成部20を実行させることで、変更されたデータ項目の定義ファイル22に応じたプログラムソースコードファイル24を簡単に自動生成することができる。
【0071】
また、プログラムソースコードのプログラミング言語を変更する必要がある場合、ソースコード処理部10に用意されている複数のプログラムソースコード自動生成部20a,20b…のうち、この変更後のプログラミング言語に対応しているプログラムソースコード自動生成部20が実行されるように、変更部18によって変更する。これにより、プログラミング言語を変更する場合であっても簡単に対応することができる。
【0072】
なお、前述した説明では、データ項目の定義ファイル22をもとにプログラムソースコードファイル24を生成するものとして説明しているが、データ項目を定義するために作成された専用のファイルではなく、データ項目を表していれはば他のデータを参照して、プログラムソースコードファイル24を生成するように構成することもできる。
【0073】
また、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【0074】
また、本願発明は、前述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0075】
【発明の効果】
以上詳述したように本発明によれば、互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義された情報を参照し、この情報に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成し、この生成されたプログラムソースコードをまとめて、グループが定義された生成対象とするプログラムソースコードを生成することにより、互いに共通データを受け渡しする機能を実現するためのプログラムソースコードの生成に要する労力を軽減することが可能となる。
【図面の簡単な説明】
【図1】本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図。
【図2】本実施形態におけるプログラムソースコード作成の動作について説明するためのフローチャート。
【図3】データ項目の定義ファイル22の定義内容の一例と、この定義ファイル22をもとに生成される複数のプログラムソースコードの一例を示す図。
【図4】図3に示すデータ項目の定義ファイル22の定義内容に応じて作成されたプログラムソースコード1,2,3,4の互いに共通なデータを受け渡しする関係を示す図。
【図5】プログラムソースコード1,2,3,4のそれぞれが扱えるグループと要素の関係を示す図。
【図6】図3に示すデータ項目の定義ファイル22に該当する定義内容の具体例を示す図。
【図7】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコードファイル1の具体例を示す図。
【図8】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコードファイル1の具体例を示す図。
【図9】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコード2の具体例を示す図。
【図10】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコード3の具体例を示す図。
【図11】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコード4の具体例を示す図。
【図12】図6に示すデータ項目の定義ファイル22の定義に応じて生成されるプログラムソースコード4の具体例を示す図。
【符号の説明】
10…ソースコード処理部
12…定義ファイル記憶部
14…ソースコードファイル記憶部
16…定義ファイル変更部
18…変更部
20…プログラムソースコード自動生成部
22…データ項目の定義ファイル
24…プログラムソースコードファイル
Claims (5)
- 所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードを生成するコンピュータであって、
データの単位となる複数のグループと、生成対象とする複数のプログラムソースコードのそれぞれについてシリアライズ及びストラクチャの対象とする前記複数のグループのうちの少なくとも1つのグループとが定義され、前記グループにはデータのデータサイズ及びデータ型が定義された要素を含んだ定義ファイルであって、異なるデータ項目に対するプログラムソースコードを再生成する場合には前記データ項目の定義が変更される定義ファイルを記憶する定義ファイル記憶部と、
前記定義ファイル記憶部に記憶された前記定義ファイルを読み込み、前記定義ファイルに定義された生成対象とするそれぞれのプログラムソースコードがシリアライズ及びストラクチャの対象とするグループに含まれるデータの要素の定義に従って、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保して所定のスタック位置に順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順でスタック位置を順次更新しながら読み出して、前記要素に定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データをストラクチャするプログラムソースコードを生成する、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有したソースコード処理部と、
生成対象とするプログラムソースコードのプログラム言語に応じて前記複数のプログラムソースコード自動生成手段の何れかを選択して実行させる変更手段と、
前記プログラムソースコード自動生成手段によって生成された複数のプログラムソースコードを記憶するソースコードファイル記憶部とを具備したことを特徴とするコンピュータ。 - 前記ソースコード処理部は、
前記定義ファイルにおいて定義された前記グループに複数の要素が含まれる場合に、各要素に対応するプログラムソースコードをそれぞれ生成してまとめることで、前記グループに対するプログラムソースコードを生成することを特徴とする請求項1記載のコンピュータ。 - 前記定義ファイルに定義されるグループには、他のグループと共通した要素を含むことを特徴とする請求項1記載のコンピュータ。
- 所定のデータ構造のデータをシリアライズし、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化するプログラムソースコードをコンピュータにより生成するプログラムソースコード生成方法であって、
コンピュータは、
データの単位となる複数のグループと、生成対象とする複数のプログラムソースコードのそれぞれについてシリアライズ及びストラクチャの対象とする前記複数のグループのうち少なくとも1つのグループとが定義され、前記グループにはデータのデータサイズ及びデータ型が定義された要素を含んだ定義ファイルであって、異なるデータ項目に対するプログラムソースコードを再生成する場合には前記データ項目の定義が変更される定義ファイルを定義ファイル記憶部に読み込み、
前記定義ファイルに定義された生成対象とするそれぞれのプログラムソースコードがシリアライズ及びストラクチャの対象とするグループに含まれるデータの要素の定義に従って、前記要素に定義されたデータサイズ及びデータ型のデータ分を確保して所定のスタック位置に順次格納していく手続きが記述された、データをシリアライズするプログラムソースコードを生成し、前記スタックに格納されたデータを前記シリアライズするプログラムソースコードとは逆の手順でスタック位置を順次更新しながら読み出して、前記要素に定義されたデータサイズ及びデータ型のデータを構築する手続きが記述された、データを ストラクチャするプログラムソースコードを生成し、
この生成されたプログラムソースコードをソースコードファイル記憶部に記憶することを特徴とするプログラムソースコード生成方法。 - 前記定義ファイルに含まれる要素によって定義されたデータサイズ及びデータ型に基づいて、プログラミング言語の違いに応じたプログラムソースコードを生成する機能をそれぞれ有する複数のプログラムソースコード自動生成手段を有し、
生成対象とするプログラムソースコードのプログラム言語に応じて前記プログラムソースコード自動生成手段の何れかを選択して実行させることで、前記プログラムソースコードを生成させることを特徴とする請求項4記載のプログラムソースコード生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002193938A JP4223746B2 (ja) | 2002-07-02 | 2002-07-02 | コンピュータ、プログラムソースコード生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002193938A JP4223746B2 (ja) | 2002-07-02 | 2002-07-02 | コンピュータ、プログラムソースコード生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038507A JP2004038507A (ja) | 2004-02-05 |
JP4223746B2 true JP4223746B2 (ja) | 2009-02-12 |
Family
ID=31702797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002193938A Expired - Fee Related JP4223746B2 (ja) | 2002-07-02 | 2002-07-02 | コンピュータ、プログラムソースコード生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4223746B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008075771A1 (ja) | 2006-12-21 | 2008-06-26 | Fujifilm Corporation | 導電膜およびその製造方法 |
-
2002
- 2002-07-02 JP JP2002193938A patent/JP4223746B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008075771A1 (ja) | 2006-12-21 | 2008-06-26 | Fujifilm Corporation | 導電膜およびその製造方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2004038507A (ja) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7447081B2 (ja) | アップグレード可能な証券トークン | |
CN107544871A (zh) | 一种虚拟机磁盘备份方法及装置 | |
CN109145055A (zh) | 一种基于Flink的数据同步方法和系统 | |
CN110490742B (zh) | 一种区块链中的交易执行方法及装置 | |
CN108153806A (zh) | 数据迁移 | |
JP4223746B2 (ja) | コンピュータ、プログラムソースコード生成方法 | |
JP4477531B2 (ja) | データインポート方法およびデータインポート装置 | |
JP4223745B2 (ja) | コンピュータ、プログラムソースコード生成方法 | |
US7716653B2 (en) | Configurable importers and resource writers for converting data into another format | |
JP6932769B2 (ja) | 記録管理装置及び方法、コンピュータプログラム並びに記録媒体 | |
US10229128B2 (en) | Method and apparatus for the generation, organization, storage and retrieval of time stamped blocks of data | |
JP4672695B2 (ja) | 制御システム開発支援装置、制御システム開発支援方法およびその方法をコンピュータに実行させるプログラム | |
JP3975598B2 (ja) | リムーバブルメディア書込装置 | |
JP5248762B2 (ja) | 設計データ依存関係管理装置、設計データ依存関係管理方法及びプログラム | |
JP7284791B2 (ja) | 分散トランザクションシステム及び分散トランザクションシステムにおける分散トランザクション処理方法 | |
JP2023158569A (ja) | 設定パラメータ要求通信装置、設定パラメータ保持通信装置、通信装置、通信システム、通信方法および通信プログラム | |
US11880824B1 (en) | Managing digital blockchains via digital tokens, systems, methods, and apparatus | |
JP3204370B2 (ja) | プログラムクロス開発用装置 | |
WO2021187305A1 (ja) | 情報処理システム、情報処理方法及び記録媒体 | |
JP4093802B2 (ja) | Cadデータ変換システム | |
JP3808240B2 (ja) | データ構造変換システム、変換方法、変換プログラム記録媒体 | |
CN105630635A (zh) | 数据容灾系统和方法 | |
JPH08147423A (ja) | 情報記憶媒体の発行処理データ作成装置及び作成方法 | |
JP2000330844A (ja) | データ記録方法および装置 | |
JPH0476622A (ja) | ロードモジュールライブラリ管理処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040901 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080115 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080317 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080507 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080707 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080805 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081006 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081014 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081118 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081120 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111128 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131128 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |