(57)【要約】【課題】  プログラムの構造変換内容を容易に変更できるようにする。【解決手段】  テンプレート２に挿入するデータの挿入条件と、テンプレート２に対するデータの挿入位置とが記述されている変換情報３を解析して、定義情報１からテンプレート２に挿入するデータを抽出するとともに、テンプレート２に対するデータの挿入位置を特定し、その定義情報１から抽出したデータを当該挿入位置に挿入する。これにより、データの挿入位置等を変更する必要が生じた場合、データ抽出部１４やデータ挿入部１５の処理内容を変更することなく、変換情報３を変更するだけで対処することができる。【選択図】        図１
2005266931.tif 000002
【特許請求の範囲】
【請求項１】
各種のデータが記述されている定義情報を入力する定義情報入力手段と、プログラムの雛形であるテンプレートに挿入するデータの挿入条件と当該テンプレートに対するデータの挿入位置が記述されている変換情報を入力する変換情報入力手段と、上記変換情報入力手段により入力された変換情報を解析して、上記定義情報入力手段により入力された定義情報からテンプレートに挿入するデータを抽出するデータ抽出手段と、上記変換情報入力手段により入力された変換情報を解析して、テンプレートに対するデータの挿入位置を特定し、上記データ抽出手段により抽出されたデータを当該挿入位置に挿入するデータ挿入手段とを備えたプログラム生成装置。
【請求項２】
各種のデータが記述されている定義情報を入力する定義情報入力手段と、プログラムの雛形であるテンプレートに対するデータの挿入位置が記述されている変換情報を入力する変換情報入力手段と、テンプレートに挿入するデータの挿入条件を記憶する記憶手段と、上記記憶手段に記憶されている挿入条件を解析して、上記定義情報入力手段により入力された定義情報からテンプレートに挿入するデータを抽出するデータ抽出手段と、上記変換情報入力手段により入力された変換情報を解析して、テンプレートに対するデータの挿入位置を特定し、上記データ抽出手段により抽出されたデータを当該挿入位置に挿入するデータ挿入手段とを備えたプログラム生成装置。
【請求項３】
定義情報入力手段により入力された定義情報が変更された場合、その定義情報に応じて変換情報を変更する変更手段を設けたことを特徴とする請求項１または請求項２記載のプログラム生成装置。
【請求項４】
変更手段は、変更前後の定義情報の相違部分を検出し、その相違部分に対応する変換情報の箇所を変更することを特徴とする請求項３記載のプログラム生成装置。
【請求項５】
変更手段は、データベースに登録されている編集パターンデータを参照して、変更前後の定義情報の相違部分を検出することを特徴とする請求項４記載のプログラム生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラムを自動的に生成するプログラム生成装置に関するものである。
【背景技術】
【０００２】
従来のプログラム生成装置は、データファイルから読み込まれるデータを所定のデータ構造に変換するデータ入力部と、そのデータ入力部により変換されたデータ構造とドキュメント構造情報とに基づいてドキュメントの整形を行うドキュメント整形部と、そのドキュメント整形部により整形されたドキュメントを所定の形式で出力するドキュメント出力部とを備えている。
【０００３】
なお、ドキュメント整形部は、ドキュメントの構造を示すドキュメント構造情報の他、ドキュメントの変換処理手順を記憶しており、ドキュメントの整形を行う際には、そのドキュメント構造情報を参照しながら変換処理手順を実行する。
したがって、ドキュメントの構造変換内容を変更する必要がある場合には、そのドキュメント構造情報と変換処理手順を変更する必要がある（例えば、特許文献１参照）。
【０００４】
【特許文献１】特許第２９９８６０６号公報（段落番号［００２８］から［００３５］、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のプログラム生成装置は以上のように構成されているので、ドキュメント構造情報と変換処理手順を変更すれば、ドキュメントの構造変換内容を変更することができる。しかし、ドキュメントの構造変換内容の一部を変更する場合でも、ドキュメント構造情報と変換処理手順の双方を確認して変更処理を実施しなければならず、変更処理に長時間を要するなどの課題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、プログラムの構造変換内容を容易に変更することができるプログラム生成装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るプログラム生成装置は、テンプレートに挿入するデータの挿入条件と、テンプレートに対するデータの挿入位置とが記述されている変換情報を解析して、定義情報からテンプレートに挿入するデータを抽出するとともに、テンプレートに対するデータの挿入位置を特定し、その定義情報から抽出したデータを当該挿入位置に挿入するようにしたものである。
【発明の効果】
【０００８】
この発明によれば、テンプレートに挿入するデータの挿入条件と、テンプレートに対するデータの挿入位置とが記述されている変換情報を解析して、定義情報からテンプレートに挿入するデータを抽出するとともに、テンプレートに対するデータの挿入位置を特定し、その定義情報から抽出したデータを当該挿入位置に挿入するように構成したので、プログラムの構造変換内容を容易に変更することができる効果がある。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１はこの発明の実施の形態１によるプログラム生成装置を示す構成図であり、図において、定義情報１にはプログラムの雛形であるテンプレート２の所定位置に挿入される各種のデータが記述されている。変換情報３にはテンプレート２に挿入するデータの挿入条件やテンプレート２に対するデータの挿入位置とが記述されている。
定義情報入力部１１は定義情報１を入力し、テンプレート入力部１２はテンプレート２を入力し、変換情報入力部１３は変換情報３を入力する。なお、定義情報入力部１１は定義情報入力手段を構成し、変換情報入力部１３は変換情報入力手段を構成している。
【００１０】
データ抽出部１４は変換情報入力部１３により入力された変換情報３を解析して、定義情報入力部１１により入力された定義情報１からテンプレート２に挿入するデータを抽出する。なお、データ抽出部１４はデータ抽出手段を構成している。
データ挿入部１５は変換情報入力部１３により入力された変換情報３を解析して、テンプレート２に対するデータの挿入位置を特定し、データ抽出部１４により抽出されたデータを当該挿入位置に挿入する。なお、データ挿入部１５はデータ挿入手段を構成している。
【００１１】
ここで、定義情報入力部１１、テンプレート入力部１２、変換情報入力部１３、データ抽出部１４及びデータ挿入部１５は、例えば、ＣＰＵなどの情報処理機能を有する演算装置などの専用のハードウェアを用いて構成してもよいが、プログラム生成装置がコンピュータから構成される場合には、定義情報入力部１１、テンプレート入力部１２、変換情報入力部１３、データ抽出部１４及びデータ挿入部１５の処理内容が記述されたプログラムをメモリに格納し、コンピュータのＣＰＵが当該プログラムを実行するようにしてもよい。
【００１２】
図２はこの発明の実施の形態１によるプログラム生成装置の処理内容を示すフローチャートである。
図３はテンプレート２に挿入されるデータ（例えば、ネットワークに接続されている全ての機器（以下、ノードという）、各ノードが送受信するメッセージの種類、各メッセージの内容などを示すデータ）がＸＭＬで記述されている定義情報１の一例を示す説明図である。
図４はプログラムの雛形であるテンプレート２の一例を示す説明図であり、そのテンプレート２はＸＭＬで記述され、関数定義funcDefinitionと関数の本体funcBodyを含むプログラムであるprogramBody と、そのprogramBody の中で行う各処理procの実体を集めて定義されたprocs とで構成されている。関数の本体funcBody内の処理procはprocs 内の一つのprocへの参照情報を有している。
【００１３】
図５はＸＭＬで記述されている構造変換記述言語の一例を示す説明図であり、図６は図５の構造変換記述言語で記述された変換情報３の一例を示す説明図である。
その変換情報３は、テンプレートに対するデータの挿入位置と挿入対象のデータを指定する関連付け情報と、その関連付け情報にしたがってデータを挿入する際の条件を記述している。
即ち、OUT_STRUCTURE 要素に含まれているOUT_ELEMENT 要素は、name属性に指定されるテンプレート２のデータと、source属性に指定される定義情報１又はテンプレート２のデータとを関連付けている。
また、OUT_CONDITIONS要素に含まれているOUT_CONDITION 要素は、match 属性に指定されるテンプレート２のデータに、定義情報１又はテンプレート２のデータを挿入する際の条件を記述している。
さらに、IN_CONDITIONS 要素に含まれているIN_CONDITION要素は、match 属性に指定される定義情報１の構造の条件を記述している。図中、INFILE: は定義情報１に記載のデータであることを示し、TEMPLATE: はテンプレート２に記載のデータであることを示している。
【００１４】
図７はプログラム生成装置により生成されるプログラムの一例を示す説明図であり、図７の例では、必要なメッセージを処理する通信関数のプログラムのソースコードを示している。
【００１５】
次に動作について説明する。
この実施の形態１のプログラム生成装置は、図６の変換情報３を解析して、図３の定義情報１から図４のテンプレート２の所定位置に挿入するデータを抽出し、そのデータをテンプレート２の所定位置に挿入することにより、図７のプログラムを生成するものである。
【００１６】
まず、定義情報入力部１１が図３の定義情報１を入力し（ステップＳＴ１）、テンプレート入力部１２が図４のテンプレート２を入力し（ステップＳＴ２）、変換情報入力部１３が図６の変換情報３を入力する（ステップＳＴ３）。
データ抽出部１４は、変換情報入力部１３により入力された変換情報３を解析して、定義情報入力部１１により入力された定義情報１からテンプレート２に挿入するデータを抽出する。
【００１７】
即ち、データ抽出部１４は、変換情報入力部１３により入力された変換情報３のうち、入力に関する条件を示す命令群IN_CONDITIONS に処理ポインタを移動する（ステップＳＴ４）。
そして、データ抽出部１４は、命令群IN_CONDITIONS において、最初の条件を記述しているIN_CONDITIONに処理ポインタを移動して（ステップＳＴ５）、そのIN_CONDITION命令を実行する（ステップＳＴ６）。
ここでは、IN_CONDITION命令のmatch 属性より、処理対象をINFILE（定義情報１）のnodes/node要素に指定している。
【００１８】
データ抽出部１４は、次の<!--で始まる行は単なるコメントであるため読み飛ばし、その次の行のscope 命令を実行することにより、処理対象のnodes/node要素の中から、@name （nodes/node要素のname属性）がnode1 である要素を処理対象として絞り込むようにする。
データ抽出部１４は、node1 である要素を処理対象として絞り込むと、定義情報１から当該要素に関する情報を抽出して中間入力ファイルに登録する（ステップＳＴ７）。
図３の例では、当該要素に関する情報として、上から４行目の<sendMessages>から第１１行目の</receiveMessages>までが中間入力ファイルに登録される。
【００１９】
データ抽出部１４は、次の命令がIN_CONDITIONであるか否かを判定し（ステップＳＴ８）、次の命令がIN_CONDITIONであれば、ステップＳＴ５の処理に戻り、次の命令がIN_CONDITIONでなければ、ステップＳＴ９の処理に移行する。
図６の変換情報３では、次の命令がIN_CONDITIONであるため、次のIN_CONDITIONに処理ポインタを移動して（ステップＳＴ５）、そのIN_CONDITION命令を実行する（ステップＳＴ６）。
ここでは、IN_CONDITION命令のmatch 属性より、処理対象を前のIN_CONDITION命令で絞り込まれたINFILE（定義情報１）の中のsendMessage 要素、もしくは、receiveMessage要素を処理対象として指定している。
【００２０】
データ抽出部１４は、次行のimport命令を実行することにより、INFILE（定義情報１）のmessages/message要素のうち、中間入力ファイルに登録されている情報（図３の４行目の<sendMessages>から１１行目の</receiveMessages>の情報）に対応する要素を特定する。
この例では、sendMessagesのnameがmsg11 とmsg12 である要素を特定し、receiveMessages のnameがmsg21 とmsg22 である要素を特定する。
したがって、データ抽出部１４は、これらの要素に関する情報として、図３の上から２５行目〜下から３行目までを中間入力ファイルに登録する。
【００２１】
データ抽出部１４は、次の命令がIN_CONDITIONであるか否かを判定し（ステップＳＴ８）、次の命令がIN_CONDITIONであれば、ステップＳＴ５の処理に戻り、次の命令がIN_CONDITIONでなければ、ステップＳＴ９の処理に移行する。
図６の変換情報３では、次の命令がIN_CONDITIONでないため、ステップＳＴ９の処理に移行する。
【００２２】
データ挿入部１５は、変換情報入力部１３により入力された変換情報３を解析して、テンプレート２に対するデータの挿入位置を特定し、データ抽出部１４により抽出されたデータ（中間入力ファイルに登録されている要素に関する情報）を当該挿入位置に挿入する。
即ち、データ挿入部１５は、変換情報入力部１３により入力された変換情報３のうち、出力構造を示す命令群OUT_STRUCTURE に処理ポインタを移動する（ステップＳＴ９）。
【００２３】
そして、データ挿入部１５は、命令群OUT_STRUCTURE において、出力構造を指定する最初のOUT_ELEMENT 命令に処理ポインタを移動して（ステップＳＴ１０）、そのOUT_ELEMENT 命令を実行する（ステップＳＴ１１）。
そのOUT_ELEMENT 命令を実行することにより、TEMPLATE（テンプレート２）のprogramBody 要素に相当するprogramBody 要素を生成し、そのprogramBody 要素を一時出力ファイルに格納する（ステップＳＴ１２）。
【００２４】
データ挿入部１５は、次の命令がOUT_ELEMENT であるか否かを判定し（ステップＳＴ１３）、次の命令がOUT_ELEMENT であれば、ステップＳＴ１０の処理に戻り、次の命令がOUT_ELEMENT でなければ、ステップＳＴ１４の処理に移行する。
図６の変換情報３では、次の命令がOUT_ELEMENT であるため、次のOUT_ELEMENT に処理ポインタを移動して（ステップＳＴ１０）、そのOUT_ELEMENT 命令を実行する（ステップＳＴ１１）。
そのOUT_ELEMENT 命令を実行することにより、TEMPLATE（テンプレート２）のfuncDefinition要素に相当するfuncDefinition要素を生成する。
この際、前回のOUT_ELEMENT 命令により生成されたprogramBody 要素が閉じられていないため、今回のOUT_ELEMENT 命令によるfuncDefinition要素は、programBody 要素の下位層の要素として生成される。
【００２５】
データ挿入部１５は、次のOUT_ELEMENT 命令では、programBody 要素の下位層の要素としてTEMPLATE（テンプレート２）のnodeId要素に相当するnodeId要素を生成する。
この際、nodeId要素は、INFILE（定義情報１）のnode要素の@name(name属性）と関係付けられる。また、この命令では、記述の最後が/>となっているため、nodeId要素は、ここで閉じられて更に下の階層の要素を含むことはない。
【００２６】
データ挿入部１５は、次の</OUT_ELEMENT>命令では、閉じられていない直前の要素であるfuncDefinition要素を閉じ、新たな要素をfuncDefinition要素の下位に生成しないようにする。
次のOUT_ELEMENT 命令では、TEMPLATE（テンプレート２）のfuncBody要素に相当するfuncBody要素を生成する。
次のOUT_ELEMENT 命令では、funcBody要素の下位層にTEMPLATE（テンプレート２）のmodule要素に相当するmodule要素を生成する。
次のOUT_ELEMENT 命令では、module要素の下位層にTEMPLATE（テンプレート２）のproc要素に相当するproc要素を生成し、TEMPLATE（テンプレート２）のprocs 要素の下のproc要素を関連付ける。
次の</OUT_ELEMENT>命令では、閉じられていない直前の要素であるmodule要素を閉じ、次の</OUT_ELEMENT>命令では、閉じられていない直前の要素であるfuncBody要素を閉じ、最後の</OUT_ELEMENT>命令では、閉じられていない直前の要素であるprogramBody 要素を閉じる。
データ挿入部１５は、これで全てのOUT_ELEMENT 命令の実行を終了したため、ステップＳＴ１４の処理に移行する。
【００２７】
データ挿入部１５は、変換情報入力部１３により入力された変換情報３のうち、プログラムを最終的に生成する際の条件を示す命令群OUT_CONDITIONSに処理ポインタを移動する（ステップＳＴ１４）。
OUT_CONDITIONS以下の処理では、変換情報３における各命令のTEMPLATEはステップＳＴ９からステップＳＴ１３で生成された一時出力ファイルを対象とし、INFILEはステップＳＴ１からステップＳＴ８で生成された中間入力ファイルを対象とする。
【００２８】
データ挿入部１５は、最初のOUT_CONDITION 命令に処理ポインタを移動し（ステップＳＴ１５）、そのOUT_CONDITION 命令を実行する（ステップＳＴ１６）。
そのOUT_CONDITION 命令を実行することにより、一時出力ファイルのprogramBody 要素の下のfuncDefinition要素の下のnodeId要素を、中間入力ファイルのnode要素の@name（name 属性）に置換する。この置換は、３番目のOUT_ELEMENT 命令により関連付けられている要素間の操作のため正しく処理される。
データ挿入部１５は、次のｉｍｐｏｒｔ命令を実行することにより、一時出力ファイルのfuncBody要素の下のmodule要素を対象として、中間入力ファイルのsendMessage 要素もしくはreceiveMessage要素ごとに、funcBody要素の下を対象としているmodule要素を生成し、一時出力ファイルに出力する（ステップＳＴ１７）。
【００２９】
データ挿入部１５は、次の命令がOUT_CONDITION であるか否かを判定し（ステップＳＴ１８）、次の命令がOUT_CONDITION であれば、ステップＳＴ１５の処理に戻り、次の命令がOUT_CONDITION でなければ、一連の処理を終了する。
図６の変換情報３では、次の命令がOUT_CONDITION であるため、次のOUT_CONDITION に処理ポインタを移動して（ステップＳＴ１５）、そのOUT_CONDITION 命令を実行する（ステップＳＴ１６）。
【００３０】
データ挿入部１５は、次のOUT_CONDITION 命令を実行することにより、一時出力ファイルの各funcBody/module/proc要素を、ステップＳＴ９からステップＳＴ１３で関連付けられたテンプレート２のprocs/proc要素のうち、@id （id属性）が@idref（idref 属性）と同じ要素で置換する。
次のOUT_CONDITION 命令では、上記命令でprocs/proc要素に置換された各funcBody/module/proc要素の下のdata要素に対して、中間入力ファイルのmessages/message要素で、@name （name属性）が現在対象としている一時出力ファイルのproc要素を含む上位の要素の持つmessage 要素の@name （name属性）と同じmessage 要素のdata/value要素を代入する。
次のOUT_CONDITION 命令では、上記命令でprocs/proc要素に置換された各funcBody/module/proc要素の下のmessage 要素に対して、中間入力ファイルのmessages/message要素で、@name （name属性）が現在対象としている一時出力ファイルのproc/message要素の@name （name属性）と同じmessage 要素の@name （name属性）を代入する。
【００３１】
データ挿入部１５は、全てのOUT_CONDITION 命令の実行を終了すると、最終的な一時出力ファイルから、ＸＭＬ要素ノードの情報を取り除いて、テキストノードのみを抜き出すことにより、図７に示すようなプログラムのソースコードを生成する。
【００３２】
以上で明らかなように、この実施の形態１によれば、テンプレート２に挿入するデータの挿入条件と、テンプレート２に対するデータの挿入位置とが記述されている変換情報３を解析して、定義情報１からテンプレート２に挿入するデータを抽出するとともに、テンプレート２に対するデータの挿入位置を特定し、その定義情報１から抽出したデータを当該挿入位置に挿入するように構成したので、テンプレート２に対するデータの挿入位置や、テンプレート２に挿入するデータの挿入条件を変更する必要が生じた場合、データ抽出部１４やデータ挿入部１５の処理内容を変更することなく、変換情報３を変更するだけで対処することができるようになり、その結果、プログラムの構造変換内容を容易に変更することができる効果を奏する。
【００３３】
実施の形態２．
図８はこの発明の実施の形態２によるプログラム生成装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
変換情報４にはテンプレート２に対するデータの挿入位置や挿入条件のうち変更されている可能性のあるものが記述されており、データの挿入位置や挿入条件のうち変更されることがないとわかっているものはメモリ１６である記憶手段に記憶されている。
【００３４】
上記実施の形態１では、変換情報入力部１３がテンプレート２に挿入するデータの挿入条件やテンプレート２に対するデータの挿入位置とが記述されている変換情報３を入力するものについて示したが、変換情報入力部１３が入力する変換情報４にはテンプレート２に対するデータの挿入位置だけが記述され、テンプレート２に挿入するデータの挿入条件はメモリ１６から取得するようにしてもよい。
【００３５】
この場合、テンプレート２に挿入するデータの挿入条件は変更することなく固定的に利用されることになるが、テンプレート２に対するデータの挿入位置のみを変更する必要がある場合、テンプレート２に挿入するデータの挿入条件を確認することなく変換情報４を変更することができるため、プログラムの構造変換内容を更に容易に変更することができる効果を奏する。
【００３６】
実施の形態３．
図９はこの発明の実施の形態３によるプログラム生成装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
データベース１７は予め編集パターンデータを登録している。
変換情報変更部１８は定義情報入力部１１により入力された定義情報が変更された場合、データベース１７に登録されている編集パターンデータを参照して、変更前後の定義情報の相違部分を検出し、その相違部分に対応する変換情報３の箇所を変更する。なお、変換情報変更部１８は変更手段を構成している。
【００３７】
図１０はこの発明の実施の形態３によるプログラム生成装置の変換情報変更部１８の処理内容を示すフローチャートである。
図１１は変更後の定義情報１を示す説明図であり、図１２は変更前の定義情報１と変更後の定義情報１との相違部分を示す説明図である。
また、図１３はデータベース１７に登録されている編集パターンデータを示す説明図であり、編集パターンデータは、編集前のデータと編集後のデータとの対応関係を示している。
図１４は変換情報変更部１８による相違部分の検出結果を示す説明図であり、図１５は変更後の変換情報３を示す説明図である。
【００３８】
上記実施の形態１では、ユーザが変換情報３を変更すれば、テンプレート２に対するデータの挿入位置や、テンプレート２に挿入するデータの挿入条件を変更することが可能であるものについて示したが、定義情報１が変更された場合、変換情報変更部１８が変更前後の定義情報の相違部分を検出し、その相違部分に応じて変換情報３を自動的に変更するようにしてもよい。
具体的には下記の通りである。
【００３９】
まず、変換情報変更部１８は、定義情報入力部１１により入力された変更前の定義情報１である旧定義情報（図３の定義情報）を読み込んだのち（ステップＳＴ２１）、定義情報入力部１１により入力された変更後の定義情報１である新定義情報（図１１の定義情報）を読み込み（ステップＳＴ２２）、これらの定義情報１をＸＭＬの要素毎に比較して、ＸＭＬの構造に関する相違を検出する（ステップＳＴ２３）。
ただし、ＸＭＬの構造に関する相違を検出する際、属性値やテキストノードの内容など、ＸＭＬの構造に無関係な相違は無視する。
変換情報変更部１８は、ＸＭＬ構造の相違に関する情報として、図１２に示すような定義構造差分を生成する（ステップＳＴ２４）。図１２ではＸＭＬ構造の相違を分かりやすくするために表形式で示しているが、変換情報変更部１８が実際に生成する定義構造差分のファイルは他の形式でもかまわない。
【００４０】
次に、変換情報変更部１８は、変換情報入力部１３により入力された変換情報３の読み込みを行う（ステップＳＴ２５）。
そして、変換情報変更部１８は、データベース１７に登録されている編集パターンデータを参照して、旧定義情報（変更前の定義情報１）と新定義情報（変更後の定義情報１）の相違部分を検出し（ステップＳＴ２６）、その相違部分に対応する変換情報３の箇所を変更する（ステップＳＴ２７）。
【００４１】
即ち、変換情報変更部１８は、図１２に示すような旧定義情報と新定義情報の総当りの組み合わせと、データベース１７に登録されている図１３の編集パターンデータとを比較し、旧定義情報と新定義情報の組み合わせの中から、データベース１７に登録されている編集パターンデータと一致している組み合わせを検索する。
変換情報変更部１８は、編集パターンデータと一致している組み合わせは、対応関係のある旧定義情報と新定義情報であると認定する。
【００４２】
図１２の例では、下記の組み合わせが、編集パターンデータ（@name、@id）を利用して、旧定義情報における@nameを@idに置き換えると新定義情報と一致するので、対応関係のある旧定義情報と新定義情報であると認定する（図１４を参照）。
対応関係のある組み合わせ（１）
旧定義情報  →  network/nodes/node/sedMessages/sendMessage/@name
新定義情報  →  network/nodes/node/sedMessages/sendMessage/@id
対応関係のある組み合わせ（２）
旧定義情報  →  network/nodes/node/receiveMessages/receiveMessage/@name
新定義情報  →  network/nodes/node/receiveMessages/receiveMessage/@id
【００４３】
また、図１２の例では、下記の組み合わせが、編集パターンデータ（@name、id）を利用して、旧定義情報における@nameをidに置き換えると新定義情報と一致するので、対応関係のある旧定義情報と新定義情報であると認定する。
対応関係のある組み合わせ（３）
旧定義情報  →  messages/message/@name
新定義情報  →  messages/message/id
【００４４】
なお、図１２の例における下記の新定義情報は、どの編集パターンデータを利用しても、その新定義情報と対応している旧定義情報が検出されない。
新定義情報  →  messages/message/sender
【００４５】
変換情報変更部１８は、上記のようにして、対応関係のある旧定義情報と新定義情報を検出すると、即ち、旧定義情報と新定義情報の相違部分を検出すると、その相違部分に対応する変換情報３の箇所を変更する。
例えば、図６の変換情報３の２５行目では、messages/message要素の@name はid要素に変換され、同じ行のCURRENT:@name はsendMessasgeもしくはreceiveMessageの@name であるため@id に変更される（図１５を参照）。
同様に、２８行目では、messages/message要素の@name はid要素に変換され、同じ行のCURRENT:@name はsendMessasgeもしくはreceiveMessageの@name であるため@id に変更される（図１５を参照）。
同様に、３７行目では、messages/message要素の@name はid要素に変換され、同じ行のCURRENT:@name はsendMessasgeもしくはreceiveMessageの@name であるため@id に変更される（図１５を参照）。
【００４６】
以上で明らかなように、この実施の形態３によれば、定義情報入力部１１により入力された定義情報が変更された場合、データベース１７に登録されている編集パターンデータを参照して、変更前後の定義情報の相違部分を検出し、その相違部分に対応する変換情報３の箇所を変更するように構成したので、変換情報３を自動的に変更することができる効果を奏する。
【図面の簡単な説明】
【００４７】
【図１】この発明の実施の形態１によるプログラム生成装置を示す構成図である。
【図２】この発明の実施の形態１によるプログラム生成装置の処理内容を示すフローチャートである。
【図３】テンプレートに挿入されるデータがＸＭＬで記述されている定義情報の一例を示す説明図である。
【図４】プログラムの雛形であるテンプレートの一例を示す説明図である。
【図５】ＸＭＬで記述されている構造変換記述言語の一例を示す説明図である。
【図６】図５の構造変換記述言語で記述された変換情報の一例を示す説明図である。
【図７】プログラム生成装置により生成されるプログラムの一例を示す説明図である。
【図８】この発明の実施の形態２によるプログラム生成装置を示す構成図である。
【図９】この発明の実施の形態３によるプログラム生成装置を示す構成図である。
【図１０】この発明の実施の形態３によるプログラム生成装置の変換情報変更部の処理内容を示すフローチャートである。
【図１１】変更後の定義情報を示す説明図である。
【図１２】変更前の定義情報と変更後の定義情報との相違部分を示す説明図である。
【図１３】データベースに登録されている編集パターンデータを示す説明図である。
【図１４】変換情報変更部による相違部分の検出結果を示す説明図である。
【図１５】変更後の変換情報を示す説明図である。
【符号の説明】
【００４８】
１  定義情報、２  テンプレート、３  変換情報、１１  定義情報入力部（定義情報入力手段）、１２  テンプレート入力部、１３  変換情報入力部（変換情報入力手段）、
１４  データ抽出部（データ抽出手段）、１５  データ挿入部（データ挿入手段）。
【図１】
2005266931.tif 000003
【図２】
2005266931.tif 000004
【図３】
2005266931.tif 000005
【図４】
2005266931.tif 000006
【図５】
2005266931.tif 000007
【図６】
2005266931.tif 000008
【図７】
2005266931.tif 000009
【図８】
2005266931.tif 000010
【図９】
2005266931.tif 000011
【図１０】
2005266931.tif 000012
【図１１】
2005266931.tif 000013
【図１２】
2005266931.tif 000014
【図１３】
2005266931.tif 000015
【図１４】
2005266931.tif 000016
【図１５】
2005266931.tif 000017