(57)【要約】  手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する。  ソースコード取得部（１１）は、手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得する。処理ブロック生成部（１２）は、取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する。ポート設定部（１３）は、生成された処理ブロック群のうち、注目する変数を最初に扱う命令が実行されてから注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定する。ポート接続部（１４）は、設定された入力ポートと出力ポートとを接続する。
2015141150.tif 000002
【特許請求の範囲】
【請求項１】
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段と、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段と、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段と、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段と、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段と、を備える、
ソースコード生成装置。
【請求項２】
前記ソースコード取得手段により取得されたソースコードに記述された命令群の中から、前記命令群の実行順に従って、注目する命令を選択する命令選択手段をさらに備え、
前記処理ブロック生成手段は、前記注目する命令に対応付けられた注目する処理ブロックを生成し、
前記ポート設定手段は、前記注目する命令が前記少なくとも１つの変数のうちのいずれかの変数を扱う場合、前記扱う変数を前記注目する変数として、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとのうち、設定済みでない入力ポートと出力ポートとを新たに設定し、
前記ポート接続手段は、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群の間で、前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により新たに設定された入力ポートと出力ポートとを接続し、
前記命令選択手段は、前記注目する命令に対して、前記処理ブロック生成手段と前記ポート設定手段と前記ポート接続手段とによる処理が完了した後、前記命令群の実行順に従って次の命令を選択する、
請求項１に記載のソースコード生成装置。
【請求項３】
前記処理ブロック生成手段は、前記注目する命令がループ処理に関わる命令群の一部であると判別した場合、前記ループ処理に関わる他の命令群の内容に基づいて、前記注目する命令に対応付けられた処理ブロックを生成する、
請求項２に記載のソースコード生成装置。
【請求項４】
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得し、
前記取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成し、
前記生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定し、
前記注目する変数により参照されるデータが伝達されるように、前記設定された入力ポートと出力ポートとを接続し、
前記注目する変数に対する前記入力ポートと出力ポートとの設定と前記入力ポートと出力ポートとの接続とが、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する、
ソースコード生成方法。
【請求項５】
コンピュータを、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段、として機能させる、
プログラムを格納する、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード生成装置、ソースコード生成方法、及び、記録媒体に関する。
【背景技術】
【０００２】
システム開発などで用いられるプログラミング言語や開発ツールは、時代の変遷とともに切り替えられることが一般的である。例えば、当初のプログラミング言語よりも開発効率のよい新たなプログラミング言語が開発された場合、以後、新たなプログラミング言語がシステム開発で用いられる。一方、システムのメンテナンス性などを考慮すると、システム内に、異なるプログラミング言語により開発されたモジュールが混在することは好ましくない。【０００３】
従って、例えば、既存のモジュールに、新たなプログラミング言語で開発された新たなモジュールを追加する場合、既存のモジュールを新たなプログラミング言語で再構築することが望ましい。このような場合、当初のプログラミング言語で記述されたソースコードに基づいて、新たなプログラミング言語で記述されたソースコードを生成する技術が望まれる。例えば、特許文献１には、第１のプログラミング言語で記述されたソースコードを、第２のプログラミング言語で記述されたソースコードに変換するソースコード変換装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１４０４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現在、データ処理システムの分野では、手続き型プログラミング言語で開発されたモジュールを、ＥＴＬ（Extract Transform Load）ツール用のプログラミング言語で再構築する動きが高まっている。しかしながら、特許文献１に開示されたソースコード変換装置は、ある手続き型プログラミング言語で記述されたソースコードを、他の手続き型プログラミング言語で記述されたソースコードに変換する装置である。従って、特許文献１に開示されたソースコード変換装置では、手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成することはできなかった。このため、手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成することが可能な技術が望まれている。【０００６】
本発明は、上記問題に鑑みてなされたものであり、手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するのに好適なソースコード生成装置、ソースコード生成方法、及び、記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の一態様におけるソースコード生成装置は、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段と、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段と、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段と、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段と、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段と、を備える。【０００８】
上記目的を達成するために、本発明の一態様におけるソースコード生成方法は、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得し、
前記取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成し、
前記生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定し、
前記注目する変数により参照されるデータが伝達されるように、前記設定された入力ポートと出力ポートとを接続し、
前記注目する変数に対する前記入力ポートと出力ポートとの設定と前記入力ポートと出力ポートとの接続とが、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する。【０００９】
上記目的を達成するために、本発明の一態様におけるコンピュータが読み取り可能な記録媒体は、
コンピュータを、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段、として機能させるプログラムを格納する。
【発明の効果】
【００１０】
本発明によれば、手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るソースコード生成装置の構成図である。
【図２】実施形態に係るソースコード生成装置の機能を説明するための図である。
【図３】手続き型プログラミング言語で記述されたソースコードを示す図である。
【図４】処理ブロック生成情報を示す図である。
【図５】命令群と処理ブロック群との対応関係を示す図である。
【図６】ＥＴＬツール用のプログラミング言語で記述されたソースコードを示す図である。
【図７】実施形態に係るソースコード生成装置が実行するソースコード生成処理を示すフローチャートである。
【図８】図７に示す逐次モデル生成処理を示すフローチャートである。
【図９】本発明の実施形態の特徴的な構成を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を、図面を参照して説明する。
【００１３】
（実施形態）
まず、本発明の実施形態に係るソースコード生成装置１００の構成について説明する。ソースコード生成装置１００は、手続き型プログラミング言語で、ある処理が記述されたソースコードに基づいて、ＥＴＬ（Extract Transform Load）ツール用のプログラミング言語で、この処理と同様の処理が記述されたソースコードを生成する装置である。つまり、ソースコード生成装置１００は、手続き型プログラミング言語で記述されたソースコードを、ＥＴＬツール用のプログラミング言語で記述されたソースコードに変換する装置であると考えることもできる。
【００１４】
手続き型プログラミング言語は、手続き呼び出しの概念に基づくプログラムパラダイムに従ったプログラミング言語である。手続き型プログラミング言語は、例えば、ＣＯＢＯＬ（Common Business Oriented Language）、Ｃ言語、ＢＡＳＩＣ（Beginner's All-purpose Symbolic Instruction Code）、ＦＯＲＴＲＡＮ（Formula Translation）などのプログラミング言語である。手続き型プログラミング言語で記述されたソースコードでは、基本的に、命令群が実行順序に従って記述される。この命令群には、変数を使用して処理を実行する命令が含まれる。本実施形態では、手続き型プログラミング言語がＣＯＢＯＬであり、ソースコードがデータ変換処理を表すプログラムである例について説明する。
【００１５】
ＥＴＬツールは、基幹系システムなどに蓄積されたデータを抽出し、データウェアハウスなどで利用しやすい形に加工し、対象のデータベースに書き出すことを支援するツール（ソフトウェア）である。ＥＴＬツールとしては、例えば、Ｉｎｆｏｒｍａｔｉｃａ（登録商標）社のＰｏｗｅｒＣｅｎｔｅｒ（登録商標）、ＩＢＭ（登録商標）社のＤａｔａＳｔａｇｅ（登録商標）、Ｏｒａｃｌｅ（登録商標）社のＯＤＩ(Oracle Data Integrator)、ＳＡＰ（登録商標）社のＢＯＤＩ（Business Objects Data Integrator）などがある。ＥＴＬツール用のプログラミング言語は、主に、データ変換処理を記述するためのプログラミング言語である。ＥＴＬツール用のプログラミング言語で記述されたソースコードは、処理ブロック群が相互に連結されて記述されるプログラムである。本実施形態では、ＥＴＬツールがＰｏｗｅｒＣｅｎｔｅｒである例について説明する。
【００１６】
図１に示すように、ソースコード生成装置１００は、物理的には、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、ハードディスク１０４と、ＲＴＣ（Real Time Clock）１０５と、キーボード１０６と、モニター１０７と、ＮＩＣ（Network Interface Card）１０８と、を備える。ソースコード生成装置１００が備える各構成要素はバスを介して接続される。ソースコード生成装置１００は、例えば、パーソナルコンピュータにより構成することができる。
【００１７】
ＣＰＵ１０１は、ハードディスク１０４に記憶されたプログラムに従って、ソースコード生成装置１００全体の動作を制御する。ＣＰＵ１０１は、各構成要素とバスを介して接続され、制御信号やデータのやりとりをする。
【００１８】
ＲＯＭ１０２は、電源投入直後に実行されるＩＰＬ（Initial Program Loader）を記憶する。ＩＰＬが実行された後、ＣＰＵ１０１は、ハードディスク１０４に記憶されたプログラムをＲＡＭ１０３に読み出して実行する。
【００１９】
ＲＡＭ１０３は、データやプログラムを一時的に記憶する。ＲＡＭ１０３は、ハードディスク１０４から読み出されたプログラムや、各処理に必要なデータ等を一時記憶する。
【００２０】
ハードディスク１０４は、ＣＰＵ１０１により実行されるプログラムを記憶する。また、ハードディスク１０４は、ＣＯＢＯＬで記述されたソースコードや、後述するソースコード生成処理により生成された、ＰｏｗｅｒＣｅｎｔｅｒ用のソースコードを記憶する。また、ハードディスク１０４は、後述する処理ブロック生成情報をはじめ、各処理に必要な情報を記憶する。ハードディスク１０４に記憶される情報は、あらかじめハードディスク１０４に記憶されていても良いし、適宜、外部の装置からＮＩＣ１０８を介して取得されてもよい。
【００２１】
ＲＴＣ１０５は、水晶振動子や発振回路などを備える計時用のデバイスである。ＲＴＣ１０５は、内蔵電池から電源を供給され、ソースコード生成装置１００の電源がオフのときでも動作し続ける。
【００２２】
キーボード１０６は、ソースコード生成装置１００の管理者などから、各種の操作入力を受け付ける。なお、ソースコード生成装置１００は、キーボード１０６の代わりにマウスを備えていてもよいし、キーボード１０６に加えてマウスを備えていてもよい。
【００２３】
モニター１０７は、ＣＰＵ１０１による制御のもと、各種の画面を表示する。モニター１０７は、例えば、ＬＣＤ（Liquid Crystal Display）やＣＲＴ（Cathode Ray Tube）などから構成される。
【００２４】
ＮＩＣ１０８は、ＣＰＵ１０１による制御のもと、通信ネットワークを介して、外部の装置との間で各種情報を送受信する。
【００２５】
次に、ソースコード生成装置１００の機能について説明する。図２に示すように、ソースコード生成装置１００は、機能的には、ソースコード取得部１１、処理ブロック生成部１２、ポート設定部１３、ポート接続部１４、ソースコード生成部１５、命令選択部１６、記憶部２０を備える。
【００２６】
ソースコード取得部１１は、手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得する。なお、命令群は、基本的に、実行順に記述される。ソースコード取得部１１は、例えば、ハードディスク１０４や外部の装置に記憶されているソースコードを取得する。ソースコード取得部１１は、例えば、ＣＰＵ１０１を備える。
【００２７】
処理ブロック生成部１２は、ソースコード取得部１１により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する。処理ブロック生成部１２は、例えば、ハードディスク１０４に記憶された処理ブロック生成情報に基づいて、ソースコードに記述された命令に対応付けられた処理ブロックを生成する。処理ブロック生成部１２は、例えば、ＣＰＵ１０１を備える。
【００２８】
ポート設定部１３は、特定の処理ブロック群に、注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定する。特定の処理ブロック群は、処理ブロック生成部１２により生成された処理ブロック群のうち、特定の命令群に対応付けられた処理ブロック群である。特定の命令群は、注目する変数を最初に扱う命令が実行されてから注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群である。注目する変数は、上述した少なくとも１つの変数のうちのいずれかの変数である。ただし、後述するように、上述した少なくとも１つの変数は、最終的には、いずれも注目する変数として選択される。ポート設定部１３は、例えば、ＣＰＵ１０１を備える。
【００２９】
ポート接続部１４は、注目する変数により参照されるデータが伝達されるように、ポート設定部１３により設定された入力ポートと出力ポートとを接続する。ポート接続部１４は、例えば、ＣＰＵ１０１を備える。
【００３０】
ソースコード生成部１５は、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する。このソースコードは、注目する変数に対してポート設定部１３とポート接続部１４とにより実行される処理が、上述した少なくとも１つの変数の全ての変数に対して実行されることにより取得される。ソースコード生成部１５は、例えば、ＣＰＵ１０１を備える。
【００３１】
命令選択部１６は、ソースコード取得部１１により取得されたソースコードに記述された命令群の中から、命令群の実行順に従って注目する命令を選択する。命令選択部１６は、例えば、ソースコードに記述されている命令を上から順に注目する命令として選択する。命令選択部１６は、例えば、ＣＰＵ１０１を備える。
【００３２】
ここで、処理ブロック生成部１２は、注目する命令に対応付けられた注目する処理ブロックを生成する。より詳細には、処理ブロック生成部１２は、命令選択部１６により注目する命令が選択される毎に、選択された注目する命令に対応付けられた注目する処理ブロックを生成する処理を実行する。
【００３３】
そして、ポート設定部１３は、注目する命令が上述した少なくとも１つの変数のうちのいずれかの変数を扱う場合、扱う変数を注目する変数として、特定の処理ブロック群に、注目する変数を伝達する入力ポートと出力ポートとのうち、設定済みでない入力ポートと出力ポートとを設定する。なお、特定の処理ブロック群は、注目する変数を最初に扱う命令に対応付けられた処理ブロックから注目する処理ブロックまでの間の処理ブロック群である。
【００３４】
つまり、ポート設定部１３は、処理ブロック生成部１２により処理ブロックが生成される毎に、生成された処理ブロックにより扱われる変数により参照されるデータを、この生成された処理ブロックまで伝達するための入力ポートと出力ポートとを設定する。なお、入力ポートや出力ポートが設定される処理ブロックは、必然的に、生成済みの処理ブロックとなる。従って、後段の処理ブロックでこの変数がさらに扱われる場合、この後段の処理ブロックが生成されたタイミングで、この後段の処理ブロックまでこの変数により参照されるデータを伝達するための入力ポートや出力ポートがさらに設定される。
【００３５】
ここで、ポート接続部１４は、注目する変数を最初に扱う命令に対応付けられた処理ブロックから注目する処理ブロックまでの間の処理ブロック群の間で、注目する変数により参照されるデータが伝達されるように、ポート設定部１３により新たに設定された入力ポートと出力ポートとを接続する。
【００３６】
そして、命令選択部１６は、注目する命令に対して、処理ブロック生成部１２とポート設定部１３とポート接続部１４とによる処理が完了した後、命令群の実行順に従って次の命令を選択する。
【００３７】
ここで、処理ブロック生成部１２は、注目する命令がループ処理に関わる命令群の一部であると判別した場合、ループ処理に関わる他の命令群の内容に基づいて、注目する命令に対応付けられた処理ブロックを生成する。なお、ソースコードにループ処理が含まれている場合、ループ処理に関わる命令に対応付けられた処理ブロックを１つずつ生成する手法では、正常に処理ブロックが生成されないことがある。例えば、ループ処理に関わる命令群に含まれる命令の中には、対応付けられた処理ブロックを生成すると処理ブロックが重複する命令が存在する。そこで、ソースコードにループ処理が含まれている場合、ループ処理に関わる他の命令群の内容に基づいて、注目する命令に対応付けられた処理ブロックが生成されることが好適である。
【００３８】
このように、ソースコードにループ処理が存在する場合、このループ処理に関わる命令群を１つのまとまりと考えて、このループ処理に関わる処理ブロック群が生成されることが望ましい。なお、ループ処理の存在を検出するタイミングは、適宜、調整することができる。例えば、構造モデルを生成するタイミングや逐次モデルを生成するタイミングでループ処理の存在を検出することが好適である。なお、ループ処理の存在を検出する手法としては、例えば、ループ処理の先頭の命令である可能性がある命令が検出された場合、以降の命令で検出された命令に対応する命令があるか否かを判別する手法がある。対応する命令があると判別された場合、検出された命令から対応する命令までの命令群がループ処理に関わる命令群として取り扱われる。
【００３９】
記憶部２０は、ソースコード取得部１１により取得されるソースコードやソースコード生成部１５により生成されたソースコードを記憶する。また、記憶部２０は、処理ブロック生成部１２、ポート設定部１３、ポート接続部１４、ソースコード生成部１５、命令選択部１６などにより参照される各種の情報を記憶する。例えば、記憶部２０は、ＣＯＢＯＬで記述されたソースコードやＥＴＬツール用のソースコードを記憶する。また、例えば、記憶部２０は、処理ブロック生成部１２により参照される処理ブロック生成情報を記憶する。記憶部２０は、例えば、ハードディスク１０４を備える。
【００４０】
次に、図３を参照して、手続き型プログラミング言語（ＣＯＢＯＬ）で記述されたソースコードについて説明する。
【００４１】
図３に示すように、ＣＯＢＯＬのソースコードには、命令群が実行順序に従って記述される。ＣＯＢＯＬのソースコードには、各種の宣言文や各種の定義文など、命令文以外の文も記述される。例えば、０００６００−０００８００は入力ファイルを定義する文である。０００９００−００１１００は出力ファイルを定義する文である。００１４００−００１７５０は入力バッファを定義する文である。００１８００−００２１５０は出力バッファを定義する文である。００２８００は作業変数を定義する文である。００２９００−００３１００は作業バッファを定義する文である。
【００４２】
また、００３４００−００３５００はファイルオープンを指示する命令文である。００３６００はデータの入力を指示する命令文である。００３８００はデータの編集を指示する第１の命令文である。００３９００はデータの編集を指示する第２の命令文である。００４１００はデータの出力を指示する命令文である。００４２００−００４３００はデータの入力を指示する命令文である。００４５００−００４６００はファイルクローズを指示する命令文である。
【００４３】
なお、破線で囲まれた命令群（００３６００−００４４００）は、ループ処理に関わる命令群として扱われる。ここで、００３６００に記述された「ＲＥＡＤ  Ｉ−ＦＩＬＥ  ＩＮＴＯ  ＩＮＰ−ＲＥＣ  ＡＴ  ＥＮＤ  ＭＯＶＥ  ＨＩＧＨ−ＶＡＬＵＥ  ＴＯ  Ｗ−ＥＯＦ.」という命令文は、ループ処理の先頭の命令文である可能性がある命令文である。ここで、００３６００に記述されたような命令文が検出された場合、００３６００に記述された命令文に対応する命令文であって、ＣＯＢＯＬ上ではループ処理の末尾に配置されているが、本来はループ処理の先頭に配置されるべき命令文が検索される。
【００４４】
例えば、ループ処理がファイルに対する読み書き処理である場合、ループ処理の先頭の命令文とループ処理の先頭の命令文に対応する命令文とで、（ａ）読み込み元のファイル（Ｉ−ＦＩＬＥ）が同一であり、（ｂ）読み出し先の変数（ＩＮＰ−ＲＥＣ）が同一であり、（ｃ）ファイルの終端に到達した時に実行される処理（ＡＴ  ＥＮＤ  ＭＯＶＥ  ＨＩＧＨ−ＶＡＬＵＥ  ＴＯ  Ｗ−ＥＯＦ）が同一である。従って、読み込み元のファイルと読み出し先の変数とファイルの終端に到達した時に実行される処理とのいずれもが、００３６００に記述された命令文と同じである００４２００−００４３００に記述された命令文「ＲＥＡＤ  Ｉ−ＦＩＬＥ  ＩＮＴＯ  ＩＮＰ−ＲＥＣ  ＡＴ  ＥＮＤ  ＭＯＶＥ  ＨＩＧＨ−ＶＡＬＵＥ  ＴＯ  Ｗ−ＥＯＦ  ＥＮＤ−ＲＥＡＤ」が、ループ処理の先頭の命令文に対応する命令文として検出される。
【００４５】
そして、００３６００に記述された命令文と００４２００−００４３００に記述された命令文とは一体的に扱われる。なお、ＥＴＬツールにおいてループ構造が存在しない場合、ループ制御に関わる命令文は、省略され、これらの命令文に対応付けられた処理ブロックが生成されない。その理由は、ＥＴＬツールでは、ループ構造をとらなくても、ループ処理と同様の処理が実行されるためである。つまり、ＥＴＬツールでは、ある処理ブロックが、前段の処理ブロックからデータが供給される毎に、供給されたデータを処理して、後段の処理ブロックに供給される。
【００４６】
なお、図３に示すソースコードは、以下の（１）から（５）までの処理を、Ｉ−ＦＩＬＥの先頭のデータからＩ−ＦＩＬＥの末尾のデータに至るまで繰り返す処理である。すなわち、（１）Ｉ−ＦＩＬＥ（入力ファイル）のデータをＩＮＰ−ＲＥＣ（変数）に読み出す。（２）ＩＮＰ−ＲＥＣに読み出したデータをＷＯＲＫ−ＲＥＣ（変数）にコピーする。（３）ＷＯＲＫ−ＲＥＣを用いてコピーされたデータに定数（１００）を加算する。（４）加算後のデータをＷＯＲＫ−ＲＥＣからＯＵＴ−ＲＥＣ（変数）にコピーする。（５）ＯＵＴ−ＲＥＣに関連づけられたＯ−ＦＩＬＥ（出力ファイル）に加算後のデータが書き込まれる。
【００４７】
次に、図４を参照して、処理ブロック生成情報について説明する。処理ブロック生成情報は、ＣＯＢＯＬの命令とＰｏｗｅｒＣｅｎｔｅｒの処理ブロックとを対応付ける情報である。従って、処理ブロック生成部１２は、処理ブロック生成情報を参照して、ＣＯＢＯＬの命令に対応付けられたＰｏｗｅｒＣｅｎｔｅｒの処理ブロックを特定することができる。
【００４８】
図４は、ＣＯＢＯＬにおける、Ｉｎｐｕｔ、Ｒｅａｄ、ＭＯＶＥ、ＡＤＤ、Ｗｒｉｔｅという命令が、それぞれ、ＰｏｗｅｒＣｅｎｔｅｒにおける、Ｓｏｕｒｃｅ（ソース）、Ｓｏｕｒｃｅ  Ｑｕａｌｉｆｉｅｒ（ＳＱ、トランスフォーメーション）、Ｅｘｐｒｅｓｓｉｏｎ（トランスフォーメーション）、Ｅｘｐｒｅｓｓｉｏｎ（トランスフォーメーション）、Ｔａｒｇｅｔ（ターゲット）という処理ブロックに対応付けられている例を示している。なお、トランスフォーメーションは、フィルタと呼ぶこともある。
【００４９】
ここで、図５を参照して、ＣＯＢＯＬで記述されたソースコードと、ＰｏｗｅｒＣｅｎｔｅｒ用のソースコードとの対応関係について説明する。図５は、図３における００３４００−００４６００の命令群とこの命令群に対応付けられた処理ブロック群との関係を示している。なお、図５では、Ｏ−Ｆｉｌｅの定義文やＯ−Ｆｉｌｅに書き込むための変数であるＯＵＴ−ＲＥＣに関わる記載などを省略している。まず、ＣＯＢＯＬで記述されたソースコードに含まれる命令群について説明する。
【００５０】
命令２１０は、ソースファイルの００３４００に記述された命令であり、Ｉｎｐｕｔという種類の命令である。命令２１０では、ファイル４１０が参照可能となるように、レジスタ２１１とファイル４１０とが対応付けられる。命令２１０の実行が完了すると、命令２２０の実行が開始される。なお、ファイル４１０は、Ｉ−Ｆｉｌｅという名前の入力ファイルである。
【００５１】
命令２２０は、ソースファイルの００３６００（又は、００４２００−００４３００）に記述された命令であり、Ｒｅａｄという種類の命令である。命令２２０では、ファイル４１０のデータがレジスタ２２１に取り込まれ、レジスタ２２１に取り込まれたデータがレジスタ２２２に格納される。レジスタ２２２に格納されたデータは、変数２６０に格納される。なお、変数２６０は、Ｒｅｃ−Ｎｕｍｂｅｒという名前の変数２６１とＦｉｌｌｅｒという名前の変数２６２とを有する、ＩＮＰ−ＲＥＣという名前の構造体変数である。命令２２０の実行が完了すると、命令２３０の実行が開始される。
【００５２】
命令２３０は、ソースファイルの００３８００に記述された命令であり、ＭＯＶＥという種類の命令である。命令２３０では、変数２６０が格納しているデータがレジスタ２３１に取り込まれ、レジスタ２３１に取り込まれたデータがレジスタ２３２に格納される。レジスタ２３２に格納されたデータは、変数２７０に格納される。なお、変数２７０は、Ｎｕｍｂｅｒｉｎｇという名前の変数２７１とＦｉｌｌｅｒという名前の変数２７２とを有する、ＷｏｒｋＲｅｃという名前の構造体変数である。命令２３０の実行が完了すると、命令２４０の実行が開始される。
【００５３】
命令２４０は、ソースファイルの００３９００に記述された命令であり、ＡＤＤという種類の命令である。命令２４０では、変数２７１に格納されているデータがレジスタ２４１に取り込まれ、定数格納部２８０に格納されているデータがレジスタ２４２に取り込まれる。なお、定数格納部２８０は、ＷＡｄｄという名前で参照され、定数（１００）を格納する。レジスタ２４１に取り込まれたデータとレジスタ２４２に取り込まれたデータとは加算器２４４により加算され、加算により得られたデータはレジスタ２４３に格納される。レジスタ２４３に格納されたデータは、変数２７１に格納される。命令２４０の実行が完了すると、命令２５０の実行が開始される。
【００５４】
命令２５０は、ソースファイルの００４１００に記述された命令であり、Ｗｒｉｔｅという種類の命令である。命令２５０では、変数２７０に格納されているデータがレジスタ２５１に取り込まれ、レジスタ２５１に取り込まれたデータがレジスタ２５２に格納される。レジスタ２５２に格納されたデータは、ファイル４２０に書き込まれる。ファイル４２０は、Ｏ−Ｆｉｌｅという名前の出力ファイルである。ループの終了条件が満たされない限り、命令２５０の実行が完了すると、命令２２０の実行が開始される。
【００５５】
次に、生成されるＰｏｗｅｒＣｅｎｔｅｒ用のソースコード（ＰｏｗｅｒＣｅｎｔｅｒにおけるマッピング）に含まれる処理ブロック群について説明する。
【００５６】
処理ブロック３１０は、命令２１０に対応付けられたＳｏｕｒｃｅという種類の処理ブロックである。処理ブロック３１０は、フィールド３１１とフィールド３１２とを有する。処理ブロック３１０は、ファイル４１０と対応付けられた後、ファイル４１０から読み出されたデータを、フィールド３１１とフィールド３１２とに格納する。フィールド３１１は、Ｒｅｃ−Ｎｕｍｂｅｒという名前の変数が対応付けられたフィールドである。フィールド３１２は、Ｆｉｌｌｅｒという名前の変数が対応付けられたフィールドである。なお、フィールドは、ファイルとの接続に用いられることを除き、基本的に、入力ポートや出力ポートと同様である。
【００５７】
処理ブロック３２０は、命令２２０に対応付けられたＳｏｕｒｃｅ  Ｑｕａｌｉｆｉｅｒという種類の処理ブロックである。処理ブロック３２０は、入力ポート３２１と入力ポート３２２と出力ポート３２３と出力ポート３２４とを有する。入力ポート３２１は、フィールド３１１と接続され、フィールド３１１から供給されたデータを格納する。入力ポート３２１は、Ｒｅｃ−Ｎｕｍｂｅｒという名前の変数が対応付けられた入力ポートである。入力ポート３２２は、フィールド３１２と接続され、フィールド３１２から供給されたデータを格納する。入力ポート３２２は、Ｆｉｌｌｅｒという名前の変数が対応付けられた入力ポートである。出力ポート３２３は、入力ポート３２１と接続され、入力ポート３２１から供給されたデータを格納する。出力ポート３２３は、Ｒｅｃ−Ｎｕｍｂｅｒという名前の変数が対応付けられた出力ポートである。出力ポート３２４は、入力ポート３２２と接続され、入力ポート３２２から供給されたデータを格納する。出力ポート３２４は、Ｆｉｌｌｅｒという名前の変数が対応付けられた出力ポートである。
【００５８】
処理ブロック３３０は、命令２３０に対応付けられたＥｘｐｒｅｓｓｉｏｎという種類の処理ブロックである。処理ブロック３３０は、入力ポート３３１と入力ポート３３２と出力ポート３３３と出力ポート３３４とを有する。入力ポート３３１は、出力ポート３２３と接続され、出力ポート３２３から供給されたデータを格納する。入力ポート３３１は、Ｒｅｃ−Ｎｕｍｂｅｒという名前の変数が対応付けられた入力ポートである。入力ポート３３２は、出力ポート３２４と接続され、出力ポート３２４から供給されたデータを格納する。入力ポート３３２は、Ｆｉｌｌｅｒという名前の変数が対応付けられた入力ポートである。出力ポート３３３は、入力ポート３３１と接続され、入力ポート３３１から供給されたデータを格納する。出力ポート３３３は、Ｎｕｍｂｅｒｉｎｇという名前の変数が対応付けられた出力ポートである。出力ポート３３４は、入力ポート３３２と接続され、入力ポート３３２から供給されたデータを格納する。出力ポート３３４は、Ｆｉｌｌｅｒという名前の変数が対応付けられた出力ポートである。
【００５９】
処理ブロック３４０は、命令２４０に対応付けられたＥｘｐｒｅｓｓｉｏｎという種類の処理ブロックである。処理ブロック３４０は、入力ポート３４１と入力ポート３４２と定数格納部３４３と加算器３４４と出力ポート３４５と出力ポート３４６とを有する。入力ポート３４１は、出力ポート３３３と接続され、出力ポート３３３から供給されたデータを格納する。入力ポート３４１は、Ｎｕｍｂｅｒｉｎｇという名前の変数が対応付けられた入力ポートである。入力ポート３４２は、出力ポート３３４と接続され、出力ポート３３４から供給されたデータを格納する。入力ポート３４２は、Ｆｉｌｌｅｒという名前の変数が対応付けられた入力ポートである。
【００６０】
定数格納部３４３は、定数格納部２８０に格納されているデータ（１００）を格納する。加算器３４４は、入力ポート３４１から供給されたデータと定数格納部３４３から供給されたデータとを加算し、加算により得られたデータを出力ポート３４５に供給する。出力ポート３４５は、加算器３４４と接続され、加算器３４４から供給されたデータを格納する。出力ポート３４５は、Ｎｕｍｂｅｒｉｎｇという名前の変数が対応付けられた出力ポートである。出力ポート３４６は、入力ポート３４２と接続され、入力ポート３４２から供給されたデータを格納する。出力ポート３４６は、Ｆｉｌｌｅｒという名前の変数が対応付けられた出力ポートである。
【００６１】
処理ブロック３５０は、命令２５０に対応付けられたＴａｒｇｅｔという種類の処理ブロックである。処理ブロック３５０は、フィールド３５１とフィールド３５２とを有する。フィールド３５１は、出力ポート３４５と接続され、出力ポート３４５から供給されたデータを格納する。フィールド３５１は、Ｎｕｍｂｅｒｉｎｇという名前の変数が対応付けられたフィールドである。フィールド３５２は、出力ポート３４６と接続され、出力ポート３４６から供給されたデータを格納する。フィールド３５２は、Ｆｉｌｌｅｒという名前の変数が対応付けられたフィールドである。処理ブロック３５０は、ファイル４２０と対応付けられた後、フィールド３５１とフィールド３５２とに格納されたデータを、ファイル４２０に書き込む。
【００６２】
上述したように、ＣＯＢＯＬのソースコード上の命令は、ＰｏｗｅｒＣｅｎｔｅｒのソースコード上において、処理ブロックに置き換えられる。また、ＣＯＢＯＬのソースコード上の変数は、ＰｏｗｅｒＣｅｎｔｅｒのソースコード上において、処理ブロックに設けられるポートに置き換えられる。また、ＣＯＢＯＬのソースコード上におけるループ構造（命令２２０から命令２５０までのループ構造）は、ＰｏｗｅｒＣｅｎｔｅｒのソースコード上においては省略される。ただし、ＰｏｗｅｒＣｅｎｔｅｒのソースコード上における各処理ブロックは、入力ポートに対して前段の処理ブロックからデータが供給される度に、供給されたデータを処理し、処理により得られたデータを出力ポートから後段の処理ブロックに供給する。従って、ＰｏｗｅｒＣｅｎｔｅｒにおいても、ＣＯＢＯＬにおけるループ構造による制御と同様の制御が実行される。
【００６３】
次に、図６を参照して、ＣＯＢＯＬのソースコードから生成された、ＰｏｗｅｒＣｅｎｔｅｒ用のソースコードについて説明する。図６に示すように、ＰｏｗｅｒＣｅｎｔｅｒ用のソースコードは、入力ポートと出力ポートとにより１つ以上の処理ブロックが相互に接続されて構成される。
【００６４】
図６に示す例では、ＰｏｗｅｒＣｅｎｔｅｒ用のソースコードは、処理ブロック５１０と、処理ブロック５２０と、処理ブロック５３０と、処理ブロック５４０とを備える。
【００６５】
処理ブロック５１０は、処理ブロック３１０に対応する処理ブロックであり、命令２１０に対応する処理ブロックである。処理ブロック５１０は、Ｎｕｍｂｅｒｉｎｇという名前のデータと、Ｆｉｌｌｅｒという名前のデータとを扱う処理ブロックである。処理ブロック５１０は、出力ポート５１１と出力ポート５１２とを備える。処理ブロック５１０は、Ｎｕｍｂｅｒｉｎｇという名前のデータとＦｉｌｌｅｒという名前のデータとを、Ｉ−Ｆｉｌｅという名前の入力ファイルから読み込む。出力ポート５１１は、Ｎｕｍｂｅｒｉｎｇという名前のデータを出力する出力ポートである。出力ポート５１２は、Ｆｉｌｌｅｒという名前のデータを出力する出力ポートである。
【００６６】
処理ブロック５２０は、処理ブロック３２０に対応する処理ブロックであり、命令２２０に対応する処理ブロックである。処理ブロック５２０は、Ｎｕｍｂｅｒｉｎｇという名前のデータと、Ｆｉｌｌｅｒという名前のデータとを扱う処理ブロックである。処理ブロック５２０は、入力ポート５２１と入力ポート５２２と出力ポート５２３と出力ポート５２４とを備える。入力ポート５２１は、出力ポート５１１から供給されるＮｕｍｂｅｒｉｎｇという名前のデータを受け付ける入力ポートである。入力ポート５２２は、出力ポート５１２から供給されるＦｉｌｌｅｒという名前のデータを受け付ける入力ポートである。出力ポート５２３は、Ｎｕｍｂｅｒｉｎｇという名前のデータを出力する出力ポートである。出力ポート５２４は、Ｆｉｌｌｅｒという名前のデータを出力する出力ポートである。
【００６７】
処理ブロック５３０は、処理ブロック３３０と処理ブロック３４０とに対応する処理ブロックであり、命令２３０と命令２４０とに対応する処理ブロックである。つまり、処理ブロック５３０は、最適化などにより処理ブロック３３０と処理ブロック３４０とが統合されて生成された処理ブロックである。処理ブロック５３０は、Ｎｕｍｂｅｒｉｎｇという名前のデータと、Ｎｕｍｂｅｒｉｎｇ＿Ｏｕｔという名前のデータと、Ｆｉｌｌｅｒという名前のデータとを扱う処理ブロックである。処理ブロック５３０は、入力ポート５３１と入力ポート５３２と出力ポート５３３と出力ポート５３４とを備える。入力ポート５３１は、出力ポート５２３から供給されるＮｕｍｂｅｒｉｎｇという名前のデータを受け付ける入力ポートである。入力ポート５３２は、出力ポート５２４から供給されるＦｉｌｌｅｒという名前のデータを受け付ける入力ポートである。出力ポート５３３は、Ｎｕｍｂｅｒｉｎｇ＿Ｏｕｔという名前のデータを出力する出力ポートである。出力ポート５３４は、Ｆｉｌｌｅｒという名前のデータを出力する出力ポートである。なお、Ｎｕｍｂｅｒｉｎｇ＿Ｏｕｔという名前のデータは、Ｎｕｍｂｅｒｉｎｇという名前のデータとＷａｄｄという名前のデータとの加算により取得されるデータである。
【００６８】
処理ブロック５４０は、処理ブロック３５０に対応する処理ブロックであり、命令２５０に対応する処理ブロックである。処理ブロック５４０は、Ｎｕｍｂｅｒｉｎｇという名前のデータと、Ｆｉｌｌｅｒという名前のデータとを扱う処理ブロックである。処理ブロック５４０は、入力ポート５４１と入力ポート５４２とを備える。入力ポート５４１は、出力ポート５３３から供給されるＮｕｍｂｅｒｉｎｇ＿Ｏｕｔという名前のデータを、Ｎｕｍｂｅｒｉｎｇという名前のデータとして受け付ける入力ポートである。入力ポート５４２は、出力ポート５３４から供給されるＦｉｌｌｅｒという名前のデータを受け付ける入力ポートである。処理ブロック５４０は、Ｎｕｍｂｅｒｉｎｇという名前のデータとＦｉｌｌｅｒという名前のデータとを、Ｏ−Ｆｉｌｅという名前の出力ファイルに書き込む。
【００６９】
次に、図７を参照して、ソースコード生成装置１００が実行するソースコード生成処理について説明する。なお、ＣＰＵ１０１は、例えば、ユーザによりなされたソースコード生成指示がキーボード１０６により受け付けられたことを検知した場合、ソースコード生成処理を開始する。
【００７０】
まず、ＣＰＵ１０１は、ソースコードを取得する（ステップＳ１０１）。例えば、ＣＰＵ１０１は、ＣＯＢＯＬで記述されたソースコードを、ハードディスク１０４からＲＡＭ１０３に読み出す。
【００７１】
ＣＰＵ１０１は、ステップＳ１０１の処理を完了すると、ソースコードに記述されたプログラムの構文を解析して、構文モデルを生成する（ステップＳ１０２）。なお、構文モデルは、ソースコードに記述されたプログラムが、構文木などにより表わされたモデルである。ＣＰＵ１０１は、例えば、生成された構文モデルをハードディスク１０４に記憶する。
【００７２】
ＣＰＵ１０１は、ステップＳ１０２の処理を完了すると、生成された構文モデルを解析して、解析モデルを生成する（ステップＳ１０３）。なお、解析モデルは、項目構成や処理ロジックが構造化されたモデルである。ＣＰＵ１０１は、例えば、生成された解析モデルをハードディスク１０４に記憶する。
【００７３】
ＣＰＵ１０１は、ステップＳ１０３の処理を完了すると、生成された解析モデルに基づいて、論理モデルを生成する（ステップＳ１０４）。なお、論理モデルは、システムにおけるアプリケーションプログラムの役割が加味されたモデルである。ＣＰＵ１０１は、例えば、生成された論理モデルをハードディスク１０４に記憶する。
【００７４】
ＣＰＵ１０１は、ステップＳ１０４の処理を完了すると、生成された論理モデルに基づいて、抽象モデルを生成する（ステップＳ１０５）。なお、抽象モデルは、アプリケーションプログラムの論理構造が抽象化されたモデルである。ＣＰＵ１０１は、例えば、生成された抽象モデルをハードディスク１０４に記憶する。
【００７５】
ＣＰＵ１０１は、ステップＳ１０５の処理を完了すると、生成された抽象モデルに基づいて、展開モデルを生成する（ステップＳ１０６）。なお、展開モデルは、集団項目や内部サブルーチンが展開されたモデルである。集団項目は、例えば、構造体変数である。ＣＰＵ１０１は、例えば、生成された展開モデルをハードディスク１０４に記憶する。
【００７６】
ＣＰＵ１０１は、ステップＳ１０６の処理を完了すると、生成された展開モデルに基づいて、構造モデルを生成する（ステップＳ１０７）。なお、構造モデルは、例えば、データ１件分の処理の集まりとして再編されたモデルである。ＣＰＵ１０１は、例えば、生成された構造モデルをハードディスク１０４に記憶する。
【００７７】
ＣＰＵ１０１は、ステップＳ１０７の処理を完了すると、生成された構造モデルに基づいて、逐次モデル生成処理を実行する（ステップＳ１０８）。なお、逐次モデルは、例えば、ＣＯＢＯＬにおけるプログラムの構成要素が、ＰｏｗｅｒＣｅｎｔｅｒのマッピングにおける構成要素に単純に置き換えられたモデルである。図５に示されたＰｏｗｅｒＣｅｎｔｅｒ用のソースコードは、逐次モデルである。逐次モデル生成処理については、図８を参照して、詳細に説明する。
【００７８】
まず、ＣＰＵ１０１は、ＣＯＢＯＬで記述されたソースコードから、命令を選択する（ステップＳ２０１）。例えば、ＣＰＵ１０１は、ソースコードに記述されている順序が早い命令（記述された位置が上である命令）から順番に、命令を選択する。例えば、図５に示す例では、命令２１０→命令２２０→命令２３０→命令２４０→命令２５０の順序で命令が選択される。
【００７９】
ＣＰＵ１０１は、ステップＳ２０１の処理を完了すると、選択された命令に対応付けられた処理ブロックを生成する（ステップＳ２０２）。例えば、ＣＰＵ１０１は、ハードディスク１０４に記憶されている処理ブロック生成情報を参照して、選択された命令に対応付けられた処理ブロックを特定する。そして、ＣＰＵ１０１は、特定された処理ブロックをＰｏｗｅｒＣｅｎｔｅｒ用のソースコード上に生成する。例えば、ＣＰＵ１０１は命令２３０に基づいて、処理ブロック３３０を生成する。
【００８０】
ＣＰＵ１０１は、ステップＳ２０２の処理を完了すると、選択された命令により扱われる変数を特定する（ステップＳ２０３）。例えば、ＣＰＵ１０１は、命令２３０により扱われる変数として、ＩＮＰ−ＲＥＣのＲｅｃ−Ｎｕｍｂｅｒと、ＩＮＰ−ＲＥＣのＦｉｌｌｅｒと、ＷｏｒｋＲｅｃのＮｕｍｂｅｒｉｎｇと、ＷｏｒｋＲｅｃのＦｉｌｌｅｒと、を特定する。
【００８１】
ＣＰＵ１０１は、ステップＳ２０３の処理を完了すると、特定された変数に対応付けられるポートを設定する（ステップＳ２０４）。例えば、ＣＰＵ１０１は、ＩＮＰ−ＲＥＣのＲｅｃ−Ｎｕｍｂｅｒに対応付けられる入力ポートとして入力ポート３３１を、処理ブロック３３０に設定する。同様に、ＣＰＵ１０１は、ＩＮＰ−ＲＥＣのＦｉｌｌｅｒに対応付けられる入力ポートとして入力ポート３３２を、処理ブロック３３０に設定する。また、ＣＰＵ１０１は、ＷｏｒｋＲｅｃのＮｕｍｂｅｒｉｎｇに対応付けられる出力ポートとして出力ポート３３３を、処理ブロック３３０に設定する。そして、ＣＰＵ１０１は、ＷｏｒｋＲｅｃのＦｉｌｌｅｒに対応付けられる出力ポートとして出力ポート３３４を、処理ブロック３３０に設定する。
【００８２】
ＣＰＵ１０１は、ステップＳ２０４の処理を完了すると、設定されたポートを接続する（ステップＳ２０５）。例えば、ＣＰＵ１０１は、処理ブロック３３０に設定された入力ポート３３１を、処理ブロック３２０が備える出力ポートのうち、入力ポート３３１に対応する出力ポート３２３に接続する。同様に、ＣＰＵ１０１は、処理ブロック３３０に設定された入力ポート３３２を、処理ブロック３２０が備える出力ポートのうち、入力ポート３３２に対応する出力ポート３２４に接続する。このように、ＣＰＵ１０１は、ある処理ブロックが備える入力ポートを、この処理ブロックの前段の処理ブロックが備える出力ポートのうち、この入力ポートに対応する出力ポートに接続する。
【００８３】
なお、ＣＰＵ１０１は、ある処理ブロックが備える入力ポートに対応する出力ポートが、この処理ブロックの前段の処理ブロックにない場合、この入力ポートにより伝達されるべきデータを伝達するための入力ポートや出力ポートを、この前段以前の処理ブロックに追加する。なお、フィールドは、設定や接続に関しては、入力ポートや出力ポートと同様に扱われる。
【００８４】
例えば、ＷｏｒｋＲｅｃのＦｉｌｌｅｒという名前の変数は、命令２３０と命令２５０により扱われ、命令２４０では扱われないと仮定する。この場合、命令２３０に対応付けられた処理ブロック３３０が生成される際、ＷｏｒｋＲｅｃのＦｉｌｌｅｒに格納されるデータを伝達するための出力ポート３３４が処理ブロック３３０に追加される。しかしながら、命令２４０に対応付けられた処理ブロック３４０が生成される際、ＷｏｒｋＲｅｃのＦｉｌｌｅｒに格納されるデータを伝達するための入力ポート３４２や出力ポート３４６が処理ブロック３４０に追加されない。従って、命令２５０に対応付けられた処理ブロック３５０が生成される際、ＷｏｒｋＲｅｃのＦｉｌｌｅｒに格納されるデータを受け付けるフィールド３５２が処理ブロック３５０に追加されるとともに、入力ポート３４２と出力ポート３４６とが処理ブロック３４０に追加される。そして、出力ポート３３４と入力ポート３４２とが接続され、入力ポート３４２と出力ポート３４６とが接続され、出力ポート３４６とフィールド３５２とが接続される。
【００８５】
ＣＰＵ１０１は、ステップＳ２０５の処理を完了すると、未選択の命令があるか否かを判別する（ステップＳ２０６）。例えば、ＣＰＵ１０１は、ＣＯＢＯＬで記述されたソースコードの最後に記述された命令が選択済みでない場合、未選択の命令があると判別する。一方、ＣＰＵ１０１は、ＣＯＢＯＬで記述されたソースコードの最後に記述された命令が選択済みである場合、未選択の命令がないと判別する。ＣＰＵ１０１は、未選択の命令があると判別した場合（ステップＳ２０６：ＹＥＳ）、ステップＳ２０１に処理を戻し、次の命令を選択する。一方、ＣＰＵ１０１は、未選択の命令がないと判別した場合（ステップＳ２０６：ＮＯ）、逐次モデルを保存する（ステップＳ２０７）。
【００８６】
具体的には、ＣＰＵ１０１は、ステップＳ２０１からステップＳ２０６の処理により取得された逐次モデル（逐次モデルが記述されたファイル）を、ハードディスク１０４などに記憶する。この逐次モデルは、図５に示すように、１つ以上の処理ブロックが入力ポートや出力ポートにより相互に接続されたモデルである。ＣＰＵ１０１は、ステップＳ２０７の処理を完了すると、逐次モデル生成処理を完了する。
【００８７】
ＣＰＵ１０１は、ステップＳ１０８の処理（逐次モデル生成処理）を完了すると、生成された逐次モデルに基づいて、論理モデルを生成する（ステップＳ１０９）。論理モデルは、逐次モデルをＰｏｗｅｒＣｅｎｔｅｒ用のソースコード（マッピング）として最適化されたモデルである。ＣＰＵ１０１は、例えば、生成された論理モデルをハードディスク１０４に記憶する。
【００８８】
ＣＰＵ１０１は、ステップＳ１０９の処理を完了すると、生成された論理モデルに基づいて、物理モデルを生成する（ステップＳ１１０）。物理モデルは、論理モデルにおいて表現された論理的な構成を物理的な構成に置き換えたモデルである。ＣＰＵ１０１は、例えば、生成された物理モデルをハードディスク１０４に記憶する。なお、生成された物理モデルは、ＰｏｗｅｒＣｅｎｔｅｒのリポジトリなどに記憶される。なお、図６に示されているＰｏｗｅｒＣｅｎｔｅｒ用のソースコードは、物理モデルである。
【００８９】
次に、本発明の実施形態の特徴的な構成を説明する。
【００９０】
図９は、本発明の実施形態の特徴的な構成を示す図である。図９を参照すると、ソースコード生成装置１００は、ソースコード取得部１１、処理ブロック生成部１２、ポート設定部１３、ポート接続部１４、及び、ソースコード生成部１５を含む。
【００９１】
ソースコード取得部１１は、手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得する。処理ブロック生成部１２は、ソースコード取得部１１により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する。ポート設定部１３は、処理ブロック生成部１２により生成された処理ブロック群のうち、少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定する。ポート接続部１４は、注目する変数により参照されるデータが伝達されるように、ポート設定部１３により設定された入力ポートと出力ポートとを接続する。ソースコード生成部１５は、注目する変数に対してポート設定部１３とポート接続部１４とにより実行される処理が、少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する。
【００９２】
次に、本発明の実施形態の効果を説明する。
【００９３】
本実施形態によれば、手続き型プログラミング言語で記述されたソースコードに基づいて、ＥＴＬツール用のプログラミング言語で記述されたソースコードを自動で生成することができる。従って、ユーザは、機能設計に立ち戻って再設計することなく、ＥＴＬツール用のソースコードを取得することができる。
【００９４】
なお、ユーザは、機能設計に基づいて、手続き型プログラミング言語によりシステムを構築する場合、プロシージャ指向でシステムを設計する。プロシージャ指向は、例えば、入力ファイルを扱う繰り返し処理を構造化し、レコード（項目）毎に処理の内容を整理し、処理結果を出力ファイルに繰り返し出力する指向である。つまり、プロシージャ指向では、制御構造を意識しながら、データ処理をシーケンシャルに組み立てる。
【００９５】
一方、ユーザは、機能設計に基づいて、ＥＴＬツール用のプログラミング言語によりシステムを構築する場合、パイプアンドフィルター指向でシステムを設計する。パイプアンドフィルター指向は、例えば、入力ファイルのレコード構造のみを明確化し、単位レコード分のデータ変換処理を整理し、出力ファイルの項目に処理の結果を出力する指向である。つまり、パイプアンドフィルター指向では、制御構造を意識せず、データ変換の積み重ねにより、単位レコード分の処理を組み立てる。
【００９６】
このように、プロシージャ指向とパイプアンドフィルター指向とでは、同じ内容の処理を開発する場合でも、全く異なる構成の処理として開発する必要がある。従って、プロシージャ指向により生成されたソースコードに基づいて、パイプアンドフィルター指向で生成されたソースコードを自動で生成することにより、システム開発に要するコストを大幅に低減する効果が期待できる。
【００９７】
また、本実施形態では、単位処理毎の対応付けにより逐次変換が実現される。具体的には、本実施形態では、命令毎に、命令に対応付けられた処理ブロックの生成、処理ブロックで扱うデータを伝達するためのポートの設定、設定されたポートの接続が実行される。従って、簡単な処理により、ソースコードの変換処理が実現可能である。
【００９８】
なお、ＥＴＬツールには、ユーザにより生成されたＥＴＬ用のソースコードを最適化する機能を備えられていることが多い。従って、単位処理毎の対応付けによる逐次変換により生成されたソースコードが最適化されたソースコードでなかったとしても、ＥＴＬツールの機能によりソースコードの最適化が可能なことが多い。
【００９９】
また、プロシージャ指向では、変数に格納されているデータが命令により変化させられながら処理結果が導かれる。一方、パイプアンドフィルター指向では、データが処理ブロック内で変化させられながら処理ブロック間で伝達されて、処理結果が導かれる。従って、データ変換処理（ソースコード生成処理）では、「データを編集する処理の流れ」が「変換処理を経由するデータの流れ」に変換される。この場合において、「処理」と「変換」とが個々に同一の結果となるように、一対一で変換され、処理内容の同一性が保証される。
【０１００】
また、本実施形態では、手続き型プログラミング言語で記述されたソースコード内に、ファイルに対する入出力を含むループ処理が記述されている場合、このループ処理に加え、このループ処理に関連する、このループ処理の前後の処理を含む一連の処理が、ファイルに対する入出力に関連した処理として扱われる。従って、例えば、ファイルに対する入出力命令のうち、冗長な命令が除外されて、ＥＴＬツール用のソースコードが生成される。従って、本実施形態によれば、ソースコードにファイルに対する入出力を含むループ処理が記述されている場合でも、正しくソースコードを変換することができる。
【０１０１】
（変形例）
以上、本発明の実施形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能である。
【０１０２】
本発明において、上記実施形態において説明した構成、機能、動作のどの部分を採用するのかは任意である。また、本発明において、上述した構成、機能、動作のほか、更なる構成、機能、動作が採用されてもよい。また、上記実施形態において説明した構成、機能、動作は、自由に組み合わせることができる。
【０１０３】
上記実施形態では、手続き型プログラミング言語がＣＯＢＯＬであり、ＥＴＬツールがＰｏｗｅｒＣｅｎｔｅｒである例について説明した。手続き型プログラミング言語がＣＯＢＯＬ以外のプログラミング言語であり、ＥＴＬツールがＰｏｗｅｒＣｅｎｔｅｒ以外のＥＴＬツールであってもよいことは勿論である。
【０１０４】
なお、本発明に係るソースコード生成装置は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、コンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に記憶して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する電力供給システムを構成しても良い。
【０１０５】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを記憶しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等をしてもよい。
【０１０６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０７】
（付記１）
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段と、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段と、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段と、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段と、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段と、を備える、
ことを特徴とするソースコード生成装置。
【０１０８】
（付記２）
前記ソースコード取得手段により取得されたソースコードに記述された命令群の中から、前記命令群の実行順に従って、注目する命令を選択する命令選択手段をさらに備え、
前記処理ブロック生成手段は、前記注目する命令に対応付けられた注目する処理ブロックを生成し、
前記ポート設定手段は、前記注目する命令が前記少なくとも１つの変数のうちのいずれかの変数を扱う場合、前記扱う変数を前記注目する変数として、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとのうち、設定済みでない入力ポートと出力ポートとを新たに設定し、
前記ポート接続手段は、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群の間で、前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により新たに設定された入力ポートと出力ポートとを接続し、
前記命令選択手段は、前記注目する命令に対して、前記処理ブロック生成手段と前記ポート設定手段と前記ポート接続手段とによる処理が完了した後、前記命令群の実行順に従って次の命令を選択する、
ことを特徴とする付記１に記載のソースコード生成装置。
【０１０９】
（付記３）  前記処理ブロック生成手段は、前記注目する命令がループ処理に関わる命令群の一部であると判別した場合、前記ループ処理に関わる他の命令群の内容に基づいて、前記注目する命令に対応付けられた処理ブロックを生成する、
ことを特徴とする付記２に記載のソースコード生成装置。
【０１１０】
（付記４）  手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得ステップと、
前記ソースコード取得ステップで取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成ステップと、
前記処理ブロック生成ステップで生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定ステップと、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定ステップで設定された入力ポートと出力ポートとを接続するポート接続ステップと、
前記注目する変数に対して前記ポート設定ステップと前記ポート接続ステップとで実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成ステップと、を備える、
ことを特徴とするソースコード生成方法。
【０１１１】
（付記５）  コンピュータを、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段、として機能させる、
ことを特徴とするプログラム。
【０１１２】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【０１１３】
この出願は、２０１４年３月１９日に出願された日本出願特願２０１４−０５６６８６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１４】
本発明は、ＥＴＬツールなどに適用することができる。
【符号の説明】
【０１１５】
１１  ソースコード取得部
１２  処理ブロック生成部
１３  ポート設定部
１４  ポート接続部
１５  ソースコード生成部
１６  命令選択部
２０  記憶部
１００  ソースコード生成装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ハードディスク
１０５  ＲＴＣ
１０６  キーボード
１０７  モニター
１０８  ＮＩＣ
２１０、２２０、２３０、２４０、２５０  命令
２１１、２２１、２２２、２３１、２３２、２４１、２４２、２４３、２５１、２５２  レジスタ
２４４、３４４  加算器
２６０、２６１、２６２、２７０、２７１、２７２  変数
２８０、３４３  定数格納部
３１０、３２０、３３０、３４０、３５０、５１０、５２０、５３０、５４０  処理ブロック
３１１、３１２、３５１、３５２  フィールド
３２１、３２２、３３１、３３２、３４１、３４２、５２１、５２２、５３１、５３２、５４１、５４２  入力ポート
３２３、３２４、３３３、３３４、３４５、３４６、５１１、５１２、５２３、５２４、５３３、５３４  出力ポート
４１０、４２０  ファイル
【図１】
2015141150.tif 000003
【図２】
2015141150.tif 000004
【図３】
2015141150.tif 000005
【図４】
2015141150.tif 000006
【図５】
2015141150.tif 000007
【図６】
2015141150.tif 000008
【図７】
2015141150.tif 000009
【図８】
2015141150.tif 000010
【図９】
2015141150.tif 000011
【手続補正書】
【提出日】平成28年9月8日(2016.9.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段と、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段と、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段と、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段と、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段と、を備える、
ソースコード生成装置。
【請求項２】
前記ソースコード取得手段により取得されたソースコードに記述された命令群の中から、前記命令群の実行順に従って、注目する命令を選択する命令選択手段をさらに備え、
前記処理ブロック生成手段は、前記注目する命令に対応付けられた注目する処理ブロックを生成し、
前記ポート設定手段は、前記注目する命令が前記少なくとも１つの変数のうちのいずれかの変数を扱う場合、前記扱う変数を前記注目する変数として、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとのうち、設定済みでない入力ポートと出力ポートとを新たに設定し、
前記ポート接続手段は、前記注目する変数を最初に扱う命令に対応付けられた処理ブロックから前記注目する処理ブロックまでの間の処理ブロック群の間で、前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により新たに設定された入力ポートと出力ポートとを接続し、
前記命令選択手段は、前記注目する命令に対して、前記処理ブロック生成手段と前記ポート設定手段と前記ポート接続手段とによる処理が完了した後、前記命令群の実行順に従って次の命令を選択する、
請求項１に記載のソースコード生成装置。
【請求項３】
前記処理ブロック生成手段は、前記注目する命令がループ処理に関わる命令群の一部であると判別した場合、前記ループ処理に関わる他の命令群の内容に基づいて、前記注目する命令に対応付けられた処理ブロックを生成する、
請求項２に記載のソースコード生成装置。
【請求項４】
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得し、
前記取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成し、
前記生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定し、
前記注目する変数により参照されるデータが伝達されるように、前記設定された入力ポートと出力ポートとを接続し、
前記注目する変数に対する前記入力ポートと出力ポートとの設定と前記入力ポートと出力ポートとの接続とが、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成する、
ソースコード生成方法。
【請求項５】
コンピュータを、
手続き型プログラミング言語で記述され、少なくとも１つの変数を扱う命令群が記述されたソースコードを取得するソースコード取得手段、
前記ソースコード取得手段により取得されたソースコードに記述された命令群に対応付けられた処理ブロック群を生成する処理ブロック生成手段、
前記処理ブロック生成手段により生成された処理ブロック群のうち、前記少なくとも１つの変数のうちの注目する変数を最初に扱う命令が実行されてから前記注目する変数を最後に扱う命令が実行されるまでの間に実行される命令群に対応付けられた処理ブロック群に、前記注目する変数により参照されるデータを伝達する入力ポートと出力ポートとを設定するポート設定手段、
前記注目する変数により参照されるデータが伝達されるように、前記ポート設定手段により設定された入力ポートと出力ポートとを接続するポート接続手段、
前記注目する変数に対して前記ポート設定手段と前記ポート接続手段とにより実行される処理が、前記少なくとも１つの変数の全ての変数に対して実行されることにより取得される、ＥＴＬツール用のプログラミング言語で記述されたソースコードを生成するソースコード生成手段、として機能させる、
プログラム。
【国際調査報告】
2015141150.tif 000012
2015141150.tif 000013
2015141150.tif 000014