(57)【要約】【課題】単位プログラムの実行順序が誤って設定されることを防止する。【解決手段】このプログラム作成支援装置１０は、複数の関数（単位プログラム）Ａ〜Ｆとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、適正な実行順序に修正したプログラム（メインルーチン）を出力する処理を行う。具体的には、各関数について、その関数の処理の中に当該関数以外の他の関数にて算出される変数を参照して行う処理が含まれているか否かを調査して、変数を参照する関数が、その変数を算出する関数より後で実行される実行順序を求める。例えば、関数Ｂに含まれる代入式「ｂ＝ｆ（ｄ）」で参照される変数「ｄ」は、関数Ｄで算出される変数であるため、関数Ｂが関数Ｄより後で実行されるように実行順序を修正する。これにより、複数の関数が適正な実行順序で実行されるようにプログラムを修正することができる。【選択図】　図２
2004021308.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を支援するためのプログラム作成支援装置であって、
前記各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、
前記検査手段により前記算出値を参照して行う処理が含まれていると判断された単位プログラムが、該算出値を算出する単位プログラムより後で実行される前記複数の単位プログラムの実行順序を求める順序算出手段と、
を備えたことを特徴とするプログラム作成支援装置。
【請求項２】
請求項１に記載のプログラム作成支援装置において、
前記順序算出手段が、下記（ａ１）〜（ａ３）の手順で前記実行順序を求めることを特徴とするプログラム作成支援装置。
（ａ１）：前記複数の単位プログラムについて任意の実行順序を定める。
（ａ２）：前記複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると前記検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
（ａ３）：前記複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記（ａ２）の手順を繰り返す。
【請求項３】
請求項１又は請求項２に記載のプログラム作成支援装置において、
前記複数の単位プログラムを前記順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段を備えたこと、
を特徴とするプログラム作成支援装置。
【請求項４】
複数の単位処理を所定の順序で行うプログラムの作成を支援するためのプログラム作成支援装置として、コンピュータを機能させるためのプログラム作成支援プログラムであって、
前記各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、
前記検査手段により前記算出値を参照して行う処理が含まれていると判断された単位プログラムが、該算出値を算出する単位プログラムより後で実行される前記複数の単位プログラムの実行順序を求める順序算出手段として、
コンピュータを機能させることを特徴とするプログラム作成支援プログラム。
【請求項５】
請求項４に記載のプログラム作成支援プログラムにおいて、
前記順序算出手段が、下記（ｂ１）〜（ｂ３）の手順で前記実行順序を求めることを特徴とするプログラム作成支援プログラム。
（ｂ１）：前記複数の単位プログラムについて任意の実行順序を定める。
（ｂ２）：前記複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると前記検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
（ｂ３）：前記複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記（ｂ２）の手順を繰り返す。
【請求項６】
請求項４又は請求項５に記載のプログラム作成支援プログラムにおいて、
コンピュータを、前記複数の単位プログラムを前記順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段としても機能させること、
を特徴とするプログラム作成支援プログラム。
【請求項７】
請求項４ないし請求項６の何れか１項に記載のプログラム作成支援プログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を容易にするための技術に関するものである。
【０００２】
【従来の技術】
従来より、例えば、自動車のエンジンを制御する電子制御装置においては、マイクロコンピュータ（以下、マイコンという）が、記憶しているプログラムに従いエンジン制御のための処理を行うようになっている。例えば、１８０°ＣＡ毎に実行するプログラムにて、吸気管圧変化量を演算する処理や、この吸気管圧変化量に基づき加減速時燃料補正量を演算する処理等を行う。尚、「ＣＡ」とはクランク軸の回転角度（クランクアングル）を示しており、１８０°ＣＡとは、クランク軸の１８０°分の回転角度を意味する。
【０００３】
また一般に、こうしたプログラムは、処理内容毎の単位プログラム（Ｃ言語では、関数と呼ばれる）に分けられている。前述した例で言えば、吸気管圧変化量を演算する単位プログラム、加減速時燃料補正量を演算する単位プログラム、…という具合である。そして、各単位プログラムは、あるルーチンにて予め設定されている順序で実行されるようになっており、この例のように、加減速時燃料補正量が吸気管圧変化量に基づいて演算されるような場合には、加減速時燃料補正量を演算する単位プログラムが吸気管圧変化量を演算する単位プログラムよりも後で実行されるような順序に設定される。
【０００４】
【発明が解決しようとする課題】
ここで、単位プログラムの実行順序を設定するのはプログラマーであり、プログラマーが誤った実行順序を設定してしまうことも起こり得る。そして、例えば、加減速時燃料補正量を演算する単位プログラムが、吸気管圧変化量を演算する単位プログラムよりも前に実行されるような順序に設定されると、加減速時燃料補正量が、１８０°ＣＡ前に演算された吸気管圧変化量に基づいて演算されることとなり、燃料補正の遅れによる加速の応答遅れを招いてしまう。
【０００５】
本発明は、こうした問題に鑑みなされたものであり、単位プログラムの実行順序が誤って設定されることを防止することを目的としている。
【０００６】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項１に記載のプログラム作成支援装置は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を支援するためのものである。そして、本装置では、検査手段が、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査し、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を、順序算出手段が求める。
【０００７】
このような請求項１のプログラム作成支援装置によれば、複数の単位プログラムの適正な実行順序を確実に求めることができる。そのため、こうして求められた実行順序に基づきプログラマーがプログラムの作成や修正を行うようにすれば、誤った実行順序が設定されてしまうことを防ぐことができ、その結果、複数の単位処理が正しい順序で行われるようにすることができる。
【０００８】
ところで、順序算出手段は、複数の単位プログラムの適正な実行順序を、例えば請求項２に記載の如く、下記（ａ１）〜（ａ３）の手順で求めるように構成することができる。
（ａ１）：複数の単位プログラムについて任意の実行順序を定める。
【０００９】
（ａ２）：複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【００１０】
（ａ３）：複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記（ａ２）の手順を繰り返す。
このように構成すれば、適正な実行順序を簡単且つ確実に求めることができる。
【００１１】
次に、請求項３に記載のプログラム作成支援装置は、作成手段を備えており、この作成手段が、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する。このプログラム作成支援装置によれば、順序算出手段により求められた適正な実行順序に基づくプログラムの作成や修正をわざわざプログラマーが行う必要が無くなるため、プログラマーの負担を軽減することができる。
【００１２】
一方、請求項４に記載のプログラム作成支援プログラムは、複数の単位処理を所定の順序で行うプログラムの作成を支援するためのプログラム作成支援装置として、コンピュータを機能させるためのものである。そして特に、本プログラム作成支援プログラムは、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を求める順序算出手段として、コンピュータを機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項１の装置について述べた効果と同様の効果を得ることができる。
【００１３】
また、請求項５に記載のプログラム作成支援プログラムは、順序算出手段が、下記（ｂ１）〜（ｂ３）の手順で実行順序を求めることを特徴としている。
（ｂ１）：複数の単位プログラムについて任意の実行順序を定める。
（ｂ２）：複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【００１４】
（ｂ３）：複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記（ｂ２）の手順を繰り返す。
このような請求項５のプログラム作成支援プログラムによれば、上記請求項２の装置について述べた効果と同様の効果を得ることができる。
【００１５】
また更に、請求項６に記載のプログラム作成支援プログラムは、コンピュータを、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段としても機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項３の装置について述べた効果と同様の効果を得ることができる。
【００１６】
尚、請求項４〜６のプログラム作成支援プログラムは、請求項７に記載のように、コンピュータ読み取り可能な記録媒体に記録されていてもよく、このような記録媒体によれば、所望のコンピュータを、請求項１〜３に記載のプログラム作成支援装置として機能させることができる。
【００１７】
【発明の実施の形態】
以下、本発明が適用された実施形態について、図面を用いて説明する。
まず図１は、実施形態のプログラム作成支援装置のハードウェア構成としてのパーソナルコンピュータ（以下、パソコンという）２の外観図である。尚、パソコン２は、図示しないが、外部からの入力操作を受け付けるためのキーボードやマウス等を備えている。
【００１８】
このパソコン２には、記録媒体（例えば、ＣＤ−ＲＯＭ，ＣＤ−Ｒ，フロッピー（登録商標）ディスク等）４に予め記録されていたプログラム作成支援プログラムが内部のハードディスクにインストールされており、本パソコン２は、そのプログラム作成支援プログラムを実行することにより、後述する図２のプログラム作成支援装置１０として機能する。
【００１９】
そして、このパソコン２からなる本実施形態のプログラム作成支援装置１０（換言すれば、プログラム作成支援装置として機能するパソコン２）は、プログラマーによって作成されたＣ言語のソースプログラムが記録された記録媒体（例えば、フロッピー（登録商標）ディスク，ＣＤ−Ｒ等）６からそのソースプログラムを読み込み、このプログラムを構成する複数の関数（単位プログラムに相当）の実行順序が誤って設定されている場合に、その順序を適正な実行順序に修正する処理を行う。
【００２０】
尚、本プログラム作成支援装置１０が処理対象とするソースプログラムとしては、例えば、自動車のエンジンを制御する電子制御装置のマイコンが実行するエンジン制御用プログラムが挙げられる。こうしたエンジン制御用プログラムは、関連性の高い処理毎に関数に分けられており、それら複数の関数がメインルーチンで設定された実行順序に従い実行されるようになっているが、プログラマーにより誤った実行順序が設定された場合には、エンジン制御のための処理が適正な順序で行われなくなるからである。
【００２１】
次に、本実施形態のプログラム作成支援装置１０の動作内容について説明する。
まず図２は、プログラム作成支援装置１０の機能を表すブロック図である。
図２に示すように、プログラム作成支援装置１０は、複数の関数（図２では、関数Ａ〜Ｆ）とこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、その実行順序を適正な実行順序に修正したプログラム（メインルーチン）を出力する処理を行う。具体的には、入出力テーブル作成処理と、実行順序更新処理と、実行順序更新後プログラム作成処理とを行う。以下、各処理について説明する。
【００２２】
まず、入出力テーブル作成処理について、図３のフローチャートを用いて説明する。
この入出力テーブル作成処理が開始されると、まずＳ１００にて、処理対象となるソースプログラムをテキスト形式で参照し、このプログラムを構成する関数を一つ選択する。ここで、このＳ１００の処理は、後述するＳ１８０の判定処理により、ソースプログラムを構成する全ての関数が選択されるまで繰り返し行われるようになっており、本処理では、各関数を、メインルーチンで定められている関数の実行順序と同一の順序で選択するようになっている。尚、関数を選択する順序がメインルーチンで定められている関数の実行順序と異なっていたとしても、最終的に得られる実行順序は同一である。
【００２３】
続いて、Ｓ１１０では、現在選択している関数（即ち、Ｓ１００にて選択した関数）についての情報を格納するための入出力テーブルを作成する。ここで作成する入出力テーブルは、図４に示すように、その関数の実行順序を格納するための実行順序格納領域と、その関数の中で行われる処理にて算出される変数（以下、算出変数という）を格納するための算出変数格納領域と、その関数の中で行われる処理にて参照される変数（以下、参照変数という）を格納するための参照変数格納領域とからなるものである。
【００２４】
続いて、Ｓ１２０では、現在選択している関数に仮の実行順序を付与し、その実行順序をＳ１１０にて作成した入出力テーブルの実行順序格納領域に格納する。具体的には、最初に選択した関数の実行順序を「１」、次に選択した関数の実行順序を「２」、…というように、関数を選択した順に実行順序を付与する。このため、ソースプログラムのメインルーチンで設定されている実行順序と同じ実行順序が各関数に付与されることとなる。尚、前述したように、本入出力テーブル作成処理で関数に付与される実行順序がどのような順序であっても、最終的に得られる実行順序は同一である。
【００２５】
続いて、Ｓ１３０では、現在選択している関数のプログラムを一行読み込む。続いて、Ｓ１４０では、Ｓ１３０にて読み込んだ行が代入式であるか否かを判定する。尚、ここで判定する代入式とは、例えば「ａ＝ｆ（ｋ）」のように、ある参照変数（この例ではｋ）を、ある演算式（この例ではｆ（ｘ）という関数）に当てはめて求めた演算結果を、ある算出変数（この例ではａ）に代入する、といった式のことである。
【００２６】
このＳ１４０で、読み込んだ行が代入式であると判定した場合には、Ｓ１５０へ移行し、この代入式の左辺の算出変数（例えば、代入式が「ａ＝ｆ（ｃ）」の場合には「ａ」）を、Ｓ１１０にて作成した入出力テーブルの算出変数格納領域に格納する。そして更に、Ｓ１６０へ移行し、この代入式の右辺式中の参照変数（例えば、代入式が「ａ＝ｆ（ｋ）」の場合には「ｋ」）を、Ｓ１１０にて作成した入出力テーブルの参照変数格納領域に格納して、Ｓ１７０へ移行する。
【００２７】
一方、Ｓ１４０で、読み込んだ行が代入式ではないと判定した場合には、そのままＳ１７０へ移行する。
Ｓ１７０では、現在選択している関数に、未だ読み込んでいない行が存在するか否かを判定する。
【００２８】
そして、Ｓ１７０で、未だ読み込んでいない行が存在すると判定した場合には、Ｓ１３０へ戻り、その読み込んでいない行を一行読み込み、前述した処理（Ｓ１４０〜Ｓ１６０）を繰り返す。
一方、Ｓ１７０で、未だ読み込んでいない行が存在しないと判定した場合には、Ｓ１８０へ移行し、ソースプログラムを構成する関数の中に未だ選択されていない関数が存在するか否かを判定する。
【００２９】
このＳ１８０で、未だ選択されていない関数が存在すると判定した場合には、Ｓ１００へ戻り、その選択されていない関数を一つ選択し、前述した処理（Ｓ１１０〜Ｓ１７０）を繰り返す。
一方、Ｓ１８０で、未だ選択されていない関数が存在しないと判定した場合には、本入出力テーブル作成処理を終了する。
【００３０】
以上のように、この入出力テーブル作成処理では、ソースプログラムを構成する全関数のそれぞれについて、その関数の実行順序とその関数に含まれる代入式の算出変数及び参照変数とを格納した図４の如き入出力テーブルを作成するようになっている。
【００３１】
次に、実行順序更新処理について、図５のフローチャートを用いて説明する。尚、本実行順序更新処理は、前述した入出力テーブル作成処理の終了後に行われる。
この実行順序更新処理が開始されると、まずＳ２００にて、実行順序が最も小さい関数を選択する。具体的には、各関数についての入出力テーブル（図４）を参照し、実行順序格納領域に格納されている実行順序が最も小さいものを選択する。
【００３２】
続いて、Ｓ２１０では、現在選択している関数（即ち、Ｓ２００にて選択した関数）についての入出力テーブルの参照変数格納領域に格納されている参照変数が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かを判定する。つまり、現在選択している関数の参照変数を算出変数とする関数が存在するか否かを判定するようになっている。
【００３３】
そして、Ｓ２１０で、現在選択している関数の参照変数を算出変数とする関数が存在すると判定した場合には、Ｓ２２０へ移行し、その参照変数を算出変数とする関数（以下、参照変数算出関数という）の実行順序が、現在選択している関数の実行順序より小さいか否か（即ち、前であるか否か）を判定する。つまり、参照変数算出関数の実行順序が現在選択している関数の実行順序よりも小さい場合には、実行順序として適正であるが、逆の場合には、現在選択している関数で変数を参照して行う処理が、その変数を算出する参照変数算出関数より前に実行されることとなり、実行順序として適正ではないため、何れであるかを判定するのである。尚、参照変数算出関数が複数存在する場合には、そのうちの最も実行順序が大きい関数のみを対象とする。
【００３４】
このＳ２２０で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さくない（即ち、大きいと）判定した場合には、Ｓ２３０へ移行する。そして、まず参照変数算出関数の実行順序より大きい実行順序の関数について、各関数の実行順序を、その実行順序に１を加算した値に更新する処理を行う。続いて、Ｓ２４０へ移行し、現在選択している関数の実行順序を、参照変数算出関数の実行順序に１を加算した値に更新し、Ｓ２００へ戻る。つまり、Ｓ２３０，Ｓ２４０では、現在選択している関数の実行順序が参照変数算出関数の実行順序の直後となるように、各関数の実行順序を更新する処理を行うようになっている。
【００３５】
一方、Ｓ２２０で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さいと判定した場合には、Ｓ２５０へ移行する。
また、Ｓ２１０で、現在選択している関数の参照変数を算出変数とする関数が存在しないと判定した場合にも、Ｓ２５０へ移行する。
【００３６】
Ｓ２５０では、現在選択している関数の次に実行順序の小さい関数が存在するか否かを判定する。
そして、Ｓ２５０で、関数が存在すると判定した場合には、Ｓ２６０へ移行し、その関数を選択した後、Ｓ２１０へ移行し、前述した処理（Ｓ２１０〜Ｓ２５０）を繰り返す。
【００３７】
一方、Ｓ２５０で、関数が存在しないと判定した場合には、本実行順序更新処理を終了する。
以上のように、この実行順序更新処理では、各関数の実行順序を、ある変数を参照する関数がその変数を算出する関数より後で実行される実行順序に修正する処理を行うようになっている。
【００３８】
次に、実行順序更新後プログラム作成処理について、図６のフローチャートを用いて説明する。尚、本実行順序更新後プログラム作成処理は、前述した実行順序更新処理の終了後に行われる。
この実行順序更新後プログラム作成処理が開始されると、まずＳ３００にて、ソースプログラムのメインルーチンを読み込む。
【００３９】
続いて、Ｓ３１０では、前述した実行順序更新処理で修正した後の各関数の実行順序を、各関数についての入出力テーブルから読み込む。
そして、Ｓ３２０では、Ｓ３１０にて読み込んだ修正後の各関数の実行順序に従い、各関数が実行順序の小さいものから順に実行されるように、メインルーチンに記述されている関数の順序を入れ替える。
【００４０】
最後に、Ｓ３３０では、Ｓ３２０にて関数の順序を入れ替えたメインルーチンを出力して、本実行順序更新後プログラム作成処理を終了する。
以上のように、この実行順序更新後プログラム作成処理では、ソースプログラムを構成する各関数が、実行順序更新処理で修正された適正な実行順序で実行される実行順序修正後のメインルーチンを、自動的に作成して出力するようになっている。
【００４１】
次に、本プログラム作成支援装置１０の作用について、図２に例示する関数Ａ〜Ｆとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込んだ場合を例に挙げて具体的に説明する。尚、以下の説明において、各関数に含まれる代入式は、図２に示したもののみとする。
【００４２】
まず、この例の場合においては、読み込まれたソースプログラムのメインルーチン（実行順序修正前のメインルーチン）で定められている関数Ａ〜Ｆの実行順序が、Ａ→Ｂ→Ｃ→Ｄ→Ｅ→Ｆであるため、図３の入出力テーブル作成処理では、最初に関数Ａが選択されて（Ｓ１００）、この関数Ａについての入出力テーブルが作成されると共に（Ｓ１１０）、仮の実行順序「１」が付与される（Ｓ１２０）。そして、関数Ａに含まれる代入式「ａ＝ｆ（ｋ）」の算出変数「ａ」，参照変数「ｋ」が、作成された入出力テーブルの算出変数格納領域，参照変数格納領域に、それぞれ格納される（Ｓ１３０〜Ｓ１７０）。
【００４３】
こうして関数Ａについての処理が終了すると（Ｓ１７０：ＮＯ）、次に、関数Ｂが選択されて（Ｓ１８０：ＹＥＳ，Ｓ１００）、関数Ａの場合と同様に、この関数Ｂについての入出力テーブルが作成されると共に（Ｓ１１０）、仮の実行順序「２」が付与される（Ｓ１２０）。そして、関数Ｂに含まれる代入式「ｂ＝ｆ（ｄ）」の算出変数「ｂ」，参照変数「ｄ」が、作成された入出力テーブルの算出変数格納領域，参照変数格納領域に、それぞれ格納される（Ｓ１３０〜Ｓ１７０）。
【００４４】
以後、このような処理が、残りの関数Ｃ〜Ｆの各々についても順に行われ、その結果、全ての関数Ａ〜Ｆについて入出力テーブルが作成される。
そして、図３の入出力テーブル作成処理により、全ての関数Ａ〜Ｆについて入出力テーブルが作成されると、図５の実行順序更新処理により、関数Ａ〜Ｆの実行順序が図７のような経緯で修正されていくこととなる。
【００４５】
即ち、まず、この例の場合において、図５の実行順序更新処理が開始された時点では、図７の１段目に示すように、関数Ａ〜Ｆの各実行順序が「１，２，３，４，５，６」となっているため、図５のＳ２００では、実行順序が最も小さい関数として、関数Ａが選択される。
【００４６】
そして、この関数Ａについての入出力テーブルの参照変数格納領域に格納されている参照変数「ｋ」が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かが判定される（Ｓ２１０）。
ここで、この場合、関数Ａの参照変数「ｋ」は、他の関数の算出変数として存在しないため（Ｓ２１０：ＮＯ）、関数Ａについてのチェックは終了され、次に実行順序の小さい関数である関数Ｂが選択される（Ｓ２５０：ＹＥＳ，Ｓ２６０）。
【００４７】
そして、関数Ａの場合と同様に、この関数Ｂの参照変数「ｄ」が、他の関数の算出変数として存在するか否かが判定されるが（Ｓ２１０）、この場合、関数Ｂの参照変数「ｄ」は関数Ｄの算出変数として存在するため（Ｓ２１０：ＹＥＳ）、続いて、この関数Ｄの実行順序が関数Ｂの実行順序より小さいか否かが判定される（Ｓ２２０）。
【００４８】
ここで、関数Ｄの実行順序「４」は関数Ｂの実行順序「２」よりも大きい（後である）ため（Ｓ２２０：ＮＯ）、この時点で関数Ｄよりも実行順序の大きい関数である関数Ｅ，Ｆの実行順序「５，６」が、Ｓ２３０の処理により、それぞれ１加算されて「６，７」に変更され、更に、Ｓ２４０の処理により、関数Ｂの実行順序が、関数Ｄの実行順序「４」に１を加算した「５」に変更される。
【００４９】
これにより、図７の２段目に示すように、関数Ａ〜Ｆの各実行順序が「１，５，３，４，６，７」と更新される。
このようにＳ２３０及びＳ２４０の処理で実行順序が更新されると、次に、図５のＳ２００にて、改めて実行順序の最も小さい関数が選択される。
【００５０】
ここで、この時点でも、実行順序が最も小さいのは関数Ａであり、前述したように、関数Ａの参照変数「ｋ」は、他の関数の算出変数として存在しないため（Ｓ２１０：ＮＯ）、Ｓ２５０及びＳ２６０の処理により、次に実行順序の小さい関数が選択されるが、この場合には、次に実行順序の小さい関数として、関数Ｃが選択されることとなる。
【００５１】
そして、この関数Ｃの参照変数「ｆ」が、他の関数の算出変数として存在するか否かが判定されるが（Ｓ２１０）、この場合、関数Ｃの参照変数「ｆ」は関数Ｆの算出変数として存在するため（Ｓ２１０：ＹＥＳ）、続いて、この関数Ｆの実行順序が関数Ｃの実行順序より小さいか否かが判定される（Ｓ２２０）。
【００５２】
ここで、この時点において、関数Ｆの実行順序「７」は関数Ｃの実行順序「３」よりも大きいため（Ｓ２２０：ＮＯ）、Ｓ２４０の処理により、関数Ｃの実行順序が、関数Ｆの実行順序「７」に１を加算した「８」に変更される。
これにより、図７の３段目に示すように、関数Ａ〜Ｆの各実行順序が「１，５，８，４，６，７」と更新される。尚、この場合にＳ２３０の処理が行われないのは、関数Ｆよりも実行順序の大きい関数が存在しないからである。
【００５３】
そして、このような処理が繰り返されることで、最終的に、関数Ａ〜Ｆの各実行順序が、図７の最終段に示す如く「１，１３，１０，１２，１１，９」と修正されることとなる。
最後に、このようにして修正された実行順序で各関数を実行するメインルーチンが、図６の処理により作成されて出力される（Ｓ３００〜Ｓ３３０）。これにより、関数の実行順序が「Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ」→「Ａ，Ｆ，Ｃ，Ｅ，Ｄ，Ｂ」と修正される。
【００５４】
尚、本実施形態のプログラム作成支援装置１０では、図５におけるＳ２１０の処理が、検査手段に相当し、図３におけるＳ１２０の処理と、図５におけるＳ２００，Ｓ２２０〜Ｓ２６０の処理とが、順序算出手段に相当し、図６におけるＳ３００〜Ｓ３３０の処理が、作成手段に相当している。
【００５５】
このような本実施形態のプログラム作成支援装置１０によれば、他の関数で算出される変数を参照する関数がその変数を算出する関数より前で実行されるような誤った実行順序が設定されたプログラムを、各関数が適正な順序で実行されるように確実に修正することができる。そのため、誤った実行順序が設定されたプログラムにより正しい順序で処理が行われないといったことを防ぐことができる。
【００５６】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態のプログラム作成支援装置１０では、関数の適正な実行順序を求め、その実行順序となるようにプログラムを修正して出力するようになっているが、これに限ったものではない。例えば、関数の適正な実行順序を求め、その実行順序をプログラマーに単に報知（画面表示等）するだけの構成であっても、報知された適正な実行順序に基づきプログラマーがプログラムの作成や修正を行うことができる。
【００５７】
また、ソースプログラムとして関数のみを読み込み、これらを適正な順序で実行するメインルーチンを新たに作成する構成であってもよい。例えば、この場合には、以下のように構成すれば良い。
即ち、前述した入出力テーブル作成処理（図３）におけるＳ１００で、各関数を、メインルーチンで定められている実行順序ではなく、単に関数を読み込んだ順序で選択するようにする。また、前述した実行順序更新後プログラム作成処理（図６）においては、まず、Ｓ３００のメインルーチンを読み込む処理が不要となる。そして、Ｓ３２０では、修正後の各関数の実行順序に従い、メインルーチンに記述されている関数の順序を入れ替えるのではなく、新たにメインルーチンを作成するようにし、更に、Ｓ３３０では、Ｓ３２０にて新たに作成したメインルーチンを出力するようにする。
【００５８】
そして、この構成によれば、プログラマーがメインルーチンを作成する必要が無くなる分、その負担を軽減することができる。
【図面の簡単な説明】
【図１】実施形態のプログラム作成支援装置の外観図である。
【図２】実施形態のプログラム作成支援装置の機能を表すブロック図である。
【図３】入出力テーブル作成処理のフローチャートである。
【図４】入出力テーブルを説明するための説明図である。
【図５】実行順序更新処理のフローチャートである。
【図６】実行順序更新後プログラム作成処理のフローチャートである。
【図７】実行順序の修正処理を説明するための説明図である。
【符号の説明】
２…パソコン、４，６…記録媒体、１０…プログラム作成支援装置
【図１】
2004021308.tif 000003
【図２】
2004021308.tif 000004
【図３】
2004021308.tif 000005
【図４】
2004021308.tif 000006
【図５】
2004021308.tif 000007
【図６】
2004021308.tif 000008
【図７】
2004021308.tif 000009