(57)【要約】【課題】  ブロック図から計算機言語によるプログラムを自動生成する方法において、コード量と実行速度のトレードオフの関係を簡単に調整することが要求される。【解決手段】  計算機言語への変換方法として、生成される機械語の量が多くなるが実行速度の速い関数組み込み処理（ステップ１２２〜ステップ１３０）と、生成される機械語の量は少ないが実行速度の遅い関数呼び出し処理（ステップ１１０）とを、個々の関数に対して選択指定可能にする。また、生成されるプログラムの実行速度とコード量は、プログラムの実行優先順位に依存する。したがって、実行優先順位の高いものは、関数組み込み処理にし、優先順位が低いものは、関数呼び出し処理としてブロック図ごとに一括指定可能にする。【選択図】        図８
2006301989.tif 000002
【特許請求の範囲】
【請求項１】
処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成方法であって、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、
入力された処理手順を処理手順記憶部に格納するステップと、
各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データを前記入力手段が受け付ける第２受付ステップと、
前記第２受付ステップで受け付けた選択指定データを選択指定データ記憶部に格納するステップと、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記コンピュータのプログラムコード生成手段が前記ブロック図の全体的構成と個々のブロック要素と前記選択指定データとに基づいてプログラムコードを生成するプログラムコード生成ステップであって、
前記選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、前記プログラムコード生成手段が計算機言語によって記述するステップと、
前記選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、前記プログラムコード生成手段が、前記コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと
を含むプログラムコード生成ステップと
を含んでなるプログラムの自動生成方法。
【請求項２】
前記第２受付ステップで受け付けられる前記選択指定データが、ブロック要素と共にブロック図に含まれるデータである、請求項１に記載のプログラムの自動生成方法。
【請求項３】
処理手順を表記した複数のブロック図に基く計算機言語によるプログラムの自動生成方法であって、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、
入力された処理手順を処理手順記憶部に格納するステップと、
前記複数のブロック図の実行優先順位を示す実行優先順位データを前記入力手段が受け付ける第２受付ステップと、
前記第２受付ステップで受け付けた実行優先順位データをプロジェクト情報記憶部に格納するステップと、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記コンピュータのプログラムコード生成手段が前記ブロック図の全体的構成と個々のブロック要素と前記実行優先順位データとに基づいてプログラムコードを生成するプログラムコード生成ステップであって、
前記プログラムコード生成手段が、前記実行優先順位データと所定の判別閾値データとに基づいて、前記複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別する判別ステップと、
前記判別ステップによって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、前記プログラムコード生成手段が、前記コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと、
前記判別ステップによって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、前記プログラムコード生成手段が計算機言語によって記述するステップと
を含むプログラムコード生成ステップと
を含んでなるプログラムの自動生成方法。
【請求項４】
処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成装置であって、
前記ブロック図の作成に用いられ処理手順を表す複数のブロック要素それぞれに対応する関数について、計算機言語による該関数のプログラムコードを関数情報として格納する関数情報記憶部と、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力と各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データの入力とを受け付ける入力手段と、
前記ブロック図の入力によって受け付けた処理手順を格納する処理手順記憶部と、
前記入力手段によって受け付けた前記選択指定データを格納する選択指定データ記憶部と、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記ブロック図の全体的構成と個々のブロック要素と前記選択指定データとに基づいてプログラムコードを生成するプログラムコード生成手段であって、
前記選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、計算機言語によって記述する関数呼び出し手段と、
前記選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、前記コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述する関数組み込み手段と
を備えるプログラムコード生成手段と
を備えるプログラムの自動生成装置。
【請求項５】
処理手順を表記した複数のブロック図に基づく計算機言語によるプログラムの自動生成装置であって、
前記ブロック図の作成に用いられ処理手順を表す複数のブロック要素それぞれに対応する関数について、計算機言語による該関数のプログラムコードを関数情報として格納する関数情報記憶部と、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力と前記複数のブロック図の実行優先順位データの入力とを受け付ける入力手段と、
前記ブロック図の入力によって受け付けた処理手順を格納する処理手順記憶部と、
前記入力手段によって受け付けた実行優先順位データを格納するプロジェクト情報記憶部と、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記ブロック図の全体的構成と個々のブロック要素と前記実行優先順位データとに基づいてプログラムコードを生成するプログラムコード生成手段であって、
前記実行優先順位データと所定の判別閾値データとに基づいて、前記複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別する判別手段と、
前記判別手段によって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、前記コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述する手段と、
前記判別手段によって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、計算機言語によって記述する手段と
を備えるプログラムコード生成手段と
を備えるプログラムの自動生成装置。
【請求項６】
処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成方法をコンピュータに実行させるためのコンピュータプログラムであって、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、
入力された処理手順を処理手順記憶部に格納するステップと、
各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データを前記入力手段が受け付ける第２受付ステップと、
前記第２受付ステップで受け付けた選択指定データを選択指定データ記憶部に格納するステップと、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記コンピュータのプログラムコード生成手段が前記ブロック図の全体的構成と個々のブロック要素と前記選択指定データとに基づいてプログラムコードを生成するプログラムコード生成ステップであって、
前記選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、前記プログラムコード生成手段が計算機言語によって記述するステップと、
前記選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、前記プログラムコード生成手段が、前記コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと
を含むプログラムコード生成ステップと
をコンピュータに実行させるためのコンピュータプログラム。
【請求項７】
処理手順を表記した複数のブロック図に基づく計算機言語によるプログラムの自動生成方法をコンピュータに実行させるためのコンピュータプログラムであって、
処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、
入力された処理手順を処理手順記憶部に格納するステップと、
前記複数のブロック図の実行優先順位を示す実行優先順位データを前記入力手段が受け付ける第２受付ステップと、
前記第２受付ステップで受け付けた実行優先順位データをプロジェクト情報記憶部に格納するステップと、
前記処理手順記憶部から読み出された前記処理手順中の前記ブロック要素のそれぞれについて前記コンピュータのプログラムコード生成手段が前記ブロック図の全体的構成と個々のブロック要素と前記実行優先順位データとに基づいてプログラムコードを生成するプログラムコード生成ステップであって、
前記プログラムコード生成手段が、前記実行優先順位データと所定の判別閾値データとに基づいて、前記複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別する判別ステップと、
前記判別ステップによって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、前記プログラムコード生成手段が、前記コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを前記記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと、
前記判別ステップによって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、前記プログラムコード生成手段が計算機言語によって記述するステップと
を含むプログラムコード生成ステップと
をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック図に記載されたデータから計算機言語によるプログラムを自動生成する方法と装置とプログラムとに関する。
【背景技術】
【０００２】
従来、コンピュータに特定の処理を行わせるためのプログラムを作成する場合、プログラムの仕様をブロック図等を用いて記述し、そのブロック図をもとにプログラマが計算機言語を用いたプログラムコードを作成する。そして、作成されたプログラムコードを、機械語に変換するコンパイラによって、機械語に変換し、計算機で実行可能なプログラムを製作する。
【０００３】
また、ブロック図を、計算機言語によるプログラムコードへ直接に変換する装置やプログラムが存在する。特許文献１は、ブロック図を含んでいる設計仕様書から制御用プログラムを生成する技術を開示している。しかしながら、特許文献１における機械語に変換する機能は、予め設定された方法で設計仕様書から機械語に変換するものである。したがって、一部だけ関数呼び出しを利用したり、関数呼び出しをせずに関数を組み込むようにするといった調整が困難であり、限られたハードウェア資源で動作するようにプログラマがプログラムコードを調整して生成する場合より、プログラムはより大きいものとなり、その実行速度は遅くなるという問題がある。
【０００４】
なお、本明細書において、計算機言語とは、Ｃ言語や、アセンブラ等の人間が直接読める言語体系をいう。機械語とは、計算機が直接実行できる言語体系をいう。したがって、プログラムコードが計算機言語により表記されているときは、プログラマはその内容を読み解くことができるが、機械語に変換すると通常は読解不可能になる。
【特許文献１】特開平５−８８８６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記問題に鑑み、ブロック図から直接、計算機言語によるプログラムを自動生成する際に、限られたハードウェア資源で効率よく動作するプログラムを自動生成することができるようにすることが求められている。
【課題を解決するための手段】
【０００６】
本発明は、処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成方法であって、以下のような特徴を有する方法を提供する。本発明方法は、処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、入力された処理手順を処理手順記憶部に格納するステップと、前記処理手順記憶部から読み出された前記処理手順中の各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データを入力手段が受け付ける第２受付ステップと、第２受付ステップで受け付けた選択指定データを選択指定データ記憶部に格納するステップと、ブロック要素のそれぞれについてコンピュータのプログラムコード生成手段がブロック図の全体的構成と個々のブロック要素と選択指定データとに基づいてプログラムコードを生成するプログラムコード生成ステップを含む。そして、該プログラムコード生成ステップは、選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、プログラムコード生成手段が計算機言語によって記述するステップと、選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、プログラムコード生成手段が、コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップとを含んでなる。
【０００７】
本明細書および請求の範囲において用いられる用語のうち、入力手段とは、キーボードやマウスなどのユーザの操作による入力手段のほか、フロッピー（登録商標）ディスクなどの記録媒体による入力、あるいは通信回線やＬＡＮ（ローカルエリアネットワーク）などの電気信号による入力を受け付ける手段を含む。記憶手段とは、文字や数字などのデータや、プログラムなどを記憶するための手段である。例えば、コンピュータ内のランダムアクセスメモリ、ハードディスクなどである。演算手段とは、プログラムを実行するための数値計算手段のことである。例えば、一般に中央処理装置すなわちＣＰＵといわれているものである。コンピュータとは、上記のような入力手段と、記憶手段と、演算手段とを少なくとも含む電子計算機をいう。
【０００８】
また、第２受付ステップで受け付けられる選択指定データは、ブロック要素と共にブロック図に含めることができる。よって、ユーザが該データをブロック図に記載することによって、該データを入力手段が受け付けることが可能である。
【０００９】
さらに、複数のブロック図から計算機言語によるプログラムを生成する場合には、本発明は、処理手順を表記した複数のブロック図に基づく計算機言語によるプログラムの自動生成方法であって、以下の特徴を有する方法を提供する。本発明方法は、処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、入力された処理手順を処理手順記憶部に格納するステップと、複数のブロック図の実行優先順位を示す実行優先順位データを入力手段が受け付ける第２受付ステップと、第２受付ステップで受け付けた実行優先順位データをプロジェクト情報記憶部に格納するステップと、前記処理手順記憶部から読み出された前記処理手順中のブロック要素のそれぞれについてコンピュータのプログラムコード生成手段がブロック図の全体的構成と個々のブロック要素と実行優先順位データとに基づいてプログラムコードを生成するプログラムコード生成ステップを含む。該プログラムコード生成ステップは、プログラムコード生成手段が、実行優先順位データと所定の判別閾値データとに基づいて、複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別する判別ステップと、該判別ステップによって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、プログラムコード生成手段が、コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと、該判別ステップによって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、プログラムコード生成手段が計算機言語によって記述するステップとを含んでなる。
【００１０】
また、本発明は、処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成装置であって、以下の特徴を有する装置を提供する。本発明装置は、ブロック図の作成に用いられ処理手順を表す複数のブロック要素それぞれに対応する関数について、計算機言語による該関数のプログラムコードを関数情報として格納する関数情報記憶部と、処理手順を表す複数のブロック要素を含んでなるブロック図の入力と各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データの入力とを受け付ける入力手段と、ブロック図の入力によって受け付けた処理手順を格納する処理手順記憶部と、入力手段によって受け付けた選択指定データを格納する選択指定データ記憶部と、前記処理手順記憶部から読み出された前記処理手順中のブロック要素のそれぞれについてブロック図の全体的構成と個々のブロック要素と選択指定データとに基づいてプログラムコードを生成するプログラムコード生成手段を備える。該プログラムコード生成手段は、選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、計算機言語によって記述する関数呼び出し手段と、選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述する関数組み込み手段とを備える。
【００１１】
また、複数のブロック図に基づいて計算機言語によるプログラムを自動生成する場合には、本発明は、処理手順を表記した複数のブロック図に基づく計算機言語によるプログラムの自動生成装置であって、以下の特徴を備える装置を提供する。本発明装置は、ブロック図の作成に用いられ処理手順を表す複数のブロック要素それぞれに対応する関数について、計算機言語による該関数のプログラムコードを関数情報として格納する関数情報記憶部と、処理手順を表す複数のブロック要素を含んでなるブロック図の入力と複数のブロック図の実行優先順位データの入力とを受け付ける入力手段と、ブロック図の入力によって受け付けた処理手順を格納する処理手順記憶部と、入力手段によって受け付けた実行優先順位データを格納するプロジェクト情報記憶部と、前記処理手順記憶部から読み出された前記処理手順中のブロック要素のそれぞれについてブロック図の全体的構成と個々のブロック要素と実行優先順位データとに基づいてプログラムコードを生成するプログラムコード生成手段を備える。該プログラムコード生成手段は、実行優先順位データと所定の判別閾値データとに基づいて、複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別する判別手段と、この判別手段によって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述する手段と、判別手段によって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、計算機言語によって記述する手段とを備える。
【００１２】
また、本発明は、処理手順を表記したブロック図に基づく計算機言語によるプログラムの自動生成方法をコンピュータに実行させるためのコンピュータプログラムであって、以下の特徴を備えるコンピュータプログラムを提供する。本発明のコンピュータプログラムは、処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、入力された処理手順を処理手順記憶部に格納するステップと、各ブロック要素について関数呼び出し処理と関数組み込み処理とのいずれを行うかに関する選択指定データを入力手段が受け付ける第２受付ステップと、第２受付ステップで受け付けた選択指定データを選択指定データ記憶部に格納するステップと、前記処理手順記憶部から読み出された前記処理手順中のブロック要素のそれぞれについてコンピュータのプログラムコード生成手段がブロック図の全体的構成と個々のブロック要素と選択指定データとに基づいてプログラムコードを生成するステップをコンピュータに実行させるためのコンピュータプログラムである。プログラムコード生成ステップは、選択指定データ記憶部の選択指定データによって関数呼び出し処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、プログラムコード生成手段が計算機言語によって記述するステップと、選択指定データ記憶部の選択指定データによって関数組み込み処理が選択指定されているブロック要素に対しては、該ブロック要素と対応する関数について、プログラムコード生成手段が、コンピュータに接続した記憶手段に予め格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップとを含む。
【００１３】
さらに、複数のブロック図から計算機言語によるプログラムを生成する手段としてコンピュータを機能させる場合には、本発明は、処理手順を表記した複数のブロック図に基づく計算機言語によるプログラムの自動生成方法をコンピュータに実行させるためのコンピュータプログラムであって、以下の特徴を備えるコンピュータプログラムを提供する。本発明のコンピュータプログラムは、処理手順を表す複数のブロック要素を含んでなるブロック図の入力をコンピュータの入力手段により受け付ける第１受付ステップと、入力された処理手順を処理手順記憶部に格納するステップと、複数のブロック図の実行優先順位を示す実行優先順位データを入力手段が受け付ける第２受付ステップと、第２受付ステップで受け付けた実行優先順位データをプロジェクト情報記憶部に格納するステップと、前記処理手順記憶部から読み出された前記処理手順中のブロック要素のそれぞれについてコンピュータのプログラムコード生成手段がブロック図の全体的構成と個々のブロック要素と実行優先順位データとに基づいてプログラムコードを生成するステップをコンピュータに実行させるためのコンピュータプログラムである。該プログラムコード生成ステップは、プログラムコード生成手段が、実行優先順位データと所定の判別閾値データとに基づいて、複数のブロック図を優先順位の高いブロック図と優先順位の低いブロック図とに判別するステップと、判別ステップによって、実行優先順位が高いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、プログラムコード生成手段が、コンピュータに接続した記憶手段に予めに格納されている計算機言語による該関数のプログラムコードを記憶手段から呼び出し、該プログラムコードを用いて計算機言語によるプログラムコードを記述するステップと、判別ステップによって、実行優先順位が低いブロック図であると判別されたブロック図のブロック要素に対しては、該ブロック要素と対応する関数について、計算機言語による該関数のプログラムコードを呼び出すための呼び出し命令を、プログラムコード生成手段が計算機言語によって記述するステップとを含む。
【発明の効果】
【００１４】
本発明においては、ブロック図から直接、計算機言語によるプログラムを自動生成する装置と方法とプログラムとにおいて、限られたハードウェア資源で効率よく動作するようなプログラムを自動生成することができる。まず、本発明においては、ブロック図から計算機言語への変換に際して、生成される機械語の量が多くなるが実行速度の速い関数組み込み処理と、生成される機械語の量は少ないが実行速度の遅い関数呼び出し処理とを、個々の関数に対して指定可能である。また、前記選択指定はユーザがブロック図上に指定することができる。したがって、コード量と実行速度を簡単に調整することができる。実行速度優先の部分では、関数組み込み処理を指定することで、関数呼び出し処理による余分な処理によって、実行速度が遅くなることを防止する。機械語の量を節約する部分では、関数呼び出し処理を指定し、生成される機械語の量を減らすことができる。したがって、計算機言語から機械語への変換の質が向上する。また、特別なプログラミング技術を有しないユーザによっても、本発明を用いて、簡単に実行速度とコード量の関係を調整することが可能となり、プログラム開発に要する時間も短縮できる。
【００１５】
また、本発明を用いれば、プログラム実行において、実行優先順位の高いものは、実行速度優先にし、優先順位が低いものは、機械語の量を減らすことが、プログラム開発時に、ブロック図ごとに一括して指定できる。したがって、限られた資源を有効に配分してプログラムを作成することができる。また、各関数ごとに、変換方法（関数組み込み処理と関数呼び出し処理）を指定しなくても、ブロック図ごとに変換方法を一括指定することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を添付の図により説明する。図１に本発明の一実施形態であるプログラム自動生成装置の構成図を示す。本装置１０は、それ自体が一般的なコンピュータとソフトウェアとを協働させることにより実現される。すなわち、コンピュータの入力手段１２、記憶手段１４、演算手段１６等のハードウェア資源がソフトウェアにより具体的に動作して専用装置としての動作が実現する。
【００１７】
本装置１０は、入力手段１２と記憶手段１４と演算手段１６により実現できるブロック図作画部１７を有する。また、本装置１０は、ブロック要素情報記憶部１８と関数情報記憶部１９と処理手順記憶部２０とを備えることができる。前記ブロック要素情報記憶部１８は、ブロック図の作画に使用されるブロック要素４０の要素情報と各ブロック要素に関連付けられる付属情報とを格納する。ブロック要素４０の要素情報の一例を図３に示す。そして、ブロック要素４０の付属情報の一例を図４に示す。前記関数情報記憶部１９は、各ブロック要素に対応する関数の関数情報を格納する。関数情報の一例を図５に示す。処理手順記憶部２０は、ユーザが作成したブロック図を格納する。図４に示す前記各ブロック要素の付属情報にはライブラリ名と関数名と引数情報とが含まれる。図５に示す前記関数情報には、ライブラリ名と関数名とソースファイルとヘッダファイルとが含まれ、ソースファイルおよびヘッダファイルには、それぞれの処理内容を計算機言語で記述したプログラムコードが含まれる。
【００１８】
また、本装置１０は、選択指定データ記憶部２１を備えることができる。選択指定データ記憶部２１は、選択指定データを格納できる。選択指定データとは、ブロック要素のそれぞれに対応する関数について、関数呼び出し処理または関数組み込み処理のどちらの処理を行うかを指定するデータである。
【００１９】
加えて、本装置１０は、プロジェクト情報記憶部２２を有することができる。プロジェクト情報記憶部２２は、複数のブロック図を管理するための情報として、ブロック図が格納されているファイル名、ブロック図の実行優先順位等の情報を格納する。
【００２０】
。
また、本装置１０は、プログラムコード生成部２３を備えることができる。プログラムコード生成部２３は、ユーザが作成したブロック図から、計算機言語によるプログラムを生成するものである。
【００２１】
また、本装置１０は、生成プログラム記憶部２４と関数処理情報記憶部２５とを備えることができる。生成プログラム記憶部２４には、生成された計算機言語によるプログラムを格納できる。関数処理情報記憶部２５には、関数処理情報を格納できる。関数処理情報とは、ブロック図で使用されたブロック要素に対応した関数の関数情報のソースファイルおよびヘッダファイルのデータであって、計算機言語で記述されたデータである。
【００２２】
また、本装置１０は、コンパイラ部２６と機械語記憶部２７とを備えることができる。前記コンパイラ部２６は、生成プログラム記憶部２４に格納された計算機言語によるプログラムと、関数処理情報記憶部２５に格納された計算機言語による関数処理情報とから、機械語を生成することができる。機械語記憶部２７は、コンパイラ部２６によって生成された機械語を格納する。
【００２３】
次に、本装置１０を用いて本発明にかかるプログラム自動生成方法の一実施形態について説明する。ユーザは、ブロック図作画部１７で、入力手段１２によってデータを入力することによりブロック図を作成する。ブロック図には、所望の処理手順が、図、文字、記号等によって表記される。本装置１０では、ブロック図作画部１７において、図３の要素情報に示すような各種のブロック要素４０が選択可能となっており、ユーザは、この要素情報から目的のブロック要素を選択し、そのブロック要素を適宜組み合わせて、コンピュータを含むシステムの動作に必要な処理の手順を記述することができる。ブロック要素のそれぞれには、少なくとも一つの関数が対応している。各ブロック要素と対応する関数の関数情報は、計算機言語によるプログラムコードを含み、関数情報記憶部１９に格納されている。図２のブロック要素「関数１」を例にとると、関数１の関数情報は図６に示すような計算機言語で記述されたプログラムコードを含み、関数情報記憶部１９に格納されている。
【００２４】
本実施形態では、ブロック図に記載されたブロック要素と対応する関数それぞれについて、計算機言語によるプログラムコードへの変換を、関数呼び出し処理または関数組み込み処理のどちらの処理で行うか選択可能である。関数呼び出し処理は、共通の機械語としてまとめられた関数を呼び出す処理であり、関数組み込み処理は、関数と同等の処理を行うプログラムコードを新たに自動生成する処理であって、それぞれの具体的な処理方法は後述する。
【００２５】
ブロック図から計算機言語によるプログラムへの変換作業を自動で行う場合、そのプログラムから変換される機械語の量と機械語の実行速度は、トレードオフの関係にある。すなわち、実行速度を優先するように機械語に変換する場合、機械語の量が多くなり、機械語を格納するためにより多くの領域が必要になる。本実施態様では、関数組み込み処理がこの場合に該当する。機械語の格納領域を少なくするためには、関数呼び出しを用いて、共通の機械語をまとめる方法があるが、関数を呼び出すと、実行速度が遅くなる。本実施態様では、関数呼び出し処理がこの場合に該当する。本発明では、ブロック図に記載されたブロック要素と対応する関数それぞれについて、計算機言語によるプログラムコードへの変換を、関数呼び出し処理または関数組み込み処理のどちらの処理で行うか選択可能であるため、このコード量と実行速度のトレードオフの関係をユーザが調整することができる。
【００２６】
本装置１０においては、ブロック図に記載されたブロック要素と対応する関数それぞれについて、ユーザは、関数呼び出し処理または関数組み込み処理のどちらの処理を行うかという選択指定を、入力手段を通じてブロック図に表記することができる。表記された指定は、選択指定データとして、選択指定データ記憶部２１に格納される。図２に示すブロック図では、ブロック要素（図２では「関数１」として例示されている）の中に、選択指定データが文字情報として表示される。このように、本発明においては、特別なプログラミング技術を有しないユーザであっても、関数の変換方法を容易に指定することが可能である。
【００２７】
次に、本実施の形態における関数呼び出し処理又は関数組み込み処理による計算機言語への変換の流れを、図８のフローチャートで示し、図２のブロック図におけるブロック要素（関数１）を例にとって説明する。まず、ブロック図に記載されたブロック要素に対して、変換方法が、関数呼び出しと指定されている場合、図２のブロック図前半部（関数呼び出し）３０では、プログラムコード生成部が、当該部分を、以下のような計算機言語に変換して自動記述する（ステップ１１０）。
【００２８】
ＴＥＭＰ  ＝  Ｆｕｎｃｔｉｏｎ１（ＩＮ１，ＩＮ２）；
【００２９】
これに対し、ブロック図に記載されたブロック要素に対して、関数組み込みが指定されている場合には、プログラムコード生成部２３によって、以下のような処理が行われる。
【００３０】
１）ブロック要素と対応する関数の関数情報からソースコードを取得する（ステップ１２２）。
２）取得したソースコード内にある自動変数は、自動的に一時的な別名の変数に置き換える（ステップ１２４）。
３）関数の引数部分は、ブロック図に記載された処理の流れに従って、引数として渡される変数に直接置き換える（ステップ１２６）。
４）出力部（ｒｅｔｕｒｎ）は、ブロック図に記載された処理の流れに従って、出力変数への代入に置き換える（ステップ１２８）。
【００３１】
これら１）〜４）のステップ（ステップ１２２〜ステップ１２８）によって自動記述された計算機言語によるプログラムコードは、当該ブロック図上の他のデータを用いて生成された計算機言語によるプログラムコードに直接組み込まれる（ステップ１３０）。
【００３２】
図２のブロック図後半部（関数組み込み）３１を例にとって、プログラムコード生成部２３による上記１）〜４）の処理の具体例を示す。
【００３３】
１）まず、ブロック要素（関数１）と関連付けられている付属情報のライブラリ名と関数名とから、対応する関数の関数情報を検出し、該関数情報中のソースファイルから計算機言語によるプログラムコード（ソースコード）を取得する（ステップ１２２）。
２）図９に示すように、関数１の自動変数Ａ，Ｂは、ＴＥＭＰ＿Ａ、ＴＥＭＰ＿Ｂに置き換える（ステップ１２４）。
３）図１０に示すように、関数１の引数Ｘ，Ｙは、関数１に引数として渡されるＴ２とＩＮ４に置き換える（ステップ１２６）。
４）図１１に示すように、ｒｅｔｕｒｎ  は、ブロック図に示される、関数１の出力変数（Ｔ３）への代入値に置き換える（ステップ１２８）。
【００３４】
また、上記処理によって、新たに生成されたプログラムコードには、その開始位置と終了位置に、当該プログラムコードが、関数組み込み処理によって自動記述されたコードであることを示すコメントが、以下に示すように計算機言語で自動記述される。
【００３５】
／＊  関数１を組み込みで変換する  開始＊／
ｉｎｔ  ＴＥＭＰ＿Ａ，ＴＥＭＰ＿Ｂ；
ＴＥＭＰ＿Ａ  ＝  Ｔ２＋  ＩＮ４；
ＴＥＭＰ＿Ｂ  ＝  Ｔ２＊ＩＮ４；
Ｔ３＝    ＴＥＭＰ＿Ａ＋ＴＥＭＰ＿Ｂ；
／＊  関数１を組み込みで変換する  終了＊／
【００３６】
上記関数呼び出し又は関数組み込みによって生成されたプログラムコードが組み込まれた計算機言語によるプログラムは、生成プログラム記憶部２４に格納される。
【００３７】
また、ブロック図で使用した関数については、プログラムコード生成部２３によって、ブロック図に記述されているブロック要素の付属情報のライブラリ名と関数名とから、該関数の関数情報が検出され、該関数情報中のソースファイルおよびヘッダファイルが取得される。取得された情報は、関数処理情報として関数処理情報記憶部２５に格納される。
【００３８】
そして、コンパイラ部２６が、生成プログラム記憶部２４に格納された計算機言語によるプログラムと、関数処理情報記憶部２５に格納された計算機言語による関数処理情報とから機械語を生成する。
【００３９】
また、複数のブロック図に基づいて計算機言語によるプログラムを自動生成する場合には、計算機言語への変換態様（関数呼び出し処理とするか関数組み込み処理とするか）を、ユーザが個別に指定してブロック図に記載するのではなく、複数のブロック図に対して一括して指定できる。
【００４０】
複数のブロック図に基づいて計算機言語によるプログラムを自動生成する場合には、各ブロック図から生成されるプログラムの実行速度とコード量を、そのプログラムの実行優先順位に依存して定めるのが、効率が良い。つまり、実行優先順位が高いものは、実行速度優先でプログラム生成すると効率が良い。優先順位の高いものに処理時間を多く取られると、優先順位の低いプログラム処理への実行時間が圧迫されてしまうからである。したがって、実行優先順位が高いプログラムを生成する場合には、関数組み込み処理によってプログラム生成すると効率が良い。また、実行優先順位が低いものは、コード量を節約する方法でプログラム生成すると効率が良い。全てのプログラムを、実行速度優先にすると、生成される機械語の量が多くなるが、機械語を格納する領域には制限があるからである。したがって、実行優先順位が低いプログラムを生成する場合には、関数呼び出し処理によってプログラムを生成すると効率が良い。
【００４１】
本実施態様では、各ブロック図に対して、ユーザがそれぞれの実行優先順位を指定しておく。ブロック図の実行優先順位は、ブロック図から生成されるプログラムの実行優先順位に従って指定される。予め指定されたこの実行優先順位データは、プロジェクト情報記憶部２２に格納される。前記実行優先順位データと所定の判別閾値データとに基づいて、前記プログラムコード生成部が、複数のブロック図を、優先順位の高いブロック図と優先順位の低いブロック図とに判別する。ここで、各関数に対して、実行優先順位が高いブロック図の関数は、計算機言語への変換を関数組み込みとし、実行優先順位が低いブロック図の関数は、関数呼び出しとして、変換態様が自動で一括指定される。したがって、本実施態様では、ユーザが各関数ごとに、変換態様を指定する手間なく、ブロック図ごとに変換態様を一括指定することができる。
【００４２】
［他の実施形態］
本発明にかかるプログラム自動生成方法、装置およびプログラムは、上記に説明した形態に限られるものではない。他の実施形態において、関数情報はさらに版数情報を含むことができる。版数情報は、関数情報において関数の内容が変更されるため、これを適切に管理するために与えられる関数の内容の新旧を示す数値である。一般に、版数情報が示す数値が大きいほど新しい版である。
【００４３】
プログラムコード生成部によって、関数組み込みの処理が行われる際、ブロック要素に対応する関数の関数情報からソースコードが取得される。このとき、取得されたソースコードの版数情報は版数情報記憶部に記憶される。また、各関数に対応して新たに生成されたプログラムコードの開始位置と終了位置とに、関数名と版数情報とを含むコメントが計算機言語で自動記述される。その一例を以下に示す。
【００４４】
／＊ＰＣＡＤ＿ＩＮＦＯ＿ＳＴＡＲＴ  関数名＝Ｆｕｎｃｔｉｏｎ１  版数＝０．１
引数１＝ＴＥＭＰ＿Ａ  引数２＝ＴＥＭＰ＿Ｂ＊／
（ここに関数の内容を組み込んだプログラムコードが自動記述される）
／＊ＰＣＡＤ＿ＩＮＦＯ＿ＥＮＤ  関数名＝Ｆｕｎｃｔｉｏｎ１  版数＝０．１＊／
【００４５】
ユーザが関数情報の内容を変更した場合、既に生成されたプログラムコードを変更後の関数情報の内容で更新するためには、変更後の関数情報を用いて、再度、プログラムコードを生成し直すという方法が考えられる。しかしながら、ユーザが既に生成されたプログラムコードに手を加えており、一括してプログラムを生成し直すのではなく、関数部分のみに対して変更後の関数情報を反映したい場合、本実施形態においては、以下のような処理が可能である。なお、関数に対応するプログラムコード部分以外のプログラムコードのみを変更し、関数に対応するプログラムコード部分を変更する必要がない場合は、本実施形態の対象ではない。
【００４６】
まず、処理手順記憶部に格納されているブロック図のブロック要素に対応する関数の関数名を取得し、版数情報記憶部から対応する版数情報を取得する（第１ステップ）。
【００４７】
次に、第１ステップのブロック要素と対応する関数の関数情報に含まれている版数情報と、第１ステップで版数情報記憶部から取得した版数情報とを比較し、関数情報に含まれている版数情報が示す版数が、版数情報記憶部から取得した版数情報が示す版数よりも新しい（数字が大きい）場合には、更新対象として、第１ステップで取得した情報を、一時メモリに記憶する（第２ステップ）。
【００４８】
さらに、ブロック図に記載されているすべてのブロック要素について上記第１ステップおよび第２ステップを行う。一時メモリに更新対象が記憶されていない場合、すなわち、関数情報に含まれている版数情報が示す版数が、版数情報記憶部から取得した版数情報が示す版数よりも新しくない場合は、既に生成されたプログラムコードに対する更新の必要がないため、ここで処理は終了する。一方、一時メモリに更新対象が記憶されている場合は、当該ブロック図からすでに生成されたプログラムコードであって、関数に対応するプログラムコード部分を含むプログラムコードを、生成プログラム記憶部から取得する（第３ステップ）。
【００４９】
そして、第３ステップで取得したプログラムコード内のコメントを検索する。例えば、上記に例示したコメントがプログラムコード内に記述されている場合には、関数に対応したプログラムコード部分の開始位置を示すコメントの先頭文字列を、／＊ＰＣＡＤ＿ＩＮＦＯ＿ＳＴＡＲＴと比較する（第４ステップ）。
【００５０】
一致した場合は、コメント内に記載された関数名と版数情報とを取得する（第５ステップ）。プログラムコードを最後まで検索して、一致しなかった場合は、処理が終了する。
【００５１】
第５ステップで取得した情報を、一時メモリに記憶された更新対象を示す情報と比較する（第６ステップ）。
【００５２】
第５ステップで取得した情報が、一時メモリに記憶された更新対象を示す情報と一致した場合、関数に対応したプログラムコードの終了位置を示すコメントの先頭文字列（例えば、上記のコメント例の場合は、／＊ＰＣＡＤ＿ＩＮＦＯ＿ＥＮＤ）を検索し、開始位置を示すコメントとの間に記述されたプログラムコードについて、関数情報から新しい関数内容を取得し、計算言語によるプログラムコードを記述する。またコメントに記載された情報（例えば、関数名、版数、引数等）についても変更後の内容を反映させて書き換える。第５ステップで取得した情報が、一時メモリに記憶された更新対象を示す情報と一致しなかった場合は第４ステップへ戻る。
【００５３】
また、さらに他の実施態様として、本発明にかかる装置は、選択指定データ記憶部とプロジェクト情報記憶部とのいずれか一方のみを備えた装置としても実施することができる。本発明を用いて生成されるプログラムは、本発明にかかる装置で用いられるコンピュータによる処理に用いられるプログラムであってもよいし、他のコンピュータによる処理に用いられるプログラムであってもよい。本発明において使用されるブロック図は、上記に説明した形態のように、本発明にかかる装置を用いて作成されてもよいし、予め作成されたブロック図をスキャナ等の入力手段を用いて本発明にかかる装置に入力してもよい。本発明における選択指定データが文字情報としてブロック図に記載される場合は、表示する空間をある程度必要とするため、ブロック図が見づらくなる。そこで、変換方法を記号で示すこともできる。例えば、図７に示すように、ブロック要素の隣に変換方法を示す記号を記載することができる。ブロック要素及びブロック要素に対応する関数情報は予め本装置に格納されていてもよく、ユーザの入力によって新たに作成および格納されてもよい。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態であるプログラム自動生成装置の構成図である。
【図２】ブロック図の記載例を示す説明図である。
【図３】要素情報の一例を示す説明図である。
【図４】ブロック要素の付属情報の一例を示す説明図である。
【図５】関数情報の一例を示す説明図である。
【図６】関数１の計算機言語での記述例を示す説明図である。
【図７】変換処理の指定方法表現の一例を示す説明図である。
【図８】本発明の一実施形態による変換処理の流れを示すフローチャートである。
【図９】関数組み込み処理の具体的な手順を示す説明図である。
【図１０】関数組み込み処理の具体的な手順を示す説明図である。
【図１１】関数組み込み処理の具体的な手順を示す説明図である。
【符号の説明】
【００５５】
１０  本装置
１２  入力手段
１４  記憶手段
１６  演算手段
１７  ブロック図作画部
１８  ブロック要素情報記憶部
１９  関数情報記憶部
２０  処理手順記憶部
２１  選択指定データ記憶部
２２  プロジェクト情報記憶部
２３  プログラムコード生成部
２４  生成プログラム記憶部
２５  関数処理情報記憶部
２６  コンパイラ部
２７  機械語記憶部
３０  関数呼び出し表示
３１  関数組み込み表示
４０  ブロック要素
【図１】
2006301989.tif 000003
【図２】
2006301989.tif 000004
【図３】
2006301989.tif 000005
【図４】
2006301989.tif 000006
【図５】
2006301989.tif 000007
【図６】
2006301989.tif 000008
【図７】
2006301989.tif 000009
【図８】
2006301989.tif 000010
【図９】
2006301989.tif 000011
【図１０】
2006301989.tif 000012
【図１１】
2006301989.tif 000013