(57)【要約】【課題】互いに共通なデータを受け渡しするためのプログラムソースコードの生成に要する労力を軽減することを可能にする。【解決手段】プログラムソースコード自動生成部２０（２０ａ，２０ｂ…）は、互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義されたデータ項目の定義ファイル２２を参照し、定義ファイル２２に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成し、要素をもとに生成されたプログラムソースコードをまとめてプログラムソースコードファイル２４を生成する。【選択図】　　図１
2004038507.tif 000002
【特許請求の範囲】
【請求項１】
互いに共通なデータを受け渡しするためのプログラムソースコードを生成するプログラムソースコード生成方法であって、
互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義された情報を参照し、
前記情報に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成し、
前記要素をもとに生成されたプログラムソースコードをまとめて、前記グループが定義された生成対象とするプログラムソースコードを生成することを特徴とするプログラムソースコード生成方法。
【請求項２】
互いに共通なデータを受け渡しするための生成対象とするプログラムソースコードに対しては、共通するグループを持つことが前記情報に定義されていることを特徴とする請求項１記載のプログラムソースコード生成方法。
【請求項３】
プログラムソースコードのプログラミング言語に応じて、生成するプログラムソースコードを変更することを特徴とする請求項１記載のプログラムソースコード生成方法。
【請求項４】
互いに共通なデータを受け渡しするためのプログラムソースコードを生成するプログラムソースコード生成プログラムであって、
コンピュータを、
互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義された情報を参照させ、
前記情報に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成させ、
前記要素をもとに生成されたプログラムソースコードをまとめて、前記グループが定義された生成対象とするプログラムソースコードを生成させるためのプログラムソースコード生成プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムソースコードを生成するプログラムソースコード生成方法、プログラムソースコード生成プログラムに関する。
【０００２】
【従来の技術】
一般に、コンピュータ等の情報処理装置では、互いに共通なデータを受け渡しするためのプログラムを作成する場合、受け渡しするデータのデータ項目の定義が記載された仕様書などを参照しながら、プログラマがプログラムソースコードを作成している。データ項目の定義では、例えば作成対象とするプログラムソースコードファイルのそれぞれが受け渡しできるデータに関する情報（サイズやデータ型（文字列、数値など））が定義されている。
【０００３】
プログラマは、データ項目の定義に従って、互いに共通なデータを受け渡しするプログラムのプログラムソースコードを、目的とするプログラミング言語を用いて記述することになる。
【０００４】
互いに共通なデータを受け渡しするためのプログラムでは、相互のプログラム間で扱うデータが完全に一致していない。すなわち、データを受け渡しする相手となるプログラムが複数あるため、複数のプログラムとの間でそれぞれ互いに共通なデータを受け渡しすることができるプログラムソースコードを記述する必要がある。
【０００５】
【発明が解決しようとする課題】
このように従来では、互いに共通なデータを受け渡しするためのプログラムソースコードを生成する場合には、プログラマがデータ項目の定義が記載された仕様書などを参照しながら、定義する記述に応じたプログラムコードを入力する作業が必要となっていた。
【０００６】
このため、データ項目の定義において生成するプログラムソースコードファイルの数が多かったり、さらにデータを受け渡しするプログラム間の関係が複雑なものであったりした場合には、プログラマは多大な労力を要してプログラムソースコードを入力していかなければならなかった。
【０００７】
また、データ項目の定義が一部変更となった場合には、プログラムソースコードの再生成をしたり、変更が必要なソースコードを抽出して変更したりする必要があった。さらに、対象とするプログラミング言語を変更する場合などにおいても、プログラムソースコードの再生成が必要な場合があり、多大な労力が必要となっていた。
【０００８】
本発明は前記のような事情を考慮してなされたもので、互いに共通なデータを受け渡しするためのプログラムソースコードの生成に要する労力を軽減することが可能なプログラムソースコード生成方法、プログラムソースコード生成プログラムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は、互いに共通なデータを受け渡しするためのプログラムソースコードを生成するプログラムソースコード生成方法であって、互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義された情報を参照し、前記情報に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成し、前記要素をもとに生成されたプログラムソースコードをまとめて、前記グループが定義された生成対象とするプログラムソースコードを生成することを特徴とする。
【００１０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図である。本実施形態におけるプログラムソースコード生成方法は、プログラムソースコード生成プログラムをコンピュータ上で実行することで実現される。コンピュータは、例えば半導体メモリ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気ディスク等の記録媒体に記録されたプログラムソースコード生成プログラムを読み込み、このプログラムによって動作が制御される。
【００１１】
図１に示すように、プログラムソースコード生成方法は、ソースコード処理部１０、定義ファイル記憶部１２、ソースコードファイル記憶部１４、定義ファイル変更部１６、及び変更部１８の機能が設けられる。
【００１２】
ソースコード処理部１０は、プログラム間で受け渡しが行われるデータのデータ項目を定義する情報をもとにプログラムソースコードを生成する処理を実行するもので、プログラムソースコード自動生成部２０（２０ａ，２０ｂ…）の機能が設けられる。プログラムソースコード自動生成部２０は、定義ファイル記憶部１２に記憶されたデータ項目の定義ファイル２２を参照し、定義ファイル２２において定義されたデータ項目に応じた、互いに共通なデータを受け渡しする機能を実現するためのプログラムソースコードを生成する。
【００１３】
なお、ソースコード処理部１０には、複数のプログラムソースコード自動生成部２０ａ，２０ｂ…を設けることができる。各プログラムソースコード自動生成部２０ａ，２０ｂ…は、生成の対象とするプログラムソースコードのプログラミング言語の違いに応じたプログラムソースコードを生成する機能が設けられており、何れかが選択されて実行される。
【００１４】
定義ファイル記憶部１２は、ソースコード処理部１０（プログラムソースコード自動生成部２０）によって生成されるプログラムソースコードのもとになるデータ項目の定義ファイル２２が記憶される。データ項目の定義ファイル２２では、互いに共通なデータを受け渡しする単位となるグループと、生成対象となるプログラムソースコードが持つグループの定義が含まれている。１つのプログラムソースコードは、複数のグループを持つことができる。また、グループには要素を含むことができ、この要素は他のグループと共通していても良い。なお、要素には、例えば受け渡しされるデータについてのデータサイズやデータ型（文字列、数値など）の情報が定義されている。
【００１５】
ソースコードファイル記憶部１４は、ソースコード処理部１０（プログラムソースコード自動生成部２０）によって生成されたプログラムソースコードファイル２４を記憶する。
【００１６】
定義ファイル変更部１６は、定義ファイル記憶部１２に記憶されたデータ項目の定義ファイル２２に対して変更を加えるもので、異なるデータ項目に対するプログラムソースコードを再生成する場合などにおいて定義ファイル中のデータ項目の定義を変更する。
【００１７】
変更部１８は、プログラムソースコードのプログラミング言語の違いに応じたプログラムソースコードを生成するために、必要に応じてデータ項目の定義ファイル２２をもとにプログラムソースコードファイル２４を生成するプログラムソースコード自動生成部２０を変更、すなわち複数のプログラムソースコード自動生成部２０ａ，２０ｂ…の何れかを選択して実行させる。なお、ソースコード処理部１０に複数のプログラムソースコード自動生成部２０ａ，２０ｂ…を設けておいて何れかを選択して使用するのではなく、必要に応じて変更部１８によってプログラムソースコード自動生成部２０を変更する、あるいは別のプログラムソースコード自動生成部２０に置き換えるものとしても良い。
【００１８】
次に、本実施形態におけるプログラムソースコード作成の動作について、図２に示すフローチャートを参照しながら説明する。
【００１９】
図３には、プログラムソースコードファイル２４の生成のもとになるデータ項目の定義ファイル２２の定義内容の一例と、この定義ファイル２２をもとに生成される複数のプログラムソースコードの一例を示している。
【００２０】
図３に示すデータ項目の定義ファイル２２の定義内容では、グループ１には、要素Ａ，Ｂ、グループ２には、要素Ｃ，Ｄ，Ｅ、グループ３には要素Ｂ，Ｃ，Ｄがそれぞれ含まれている。また、図３（ａ）に示すプログラムソースコード１はグループ１，２，３、図３（ｂ）に示すプログラムソースコード２はグループ１、図３（ｃ）に示すプログラムソースコード３はグループ３、図３（ｄ）に示すプログラムソースコード４はグループ２，３をそれぞれ持つことが定義されている。
【００２１】
まず、プログラムソースコード自動生成部２０は、データ項目の定義ファイル２２を参照し、このファイル中に作成対象とするプログラムソースコードについての定義の有無を判別する（ステップＡ１）。ここで、プログラムソースコードの定義がある場合には、プログラムソースコード自動生成部２０は、１つのプログラムソースについての定義を読み込む（ステップＡ２）。図３に示す例では、プログラムソースコード１〜４について定義されているので、まず「プログラムソース１」の定義を読み込む。なお、プログラムソースコードの定義がある場合には処理を終了する。
【００２２】
次に、プログラムソースコード自動生成部２０は、読み込んだプログラムソースコードが持つグループの定義の有無を判別する（ステップＡ３）。ここで、グループの定義がある場合には、プログラムソースコード自動生成部２０は、１つのグループについての定義を読み込む（ステップＡ４）。図３に示す例では、「プログラムソースコード１」については、グループ１，２，３について定義されているので、まず「グループ１」の定義を読み込む。
【００２３】
次に、プログラムソースコード自動生成部２０は、読み込んだグループに含まれる要素の定義の有無を判別する（ステップＡ５）。ここで、要素の定義がある場合には、プログラムソースコード自動生成部２０は、１つの要素についての定義を読み込む（ステップＡ６）。図３に示す例では、「グループ１」には２つの「要素Ａ」「要素Ｂ」が定義されているので、まず「要素Ａ」の定義を読み込む。なお、要素には、例えば互いに共通な受け渡しの対象となるデータのデータサイズやデータ型（文字列、数値など）が定義されている。
【００２４】
プログラムソースコード自動生成部２０は、要素の定義（すなわちデータサイズやデータ型）をもとに、所定の手法により互いに共通なデータを受け渡しするためのプログラムソースコード生成する（ステップＡ７）。ここでは、例えば要素の定義がされたデータを直列化（シリアライズ）及び非直列化（ストラクチャ）するためのプログラムソースコードコードを生成するものとする。
【００２５】
例えば、所定のデータ構造をもって管理されて記録媒体に記録されているデータを、通信経路を通じて伝送して他の記録媒体に記録させる場合には、所定のデータ構造のデータをシリアライズした上で通信経路を伝送し、シリアライズされたデータをストラクチャして元のデータ構造となるように構造化する処理が実行される。ここでは、この処理を実現するためのプログラムのプログラムソースコードを生成する。
【００２６】
データをシリアライズするプログラムソースコードは、スタックの位置を順次更新しながら、各要素に定義されたデータをスタックに順次格納していく手続きが記述される。また、データをストラクチャするプログラムソースコードは、シリアライズの手続きと逆となるように、スタックに格納されたデータを、スタックの位置を順次更新しながら読み出して、各要素で定義されたデータを構築する手続きが記述される（なお、具体例について、図６乃至図１２に示す）。
【００２７】
次に、プログラムソースコード自動生成部２０は、前述と同様にして定義ファイル２２を参照し、現在、対象としているグループについて、定義された要素の有無を判別し（ステップＡ５）、グループに要素が定義されている場合にはその要素を読み込む（ステップＡ６）。図３に示す例では、次に「グループ１」における「要素Ｂ」の定義を読み込む。
【００２８】
プログラムソースコード自動生成部２０は、要素の情報をもとに、所定の手法により互いに共通なデータを受け渡しするためのプログラムソースコード生成する（ステップＡ７）。
【００２９】
以下、同様にして、グループに定義された要素の数だけ前述した処理を繰り返して実行し、それぞれの要素の互いに共通なデータを受け渡しするためのプログラムソースコード生成する（ステップＡ５〜Ａ７）。
【００３０】
こうして、グループに含まれる各要素の互いに共通なデータを受け渡しするためのプログラムソースコードを生成すると、これらをまとめてグループの定義に含まれる要素のデータをシリアライズ及びストラクチャするためのプログラムソースコードを生成する（ステップＡ８）。
【００３１】
次に、前述と同様にして、プログラムソースコード自動生成部２０は、読み込んだプログラムソースコードが持つグループの定義の有無を判別し（ステップＡ３）、他にグループの定義がある場合には、次のグループについての定義を読み込んで（ステップＡ４）、このグループに定義された各要素のデータを示すように、シリアライズ及びストラクチャするためのコードを生成する（ステップＡ５〜Ａ７）。そして、これらをまとめてグループの定義に含まれる要素のデータをシリアライズ及びストラクチャするためのプログラムソースコードを生成する（ステップＡ８）。
【００３２】
以上の処理をグループの数だけ繰り返して実行する（ステップＡ３〜Ａ８）。
【００３３】
こうして、全てのグループについて、各グループで定義される要素のデータを互いに受け渡しするコードを生成すると、プログラムソースコード自動生成部２０は、作成対象とするプログラムソースコードの定義に含まれるグループ単位で、要素のデータを示すように、及びストラクチャするためのコードをまとめて生成する（ステップＡ９）。
【００３４】
次に、プログラムソースコード自動生成部２０は、データ項目の定義ファイル２２を参照し、このファイル中に作成対象とするプログラムソースコードについての定義の有無を判別し（ステップＡ１）、別のプログラムソースコードの定義がある場合には、このプログラムソースについての定義を読み込み（ステップＡ２）、以下、前述と同様の処理を実行する（ステップＡ３〜Ａ９）。こうして、プログラムソースコード自動生成部２０は、データ項目の定義ファイル２２に定義されたプログラムソースコードの数だけ処理を繰り返して実行する（ステップＡ１〜Ａ９）。
【００３５】
このようにして、プログラムソースコード自動生成部２０は、例えば図３に示すデータ項目の定義ファイル２２の定義内容を参照することで、定義された作成対象とするプログラムソースコードを作成することができる。
【００３６】
すなわち、グループ１，２，３を持つと定義されたプログラムソースコード１については、グループ１に定義された要素Ａ，Ｂのデータを受け渡しするためのコードと、グループ２に定義された要素Ｃ，Ｄ，Ｅのデータを受け渡しするためのコードと、グループ３に定義された要素Ｂ，Ｃ，Ｄのデータを受け渡しするためのコードを含むプログラムソースコードファイル２４を作成する。また、グループ１を持つと定義されたプログラムソースコード２については、グループ１に定義された要素Ａ，Ｂのデータを受け渡しするためのコードを含むプログラムソースコードファイル２４を作成する。また、グループ３を持つと定義されたプログラムソースコード３については、グループ３に定義された要素Ｂ，Ｃ，Ｄのデータを受け渡しするためのコードを含むプログラムソースコードファイル２４を作成する。また、グループ２，３を持つと定義されたプログラムソースコード４については、グループ３に定義された要素Ｂ，Ｃ，Ｄのデータを受け渡しするためのコードと、グループ２に定義された要素Ｃ，Ｄ，Ｅのデータを受け渡しするためのコードとを含むプログラムソースコードファイル２４を作成する。
【００３７】
図４には、図３に示すデータ項目の定義ファイル２２の定義内容に応じて作成されたプログラムソースコード１，２，３，４の互いに共通なデータを受け渡しする関係を示し、図５にはプログラムソースコード１，２，３，４のそれぞれが扱えるグループと要素の関係を示している。
【００３８】
図４に示すように、プログラムソースコード１は、グループ１，２，３のデータを扱うことができるので、プログラムソースコード１によるプログラムは、プログラムソースコード２，３，４によるプログラムとの何れとの間でも互いに共通なデータを受け渡しすることができる。図４（ａ）に示すプログラムソースコード１によるプログラムは、図４（ｂ）に示すプログラムソースコード２によるプログラムとの間でデータを受け渡しする場合には、グループ１（Ａ，Ｂ）を受け渡しするコードによるプログラムが機能することになる。また、プログラムソースコード１によるプログラムは、図４（ｄ）に示すプログラムソースコード４によるプログラムとの間でデータを受け渡しする場合には、グループ２（Ｃ，Ｄ，Ｅ）とグループ３（Ｂ，Ｃ，Ｄ）を受け渡しするコードによるプログラムが機能することになる。また、図４（ｄ）に示すプログラムソースコード４によるプログラムは、図４（ｃ）に示すプログラムソースコード３によるプログラムとの間でデータを受け渡しする場合には、グループ３（Ｂ，Ｃ，Ｄ）を受け渡しするコードによるプログラムが機能することになる。
【００３９】
このようにして、プログラムソースコード自動生成部２０は、例えば図３に示すデータ構造の定義ファイル２２を参照することで、図４に示すような関係で共通なデータを受け渡しするための複数のプログラムソースコードを自動生成することができる。従って、データ項目の定義において生成するプログラムソースコードファイルの数が多かったり、さらにデータを受け渡しするプログラム間の関係が複雑なものであったりした場合であっても、誤り無くプログラムソースコードを生成することができる。プログラムソースコード自動生成部２０を用いることで、人手によるソースコードを作成するプログラミング作業を排除することができるので、人為的修正誤りを無くし、作業に要していた手間を大幅に削減することが可能となる。
【００４０】
次に、互いに共通なデータを受け渡しするためのプログラムソースコードの具体例について説明する。
図６は、図３に示すデータ項目の定義ファイル２２に該当する定義内容の具体例を示す図、図７及び図８は、図６に示すデータ項目の定義ファイル２２の定義に応じてプログラムソースコード自動生成部２０によって生成されるプログラムソースコードファイル１の具体例を示す図、図９は同様にして生成されるプログラムソースコード２の具体例を示す図、図１０はプログラムソースコード３の具体例を示す図、図１１及び図１２はプログラムソースコード４の具体例を示す図である。
【００４１】
図６に示す例では、データ項目の定義ファイル２２において、３つのグループ１，２，３が含まれていることが先頭行「＜ｄａｔａＣｌａｓｓ　ｓｅｃｔｉｏｎ＝”ｇｒｏｕｐ１　ｇｒｏｕｐ２　ｇｒｏｕｐ３”＞」の記述によって定義されている。
また、図６（１）〜（５）には、各グループで定義される要素Ａ，Ｂ，Ｃ，Ｄ，Ｅについての定義が記述されている。
【００４２】
例えば、図６（１）の「要素Ａ」については「＜ｔｙｐｅ＞ｌｏｎｇ＜／ｔｙｐｅ＞」の記述にあるように、「ｌｏｎｇ」サイズ（例えば、４ｂｙｔｅ）のデータであることが定義されている。同様にして、図６（２）の「要素Ｂ」については「＜ｔｙｐｅ＞Ｓｈｏｒｔ＜／ｔｙｐｅ＞」の記述から「Ｓｈｏｒｔ」サイズ（例えば、２ｂｙｔｅ）のデータであり、図６（３）の「要素Ｃ」については、「＜ｔｙｐｅ＞ｃｈａｒ＜／ｔｙｐｅ＞」の記述から文字のデータであり、図６（４）の「要素Ｄ」については、「＜ｔｙｐｅ＞Ｓｔｒｉｎｇ＜／ｔｙｐｅ＞」の記述から文字列のデータであり、図６（５）の「要素Ｅ」については「＜ｔｙｐｅ＞ｌｏｎｇ＜／ｔｙｐｅ＞」の記述から「ｌｏｎｇ」サイズのデータであることがそれぞれ定義されている。
【００４３】
また、各要素Ａ〜Ｅの定義において、それぞれの要素を含むグループが定義されている。
例えば、図６（１）の「要素Ａ」の定義では、「＜ｍｅｍｂｅｒ　ｓｅｃｔｉｏｎ＝”ｇｒｏｕｐ１”＞」の記述によって、要素Ａがグループ１に含まれていることを表している。同様にして、図６（２）の「要素Ｂ」の定義では要素Ｂがグループ１，３、図６（３）の「要素Ｃ」の定義では要素Ｃがグループ２，３、図６（４）の「要素Ｄ」の定義では要素Ｄがグループ２，３、図６（５）の「要素Ｅ」の定義では要素Ｅがグループ２に含まれていることをそれぞれ表している（図３参照）。
【００４４】
また、図６（６）には各プログラムソースコードが持つグループの定義が記述されている。
例えば、プログラムソースコード１（ｃｏｄｅ１）については、「＜ｃｏｄｅ　ｇｒｏｕｐ＝”ｇｒｏｕｐ１　ｇｒｏｕｐ２　ｇｒｏｕｐ３”＞ｃｏｄｅ１＜／ｃｏｄｅ＞」の記述にあるように、３つのグループ（ｇｒｏｕｐ１、ｇｒｏｕｐ２、ｇｒｏｕｐ３）を持つことが定義されている。同様にして、プログラムソースコード２（ｃｏｄｅ２）については、「＜ｃｏｄｅ　ｇｒｏｕｐ＝”ｇｒｏｕｐ１”＞ｃｏｄｅ２＜／ｃｏｄｅ＞」の記述により１つのグループ（ｇｒｏｕｐ１）、プログラムソースコード３（ｃｏｄｅ３）については、「＜ｃｏｄｅ　ｇｒｏｕｐ＝”ｇｒｏｕｐ３”＞ｃｏｄｅ３＜／ｃｏｄｅ＞」の記述により１つのグループ（ｇｒｏｕｐ３）、プログラムソースコード４（ｃｏｄｅ４）については、「＜ｃｏｄｅ　ｇｒｏｕｐ＝”ｇｒｏｕｐ２　ｇｒｏｕｐ３”＞ｃｏｄｅ４＜／ｃｏｄｅ＞」の記述により２つのグループ（ｇｒｏｕｐ２、ｇｒｏｕｐ３）をも持つことがそれぞれ定義されている。
【００４５】
プログラムソースコード自動生成部２０は、図６に示す定義ファイル２２の記述に対して、全てのグループ１，２，３のデータを受け渡しできるプログラムソースコード１については、図７及び図８に示すようなプログラムソースコードファイル２４を生成する。
【００４６】
図７及び図８に示すプログラムソースコードファイル２４では、（１）（２）に示すグループ１（要素Ａ，Ｂ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。同様にして、（３）（４）に示すグループ２（要素Ｃ，Ｄ，Ｅ）のデータに対するシリアライズ及びストラクチャのプログラムソースコード、（５）（６）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【００４７】
さらに、（１）に示すグループ１（要素Ａ，Ｂ）のデータに対するシリアライズのプログラムソースコードには、要素Ａのデータに対するソースコード（１１）と要素Ｂのデータに対するソースコード（１２）が含まれている。
【００４８】
例えば、ソースコード（１１）には、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、要素Ａのデータを、要素Ａのデータ分のデータサイズを確保して格納し（「ｍｅｍｃｐｙ…」の行の記述）、スタックの次にデータを格納する位置を要素Ａのデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。
【００４９】
また、ソースコード（１２）には、同様にして、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、要素Ｂのデータを、要素Ｂのデータ分のデータサイズを確保して格納し（「ｍｅｍｃｐｙ…」の行の記述）、スタックの次にデータを格納する位置を要素Ｂのデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。
【００５０】
一方、（１）のシリアライズに対応するストラクチャのプログラムソースコード（２）には、要素Ａのデータに対するソースコード（２１）と要素Ｂのデータに対するソースコード（２２）が含まれている。
【００５１】
ソースコード（２１）には、要素Ａに対するシリアライズのプログラムソースコード（１１）の記述とは逆の手順で、スタックからデータを読み出して要素Ａのデータとし、同様にしてソースコード（２２）には、要素Ｂに対するシリアライズのプログラムソースコード（１２）の記述とは逆の手順でスタックからデータを読み出して要素Ｂのデータとするプログラムソースコードが含まれている。
【００５２】
また、（３）に示すグループ２（要素Ｃ，Ｄ，Ｅ）のデータに対するシリアライズのプログラムソースコードには、要素Ｃのデータに対するソースコード（３１）と要素Ｄのデータに対するソースコード（３２）と要素Ｅのデータに対するソースコード（３３）とが含まれている。
【００５３】
例えば、ソースコード（３１）には、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、要素Ｃのデータを、要素Ｃのデータ分のデータサイズを確保して格納し（「ｍｅｍｃｐｙ…」の行の記述）、スタックの次にデータを格納する位置を要素Ｃのデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。
【００５４】
また、ソースコード（３２）には、要素Ｄのデータ（文字列）の長さを定義し（「ｓｉｚｅ＝…」の行の記述）、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、定義した要素Ｄのデータの長さを示すデータ（「ｓｉｚｅ」）を、このデータ分を確保して格納し（「ｍｅｍｃｐｙ（＆ｓｔａｃｋ…ｓｉｚｅｏｆ（ｓｉｚｅ）」の行の記述）、スタックの次にデータを格納する位置を要素Ｄのデータの長さを示すデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。すなわち、要素Ｂのデータをスタックに格納する前に、要素Ｂのデータ（文字列）の長さを示すデータを格納するためのソースコードを生成している。次に、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、要素Ｄのデータを、要素Ｄのデータ分のデータサイズを確保して格納し（「ｍｅｍｃｐｙ（＆ｓｔａｃｋ…ｓｉｚｅ）」の行の記述）、スタックの次にデータを格納する位置を要素Ｄのデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。
【００５５】
また、ソースコード（３３）には、「ｓｔａｃｋ［ｃｏｕｎｔ］」によって示すスタック位置に、要素Ｅのデータを、要素Ｅのデータ分のデータサイズを確保して格納し（「ｍｅｍｃｐｙ…」の行の記述）、スタックの次にデータを格納する位置を要素Ｅのデータ分更新する（「ｃｏｕｎｔ＝…」の行の記述）ことを表すソースコードが含まれている。
【００５６】
一方、（３）のシリアライズに対応するストラクチャのプログラムソースコード（４）には、要素Ｃのデータに対するソースコード（４１）と要素Ｄのデータに対するソースコード（４２）と要素Ｅのデータに対するソースコード（４３）とが含まれている。
【００５７】
ソースコード（４１）には、要素Ｃに対するシリアライズのプログラムソースコード（３１）の記述とは逆の手順で、スタックからデータを読み出して要素Ｃのデータとし、同様にしてソースコード（４２）には、要素Ｄに対するシリアライズのプログラムソースコード（３２）の記述とは逆の手順でスタックからデータを読み出して要素Ｄのデータとし、ソースコード（４３）には、要素Ｅに対するシリアライズのプログラムソースコード（３３）の記述とは逆の手順でスタックからデータを読み出して要素Ｅのデータとするプログラムソースコードが含まれている。要素Ｄのデータについては、先に要素Ｄのデータ（文字列）の長さを示すデータを読み出し、このデータに従う長さのデータを読み出している。
【００５８】
同様にして、（５）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するシリアライズのプログラムソースコードには、要素Ｂのデータに対するソースコード（５１）と要素Ｃのデータに対するソースコード（５２）と要素Ｄのデータに対するソースコード（５３）とが含まれている。
【００５９】
また、（６）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するストラクチャのプログラムソースコードには、要素Ｂのデータに対するソースコード（６１）と要素Ｃのデータに対するソースコード（６２）と要素Ｄのデータに対するソースコード（６３）とが含まれている。なお、それぞれの要素Ｂ，Ｃ，Ｄに対する記述は前述と同じであるので説明を省略する。
【００６０】
このようにして、図６に示すような内容を持つデータ項目の定義ファイル２２を用意することで、この定義ファイル２２で定義された内容に従って、グループ１，２，３を含むプログラムソースコード１については、図７及び図８に示すような互いに共通なデータを受け渡しするためのプログラムソースコードファイル２４を自動生成することができる。
【００６１】
また、プログラムソースコード自動生成部２０は、図６に示す定義ファイル２２の記述に対して、グループ１のデータを受け渡しできるプログラムソースコード２については、図９に示すようなプログラムソースコードファイル２４を生成する。
【００６２】
図９に示すプログラムソースコードファイル２４では、（１）（２）に示すグループ１（要素Ａ，Ｂ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【００６３】
さらに、（１）に示すグループ１（要素Ａ，Ｂ）のデータに対するシリアライズのプログラムソースコードには、要素Ａのデータに対するソースコード（１１）と要素Ｂのデータに対するソースコード（１２）が含まれ、（２）に示すグループ１（要素Ａ，Ｂ）のデータに対するストラクチャのプログラムソースコードには、要素Ａのデータに対するソースコード（２１）と要素Ｂのデータに対するソースコード（２２）が含まれている。なお、各要素に対する記述内容については、前述した図７（１）（２）に示す場合と同じであるので説明を省略する。
【００６４】
また、プログラムソースコード自動生成部２０は、図６に示す定義ファイル２２の記述に対して、グループ３のデータを受け渡しできるプログラムソースコード３については、図１０に示すようなプログラムソースコードファイル２４を生成する。
【００６５】
図１０に示すプログラムソースコードファイル２４では、（１）（２）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードが含まれている。
【００６６】
さらに、（１）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するシリアライズのプログラムソースコードには、要素Ｂのデータに対するソースコード（１１）と要素Ｃのデータに対するソースコード（１２）と要素Ｄのデータに対するソースコード（１３）とが含まれ、（２）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するストラクチャのプログラムソースコードには、要素Ｂのデータに対するソースコード（２１）と要素Ｃのデータに対するソースコード（２２）と要素Ｄのデータに対するソースコード（２３）が含まれている。なお、各要素に対する記述内容については、前述した図８（５）（６）に示す場合と同じであるので説明を省略する。
【００６７】
また、プログラムソースコード自動生成部２０は、図６に示す定義ファイル２２の記述に対して、グループ２，３のデータを受け渡しできるプログラムソースコード４については、図１１及び図１２に示すようなプログラムソースコードファイル２４を生成する。
【００６８】
図１１及び図１２に示すプログラムソースコードファイル２４では、（１）（２）に示すグループ２（要素Ｃ，Ｄ，Ｅ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードと、（３）（４）に示すグループ３（要素Ｂ，Ｃ，Ｄ）のデータに対するシリアライズ及びストラクチャのプログラムソースコードとが含まれている。なお、図１１及び図１２に示す（１）〜（４）の各要素の記述については前述と同じであるので説明を省略する。
【００６９】
なお、図６に示す定義ファイル２２における要素の記述は一例であって、様々な形式による記述が可能である。プログラムソースコード自動生成部２０は、それらの様々な記述による定義に応じた、互いに共通なデータを受け渡しするための例えばシリアライズ及びストラクチャするためのプログラムソースコードを生成する機能が設けられる。
【００７０】
なお、データ項目の定義ファイル２２に記述された定義の内容が変更が必要な場合には、定義ファイル変更部１６によって変更することができる。定義ファイル２２による定義を変更してしまえば、前述したようにプログラムソースコード自動生成部２０を実行させることで、変更されたデータ項目の定義ファイル２２に応じたプログラムソースコードファイル２４を簡単に自動生成することができる。
【００７１】
また、プログラムソースコードのプログラミング言語を変更する必要がある場合、ソースコード処理部１０に用意されている複数のプログラムソースコード自動生成部２０ａ，２０ｂ…のうち、この変更後のプログラミング言語に対応しているプログラムソースコード自動生成部２０が実行されるように、変更部１８によって変更する。これにより、プログラミング言語を変更する場合であっても簡単に対応することができる。
【００７２】
なお、前述した説明では、データ項目の定義ファイル２２をもとにプログラムソースコードファイル２４を生成するものとして説明しているが、データ項目を定義するために作成された専用のファイルではなく、データ項目を表していれはば他のデータを参照して、プログラムソースコードファイル２４を生成するように構成することもできる。
【００７３】
また、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フレキシブルディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【００７４】
また、本願発明は、前述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００７５】
【発明の効果】
以上詳述したように本発明によれば、互いに共通なデータを受け渡しする単位となるグループと、生成対象とするプログラムソースコードが持つグループが定義された情報を参照し、この情報に定義された生成対象とするプログラムソースコードについて、このプログラムソースコードが持つグループに含まれる要素をもとに、データを受け渡しするためのプログラムソースコードを生成し、この生成されたプログラムソースコードをまとめて、グループが定義された生成対象とするプログラムソースコードを生成することにより、互いに共通データを受け渡しする機能を実現するためのプログラムソースコードの生成に要する労力を軽減することが可能となる。
【図面の簡単な説明】
【図１】本実施形態に係わるプログラムソースコード生成方法を実現するための機能構成を示すブロック図。
【図２】本実施形態におけるプログラムソースコード作成の動作について説明するためのフローチャート。
【図３】データ項目の定義ファイル２２の定義内容の一例と、この定義ファイル２２をもとに生成される複数のプログラムソースコードの一例を示す図。
【図４】図３に示すデータ項目の定義ファイル２２の定義内容に応じて作成されたプログラムソースコード１，２，３，４の互いに共通なデータを受け渡しする関係を示す図。
【図５】プログラムソースコード１，２，３，４のそれぞれが扱えるグループと要素の関係を示す図。
【図６】図３に示すデータ項目の定義ファイル２２に該当する定義内容の具体例を示す図。
【図７】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコードファイル１の具体例を示す図。
【図８】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコードファイル１の具体例を示す図。
【図９】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコード２の具体例を示す図。
【図１０】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコード３の具体例を示す図。
【図１１】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコード４の具体例を示す図。
【図１２】図６に示すデータ項目の定義ファイル２２の定義に応じて生成されるプログラムソースコード４の具体例を示す図。
【符号の説明】
１０…ソースコード処理部
１２…定義ファイル記憶部
１４…ソースコードファイル記憶部
１６…定義ファイル変更部
１８…変更部
２０…プログラムソースコード自動生成部
２２…データ項目の定義ファイル
２４…プログラムソースコードファイル
【図１】
2004038507.tif 000003
【図２】
2004038507.tif 000004
【図３】
2004038507.tif 000005
【図４】
2004038507.tif 000006
【図５】
2004038507.tif 000007
【図６】
2004038507.tif 000008
【図７】
2004038507.tif 000009
【図８】
2004038507.tif 000010
【図９】
2004038507.tif 000011
【図１０】
2004038507.tif 000012
【図１１】
2004038507.tif 000013
【図１２】
2004038507.tif 000014