コンピュータに、第1のプログラムから呼び出される関係にある第2のプログラムを受付け、受付けた前記第2のプログラムを、前記第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令と、前記第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換する、処理を実行させることを特徴とする実行制御プログラム。前記変換する処理が生成したプログラムと所定の関数群とを連携させた実行ファイルを実行し、エラーが発生した場合に、エラーを発生させた実行ファイル内に記述される初期化命令に基づいてリソースを初期化し、前記実行ファイル内に記述される復帰命令に基づいて呼出元のプログラムに戻る各処理をさらにコンピュータに実行させることを特徴とする請求項1に記載の実行制御プログラム。前記変換する処理が生成したプログラムと所定の関数群とを連携させた実行ファイルを実行し、実行した実行ファイル内で最終的な戻り先として指定されたプログラム内に、該プログラムが実行されたときのスタック環境の値を登録し、エラーが発生した場合に、エラーを発生させた実行ファイル内のプログラムに記述される初期化命令に基づいてリソースを初期化し、該プログラム内に前記スタック環境の値が登録されていない場合には、該プログラムに記述される復帰命令に基づいて呼出元のプログラムに戻り、呼出元のプログラム内に前記スタック環境の値が登録されていない場合には、前記初期化命令と前記復帰命令を実行し、呼出元のプログラム内に前記スタック環境の値が登録されている場合には、前記初期化命令を実行するとともに、前記スタック環境の値によって特定される戻りアドレスに制御を移す、各処理をさらにコンピュータに実行させることを特徴とする請求項1に記載の実行制御プログラム。第1のプログラムから呼び出される関係にある第2のプログラムを受付ける受付部と、前記受付部によって受け付けられた前記第2のプログラムを、前記第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令と、前記第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換する変換部と、を有することを特徴とするコンパイラ。第1のプログラムから呼び出される関係にある第2のプログラムを受付ける受付部と、前記受付部によって受け付けられた前記第2のプログラムを、前記第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令と、前記第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換する変換部と、前記変換部が変換したプログラムと所定の関数群とを連携させた実行ファイルを実行する実行制御部と、エラーが発生した場合に、エラーを発生させた実行ファイル内のプログラムに記述される初期化命令に基づいてリソースを初期化し、該プログラムに記述される復帰命令に基づいて呼出元のプログラムに戻るエラー処理部と有することを特徴とする実行制御装置。コンピュータが、第1のプログラムから呼び出される関係にある第2のプログラムを受付け、受け付けた前記第2のプログラムを、前記第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令と、前記第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換し、変換したプログラムと所定の関数群とを連携させた実行ファイルを実行し、エラーが発生した場合に、エラーを発生させた実行ファイル内のプログラムに記述される初期化命令に基づいてリソースを初期化し、該プログラムに記述される復帰命令に基づいて呼出元のプログラムに戻る処理を含んだことを特徴とする実行制御方法。しかしながら、従来技術では、エラーが発生したプログラムを再実行させるまでに時間がかかるという問題がある。例えば、上位プログラムへ復帰させる方法では、エラーが発生したプログラムを再実行する前に、リソースを初期化する別プログラムを管理者等が作成して実行することになる。プログラムが連携して実行される場合には、データの更新履歴を特定するとともに、ファイルがどのタイミングでオープンされたかを特定した上で、リソース初期化用のプログラムを生成して実行することになる。したがって、エラーが発生したプログラムを再実行する前準備に時間がかかる。また、最初から再実行する方法では、近年の複雑な大規模プログラム全体を正常に終了させるのに時間がかかるので、再実行までに多くの時間がかかる。また、大規模プログラム全体が正常に終了しなかった場合には、当該大規模プログラム自体を再実行できなくなる危険性もある。1つの側面として、エラーが発生したプログラムを再実行させるまでにかかる時間を抑制することを目的とする。第1の案では、コンピュータに、第1のプログラムから呼び出される関係にある第2のプログラムを受付ける処理を実行させる。コンピュータに、受付けた前記第2のプログラムを、前記第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令含むプログラムに変換する処理を実行させる。コンピュータに、前記第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換する処理を実行させる。エラーが発生したプログラムを再実行させるまでにかかる時間を抑制することができる。以下に、本願の開示する実行制御プログラム、コンパイラ、実行制御装置および実行制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。図1は、実施例1に係るコンパイラと実行制御装置とを示す図である。ここでは、コンパイラと実行制御装置とを別々の装置である場合を図示したが、これに限定されるものではなく、1つの筐体で実現することもできる。図1に示すように、コンパイラ1は、受付部1aと変換部1bとを有し、入力されたプログラムをコンパイルする装置である。受付部1aは、第1のプログラムから呼び出される関係にある第2のプログラムを受付け処理部である。変換部1bは、受付けた第2のプログラムを、第2のプログラムの実行に伴って使用されるリソースを初期化する初期化命令と、第1のプログラムに戻る復帰命令とをエラーが発生した場合に実行する命令とを含むプログラムに変換する処理部である。ここで初期化命令とは、当該プログラムの実行に伴って使用されたリソースを初期化する命令である。復帰命令とは、当該プログラムを呼び出した呼出元のプログラムに戻る命令である。実行制御装置2は、実行制御部2aとエラー処理部2bとを有し、コンパイルされたプログラムを実行する装置である。実行制御部2aは、コンパイラ1によって上記命令が追記されたプログラムと所定の関数群とを連携させた実行ファイルを実行する処理部である。エラー処理部2bは、エラーが発生した場合に、エラーを発生させた実行ファイル内のプログラムに記述される初期化命令に基づいてリソースを初期化し、該プログラムに記述される復帰命令に基づいて呼出元のプログラムに戻る処理部である。このように、実施例1に係るコンパイラ1は、コンパイル時に、リソースの初期化命令と復帰命令とをプログラム内に追記する。実行制御装置2は、エラーが発生したプログラムから、リソースを初期化しつつ呼出元のプログラムに戻ることができる。したがって、エラーが発生したプログラムを再実行する前準備を短縮できる。また、プログラム全体を停止させなくても、プログラムを再実行することができる。この結果、エラーが発生したプログラムを再実行させるまでにかかる時間を短縮することができる。次に、実施例2では、コンパイラと実行制御装置とを1つの筐体で実現する例を説明する。ここでは、コンパイラの処理部と実行制御装置の処理部とを有する情報処理装置の機能ブロック図、処理の具体例、処理の流れ等を説明する。情報処理装置の構成図2は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。図2に示すように、実施例2に係る情報処理装置10は、入出力インタフェース部11とHDDハードディスクドライブ12とメモリ13とプロセッサ14とを有するコンピュータである。なお、情報処理装置10は、図2に示した処理部以外の処理部を有してもよい。例えば、情報処理装置10は、マウスなどの入力部、ディスプレイなどの表示部、ハードディスクなどの記憶装置等を有していてもよい。入出力インタフェース部11は、COBOLプログラムの入力を受け付ける処理部である。例えば、入出力インタフェース部11は、ネットワークカードなどを有し、ネットワークを介してCOBOLプログラムを受け付ける。また、入出力インタフェース部11は、記憶媒体読取装置を有し、入力された記憶媒体からCOBOLプログラムを読み取る。HDD12は、ソースコード12aとオブジェクトコード12bとを記憶する記憶装置である。オブジェクトコード12bは、情報処理装置10が実行するオブジェクトコードであり、コンパイル部15によって格納される。メモリ13は、プロセッサが実行するプログラムを記憶するとともに、実行ファイル13aとスタック環境値13bとを記憶する記憶装置である。また、メモリ13は、リソーステーブル13cと作業領域13dとを有する。なお、作業領域13dは、プロセッサ14、コンパイル部15、生成部16、実行制御部17等が処理を実行する際に使用する一時領域である。実行ファイル13aは、オブジェクトコード12bとランタイムシステム18に記憶される該当ランタイム等とを連携させた実行可能な形式のロードモジュール、すなわちCOBOLアプリケーションであり、生成部16によって格納される。スタック環境値13bは、ランタイムシステム18がオブジェクトコード内に登録したレジスタの値などであり、分岐箇所登録部18aによって格納される。リソーステーブル13cは、COBOLプログラムの各オブジェクトコード、すなわち各ロードモジュールが使用したリソースを記憶するテーブルである。図3は、リソーステーブルが記憶する情報の例を示す図である。図3に示すように、リソーステーブル13cは、ランタイム管理域にファイル管理情報とデータ域管理情報とを対応付けて記憶する。ランタイム管理域は、ランタイムシステム18が管理する領域を示し、当該領域内でファイル管理情報とデータ域情報を管理する。ファイル管理情報は、ファイル名、プログラム名を対応付けて記憶する。ここで記憶されるファイル名は、プログラムが使用したファイルの名称であり、プログラム名は、ファイルを使用したプログラム名である。図3の場合、プログラムPGMAがファイルA.TXTを使用したことを示す。データ域管理情報は、データ域アドレス、プログラム名を対応付けて記憶する。ここで記憶されるデータ域アドレスは、プログラムが使用したデータのアドレスであり、プログラム名は、データを使用したプログラムの名称である。図3の場合、プログラムPGMAが、アドレス0xaaaaaaaに記憶されるデータを使用したことを示す。図2に戻り、プロセッサ14は、OSOperatingSystemなどを実行し、情報処理装置10全体の処理を司る処理部であり、コンパイル部15と生成部16と実行制御部17とを有する。コンパイル部15は、入力部15aと変換部15bとを有し、COBOLプログラムのコンパイルを実行する処理部である。入力部15aは、入出力インタフェース部11によって受け付けられたCOBOLプログラムを変換部15bに渡す。変換部15bは、入力したプログラムを、エラーが発生した場合に実行する命令として初期化命令と復帰命令とを追加したオブジェクトコードに変換する処理部である。例えば、変換部15bは、入力部15aから渡されたソースコード12aを読み込む。そして、変換部15bは、プログラムをオブジェクトコードに変換する際に、エラー時にランタイムシステム18に実行させる命令として、リソースの初期化命令と復帰命令とを追記して、HDD12に格納する。生成部16は、オブジェクトコードを連結させて、情報処理装置10が実行可能な形式である実行ファイルを生成する処理部である。例えば、生成部16は、HDD12に記憶されるオブジェクトコード12bを読み出して連結させて実行可能な形式に変換する。また、生成部16は、連結させた各オブジェクトコードに対して、オブジェクトコードの実行に使用する関数をランタイムシステム18が管理する関数群から特定する。そして、生成部16は、各オブジェクトコードについて、オブジェクトコードと関数とを連携させたロードモジュールを生成する。その後、生成部16は、各オブジェクトコードから生成された各ロードモジュールを実行ファイル13aとしてHDD等12に格納する。生成部16は、コンパイル部15からコンパイルが終了したことを通知された場合に、実行ファイルを生成してもよく、オペレータ等から指示された任意のタイミングで生成してもよい。実行制御部17は、実行部17aとランタイムシステム18とを有し、これらによって生成部16が生成した実行ファイルを実行する制御部である。実行部17aは、HDD12に格納される実行ファイルを読み出してメモリ13に展開する。すなわち、実行部17aは、COBOLプログラムを実行する。なお、実行部17aがCOBOLプログラムを実行するタイミングと、コンパイル部15がコンパイルを実行するタイミングとは、連続していなくてもよい。ランタイムシステム18は、COBOLプログラムを実行する際に使用されるソフトウェアモジュールなどの関数群を有する。このランタイムシステム18は、分岐箇所登録部18aとリソース管理部18bと分岐処理部18cとリソース初期化部18dと復帰判定部18eとを有する。なお、この各処理部は、ランタイムシステム18が有する関数として実現することもできる。分岐箇所登録部18aは、最終的な復帰先となるCOBOLプログラム内の、スタック環境値を登録する処理部である。例えば、分岐箇所登録部18aは、実行部17aによって実行された実行ファイルのうち、SETPROCが記述されているロードモジュールから呼び出される。すると、分岐箇所登録部18aは、呼び出したロードモジュールが実行されるときのレジスタ値や戻りアドレス等を抽出して、スタック環境値13bに格納する。スタック環境値の格納が終了すると、分岐箇所登録部18aを読み出したロードモジュールに制御を戻す。図4は、分岐箇所登録部18aが登録するスタック環境値の例を示す図である。図4に示すように、分岐箇所登録部は、レジスタの値ebp、esp、esi、ebx、戻りアドレスを対応付けて登録する。ここで登録されるレジスタの値は、ロードモジュール内のSETPROCが呼び出されたときのレジスタの値である。戻りアドレスは、SETPROCを呼び出した次の命令に復帰するためのアドレスである。リソース管理部18bは、COBOLプログラムの実行に伴って使用されたリソースを管理する処理部である。例えば、リソース管理部18bは、実行ファイルが実行された場合に、当該実行ファイルが有する各ロードモジュールが使用したリソースを監視する。そして、リソース管理部18bは、リソースが使用されると、使用されたリソースの情報をリソーステーブル13cに格納する。一例を挙げると、リソース管理部18bは、実行ファイル内のロードモジュールであるPGMAAがファイルAAA.TXTを使用した場合には、AAA.TXT、PGMAAをリソーステーブル13cのファイル管理情報に格納する。また、リソース管理部18bは、実行ファイル内のロードモジュールであるPGMBAがアドレスBBのデータを更新した場合には、BB、PGMBAをリソーステーブル13cのデータ域管理情報に格納する。分岐処理部18cは、実行ファイルの実行中にエラーを検出した場合に、リソースの初期化や呼出元への復帰を開始する処理部である。例えば、分岐処理部18cは、エラーが発生したロードモジュールのスタック環境値を作業領域13dに退避させる。そして、分岐処理部18cは、リソース初期化部18dに制御を依頼する。リソース初期化部18dは、プログラム内に記述されたリソース初期化命令に基づいてリソースの初期化を実行する処理部である。例えば、リソース初期化部18dは、リソーステーブル13cを参照し、ロードモジュールによってオープンされたファイルを特定し、特定したファイルをクローズする。また、リソース初期化部18dは、リソーステーブル13cを参照し、ロードモジュールによって更新されたデータを特定し、作業領域13d等を参照して当該データを更新前のデータに戻す。復帰判定部18eは、プログラム内に記述された復帰命令に基づいて呼出元のプログラムに復帰する処理部である。例えば、復帰判定部18eは、ロードモジュール内に復帰命令が記述されている場合には、実行ファイル13a等に基づいて、復帰先のロードモジュールを特定する。そして、復帰判定部18eは、特定した復帰先のロードモジュールに対する制御に移行し、分岐処理部18cやリソース初期化部18dに制御を依頼する。[具体例]次に、図5から図7を用いて具体例を説明する。図5は、実行対象のプログラム例を示す図であり、図6は、コンパイル後のオブジェクトコード例を示す図であり、図7は、プログラムの実行例を示す図である。ここでは、最上位プログラムAがサブプログラムBを呼び出し、サブプログラムBがさらにサブプログラムCを呼び出すCOBOLアプリケーションを例にして説明する。図5に示すように、情報処理装置10の入力部15aは、プログラムAとプログラムBとプログラムCとを有するCOBOLアプリケーションを受け付けて、変換部15bに渡す。図5に示すように、プログラムAには、CALLSET_PROCとCALLBとが記述される。CALLSET_PROCは、分岐箇所登録部18aを呼び出す命令であり、最終的な戻り先を示す情報である。CALLBは、プログラムBを呼び出す命令である。また、プログラムBには、CALLCが記述される。CALLCは、プログラムCを呼び出す命令である。プログラムCには、CALLJUMP_PROCが記述される。CALLJUMP_PROCは、分岐処理部18cを呼び出す命令であり、最終的な戻り先への復帰を開始することを示す情報である。続いて、情報処理装置10の変換部15bは、入力部15aから渡されたソースコード12aをオブジェクトコード12bに変換して、HDD12に格納する。例えば、変換部15bは、図5に示したプログラムA、プログラムB、プログラムC各々を、図6に示したオブジェクトA、オブジェクトB、オブジェクトC各々に変換する。具体的に説明すると、変換部15bは、プログラムAのCALLSET_PROCをSET_PROCを呼び出す命令に変換し、CALLBをプログラムBを呼び出す命令に変換する。また、変換部15bは、プログラムAを変換したオブジェクトAに、リソースの初期化命令と復帰命令とを追記する。同様に、変換部15bは、プログラムBのCALLCをプログラムCを呼び出す命令に変換する。また、変換部15bは、プログラムBを変換したオブジェクトBに、リソースの初期化命令と復帰命令とを追記する。同様に、変換部15bは、プログラムCのCALLJUMP_PROCをJUMP_PROCを呼び出す命令に変換する。また、変換部15bは、プログラムCを変換したオブジェクトCに、リソースの初期化命令と復帰命令とを追記する。その後、生成部16は、変換部15bによって生成されたオブジェクトコードを連結させ、各オブジェクトコードとランタイムの関数とを連携させたロードモジュールを生成して、実行ファイル13aとしてHDD12に格納する。そして、実行部17aは、HDD12から実行ファイルを読み出してメモリ13に展開する。すると、図7に示すように、ロードモジュールAは、分岐する箇所を登録するために、分岐箇所登録部18aを呼び出す。分岐箇所登録部18aは、現在のスタック環境をスタック環境値13bに保存する。その後、ロードモジュールAは、プログラムBを呼び出す。なお、リソース管理部18bは、ロードモジュールAが使用したリソース情報を管理する。続いて、ロードモジュールAによって呼び出されたロードモジュールBは、プログラムCを呼び出し、ロードモジュールCが実行される。なお、リソース管理部18bは、ロードモジュールBが使用したリソース情報を管理する。このロードモジュールCが実行されているタイミングでエラーが発生したとする。すると、ロードモジュールCは、ロードモジュールAに登録した箇所に分岐するために、スタック環境保存域を引数として、分岐処理部18cを呼び出す。続いて、分岐処理部18cは、引数として渡されたロードモジュールCのスタック環境値を作業領域13dに退避させる。そして、リソース初期化部18dは、ロードモジュールC内のリソースの初期化命令を実行し、リソーステーブル13cを参照してロードモジュールC言い換えるとプログラムCが使用したリソースを初期化する。続いて、復帰判定部18eは、分岐処理部18cによって退避されたスタック環境値と、分岐箇所登録部18aによって登録されたスタック環境値とを比較し、一致しないので、復帰命令にしたがって呼出元のロードモジュールBに復帰する。続いて、ロードモジュールBは、ロードモジュールAに登録した箇所に分岐するために、スタック環境保存域を引数として、分岐処理部18cを呼び出す。分岐処理部18cは、引数として渡されたロードモジュールBのスタック環境値を作業領域13dに退避させる。そして、リソース初期化部18dは、ロードモジュールB内のリソースの初期化命令を実行し、リソーステーブル13cを参照してロードモジュールB言い換えるとプログラムBが使用したリソースを初期化する。続いて、復帰判定部18eは、分岐処理部18cによって退避されたスタック環境値と、分岐箇所登録部18aによって登録されたスタック環境値とを比較し、一致しないので、復帰命令にしたがって呼出元のロードモジュールAに復帰する。続いて、ロードモジュールAは、スタック環境保存域を引数として、分岐処理部18cを呼び出す。分岐処理部18cは、引数として渡されたロードモジュールAのスタック環境値を作業領域13dに退避させる。そして、リソース初期化部18dは、ロードモジュールA内のリソースの初期化命令を実行し、リソーステーブル13cを参照してロードモジュールA言い換えるとプログラムAが使用したリソースを初期化する。続いて、復帰判定部18eは、分岐処理部18cによって退避されたスタック環境値と、分岐箇所登録部18aによって登録されたスタック環境値とを比較し、一致すると判定する。このため、復帰判定部18eは、スタック環境値に登録される戻りアドレスに制御を移す。こうすることで、情報処理装置10は、エラーが発生した場合でも、リソースを初期化した状態で、アプリケーションを実行前の状態に戻すことができる。[処理の流れ]次に、図8から図10を用いて情報処理装置が実行する処理の流れを説明する。ここでは、図8を用いて、コンパイル実行時の処理の流れを説明し、図9を用いて、プログラム実行時の処理の流れを説明し、図10を用いて、エラー処理の流れを説明する。コンパイル実行時の処理の流れ図8は、コンパイル実行時の処理の流れを示すフローチャートである。図8に示すように、情報処理装置10のコンパイル部15の変換部15bは、入力部15aから渡されたソースコードを読み込むS101。続いて、変換部15bは、読み込んだソースコードをオブジェクトコードに変換するS102。そして、変換部15bは、変換したオブジェクトコード内にリソースの初期化命令を記述しS103、呼び出し元への復帰命令を記述してS104、HDD12に格納するS105。その後、変換部15bは、HDD12内に他のソースコードが存在する場合にはS106肯定、S101に戻って以降の処理を繰り返す。一方、変換部15bは、HDD12内に他のソースコードが存在しない場合にはS106否定、コンパイル処理を終了する。プログラム実行時の処理の流れ図9は、プログラム実行時の処理の流れを示すフローチャートである。図9に示すように、情報処理装置10の実行部17aは、生成部16が生成した実行ファイルをメモリ13上に展開して実行するS201。続いて、分岐箇所登録部18aは、プログラムが実行された時点のレジスタ値を抽出するS202。また、分岐箇所登録部18aは、戻りアドレス値をレジスタ等から抽出するS203。その後、分岐箇所登録部18aは、抽出したレジスタ値と戻りアドレス値とを、スタック環境値13bに登録するS204。そして、分岐箇所登録部18aは、当該分岐箇所登録部18aを呼び出したプログラムに制御を復帰させるS205。そして、リソース管理部18bは、プログラムによってリソースが使用された場合にS206肯定、使用されたリソースとリソースを使用したプログラム名とを対応付けて、リソーステーブル13cに格納してリソースを管理するS207。また、実行制御部17は、リソースを使用していないS206否定またはS207が実行された後、リソース管理が実行されたプログラム内に、サブプログラムの呼出し命令が記述されているか否かを判定するS208。そして、実行制御部17は、サブプログラムの呼出し命令が記述されている場合にはS208肯定、サブプログラムを呼び出すS209。そして、リソース管理部18bは、呼び出されたサブプログラムによってリソースが使用された場合にS210肯定、使用されたリソースとサブプログラム名とを対応付けて、リソーステーブル13cに格納してリソースを管理するS211。その後、実行制御部17は、リソースを使用していないS210否定またはS211が実行された後、リソース管理が実行されたサブプログラム内に、さらにサブプログラムの呼出し命令が記述されているか否かを判定するS212。そして、実行制御部17は、さらにサブプログラムの呼出し命令が記述されている場合にはS212肯定、S209以降の処理を繰り返す。一方、実行制御部17は、プログラム内にサブプログラムの呼出し命令が記述されていない場合S208否定、または、サブプログラム内にさらにサブプログラムの呼出し命令が記述されていない場合にはS212否定、プログラムを終了する。エラー処理の流れ図10は、エラー処理の流れを示すフローチャートである。実行制御部17がエラーを検出するとS301肯定、分岐処理部18cは、エラーが検出されたプログラムのスタック環境値を退避させるS302。なお、エラーの検出方法は、プログラムのエラー検出として一般的に利用されている様々な手法を用いることができる。続いて、リソース初期化部18dは、スタック環境値が退避させられたプログラム内のリソースの初期化命令を実行するS303。すなわち、リソース初期化部18dは、リソーステーブル13cを参照してリソースを初期化する。復帰判定部18eは、退避されたスタック環境値と、分岐箇所登録部18aによってスタック環境値13bに登録されたスタック環境値とが一致しない場合S304否定、プログラム内の復帰命令にしたがって呼出元のプログラムに復帰するS305。その後、実行制御部17は、S302以降の処理を繰り返す。一方、復帰判定部18eは、退避されたスタック環境値と、分岐箇所登録部18aによってスタック環境値13bに登録されたスタック環境値とが一致した場合S304肯定、S306以降を実行する。すなわち、復帰判定部18eは、スタック環境値13bに登録されたスタック環境値のレジスタ値を現在の情報処理装置10のスタック環境値のレジスタ値として、該当するレジスタに登録するS306。この結果、プログラム内のSETPROCが実行されたときのレジスタ値に戻すことができる。そして、復帰判定部18eは、戻りアドレスに制御を移すS307。その後、実行制御部17は、当該プログラム全体すなわちアプリケーションを再実行するS308。上述したように、情報処理装置10は、COBOLプログラムをコンパイルする際に、最終的な復帰先と、各プログラムにリソース初期化命令と復帰命令とを記述したオブジェクトコードを生成することができる。したがって、情報処理装置10は、エラーが発生した場合には、エラーが発生したプログラムから最終的な戻り先のプログラムまで、リソースを初期化しながら復帰することができる。つまり、情報処理装置10は、プログラムを再実行する前段階の処理を実行しながら、先頭のプログラムまで復帰させることができる。この結果、情報処理装置10は、COBOLプログラム全体を終了させることもないので、再実行できない危険性を低下させることができる。また、情報処理装置10は、前処理を実行することもなく、COBOLプログラムを再実行することができる。実施例2では、アプリケーションの先頭であるプログラムAに復帰させる例を説明したが、これに限定されるものではない。例えば、複数のプログラムを有するアプリケーションのうち、任意のプログラムに復帰させることもできる。その場合、復帰先としたいプログラムにCALLSETPROCを記述すればよい。また、先頭のプログラムまで戻らずに、1つ前のプログラムにだけ戻るようにしてもよい。その場合も同様に、呼出元のプログラムに戻る命令を追記するようにすればよい。ここで、エラーが発生したプログラムの1つ前のプログラムに戻る例を説明する。図11は、実施例3に係る実行対象のプログラム例を示す図であり、図12は、実施例3に係るコンパイル後のオブジェクトコード例を示す図である。図11に示すように、情報処理装置10の入力部15aは、プログラムAとプログラムBとプログラムCとを有するCOBOLアプリケーションを入力部15bに渡す。図11に示すように、プログラムAには、CALLSET_PROCとCALLBとが記述される。また、プログラムBには、CALLSET_PROCと、CALLJUMP_PROCと、CALLCとが記述される。同様に、プログラムCには、CALLSET_PROCと、CALLJUMP_PROCとが記述される。続いて、変換部15bは、入力部15aから渡されたソースコード12aをオブジェクトコード12bに変換して、HDD12に格納する。例えば、変換部15bは、図11に示したプログラムA、プログラムB、プログラムC各々を、図12に示したオブジェクトA、オブジェクトB、オブジェクトC各々に変換する。具体的に説明すると、変換部15bは、プログラムAのCALLSET_PROCをSET_PROCを呼び出す命令に変換し、CALLBをプログラムBを呼び出す命令に変換する。また、変換部15bは、プログラムAを変換したオブジェクトAに、リソースの初期化命令と復帰命令とを追記する。同様に、変換部15bは、プログラムBのCALLSET_PROCをSET_PROCを呼び出す命令に変換し、CALLJUMP_PROCをJUMP_PROCを呼び出す命令に変換し、CALLCをプログラムCを呼び出す命令に変換する。また、変換部15bは、プログラムBを変換したオブジェクトBに、リソースの初期化命令と復帰命令とを追記する。同様に、変換部15bは、プログラムCのCALLSET_PROCをSET_PROCを呼び出す命令に変換し、CALLJUMP_PROCをJUMP_PROCを呼び出す命令に変換する。また、変換部15bは、プログラムCを変換したオブジェクトCに、リソースの初期化命令と復帰命令とを追記する。このようにすることで、情報処理装置10は、COBOLプログラムでエラーが発生した場合に、1つ前のプログラムすなわち呼び出し元へ戻る命令を追加することができる。その後は、実施例2と同様の手法でプログラムの実行およびエラー処理が実行される。簡単に説明すると、生成部16は、図12に示したオブジェクトコードを連結して実行ファイルを生成し、実行部17aは、実行ファイルをメモリ13上に展開して実行する。そして、分岐箇所登録部18aは、実行部17aによって各オブジェクトコードに該当するロードモジュールが実行されるたびに、レジスタ値と戻りアドレスとを当該ロードモジュールのスタック環境保存域に格納する。例えば、分岐箇所登録部18aは、オブジェクトAに該当するロードモジュールAが実行されると、ロードモジュールA内のスタック環境保存域に、SETPROCの次に命令であるプログラムBを呼び出す命令のアドレスを登録する。このとき、分岐箇所登録部18aは、実施例2と同様、各レジスタ値も登録する。同様に、分岐箇所登録部18aは、オブジェクトBに該当するロードモジュールBが実行されると、ロードモジュールB内のスタック環境保存域に、SETPROCの次に命令であるJUMP_PROCを呼び出す命令のアドレスを登録する。このとき、実施例2と同様、分岐箇所登録部18aは、各レジスタ値も登録する。また、分岐箇所登録部18aは、オブジェクトCに該当するロードモジュールCが実行されると、ロードモジュールC内のスタック環境保存域に、SETPROCの次に命令であるJUMP_PROCを呼び出す命令のアドレスを登録する。このとき、実施例2と同様、分岐箇所登録部18aは、各レジスタ値も登録する。このようにすることで、各ロードモジュールでエラーが発生した際の戻り先を呼び出し元のプログラムに指定することができる。この結果、ロードモジュールCでエラーが発生した場合には、ロードモジュールBのJUMP_PROCを呼び出す命令に復帰することができる。同様に、ロードモジュールBでエラーが発生した場合には、ロードモジュールAのプログラムBを呼び出す命令に復帰することができる。さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。対象プログラム上記実施例では、COBOLプログラムを例にして説明したがこれに限定されるものではなく、C言語などコンパイルを実行する言語であればよい。システムまた、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。ハードウェア構成ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図13は、実行制御プログラムを実行するコンピュータのハードウェア構成例を示す図である。図13に示すように、コンピュータ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読取装置106、HDDHardDiskDrive107、RAMRandomAccessMemory108を有する。また、図13に示した各部は、バス101で相互に接続される。入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NICNetworkInterfaceCardなどのインタフェースである。HDD107は、実行制御プログラム107aととともに、図2に示した各情報等を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROMReadOnlyMemory、RAM、CD-ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。CPU102は、実行制御プログラム107aを読み出してRAM108に展開することで、図2等で説明した各機能を実行する実行制御プロセス108aを動作させる。すなわち、実行制御プロセス108aは、図2に記載したコンパイル部15、実行制御部17と同様の機能を実行する。このようにコンピュータ100は、プログラムを読み出して実行することで実行制御方法を実行する情報処理装置として動作する。例えば、コンピュータ100は、媒体読取装置106によって記録媒体から実行制御プログラムを読み出し、読み出された実行制御プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。