(57)【要約】【課題】リンクモジュールを含む実行モジュールのバージョンを実行モジュールの実行前に確認できるようにし、これにより不正処理の実行および障害発生を未然に防止すること。【解決手段】バージョン検査プログラム６は、リンクモジュール２を含む実行モジュール４の実行時、バージョンチェック用明細テーブル２０に格納された当該実行モジュール４に含まれる１〜複数の全てのリンクモジュール２のコンパイル日時情報▲３▼と、バージョンチェック用テーブル１０に格納された全てのリンクモジュール２についてのコンパイル日時情報▲３▼とをそれぞれ比較し、その比較結果を表示部７に出力する。【選択図】　　　図１
2004005058.tif 000002
【特許請求の範囲】
【請求項１】
リンクを含むプログラムソースをコンパイルして作成されたリンクモジュールを含む実行モジュールのバージョンを管理するプログラムモジュールのバージョン管理装置において、
各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納する第１のテーブルと、
前記コンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納する第２のテーブルと、
リンクモジュールを含む実行モジュールの実行時、前記第２のテーブルに格納された当該実行モジュールに含まれる１〜複数の全てのリンクモジュールのコンパイル日時情報と、前記第１のテーブルに格納された前記全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、該比較結果を出力するバージョン検査手段と、
を備えることを特徴とするプログラムモジュールのバージョン管理装置。
【請求項２】
前記バージョン検査手段は、
前記実行モジュールを実行する際、前記第１のテーブルに格納された当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報とを比較し、それらの比較結果を出力することを特徴とする請求項１に記載のプログラムモジュールのバージョン管理装置。
【請求項３】
前記バージョン検査手段は、
前記実行モジュールを実行する際、前記第１のテーブルに格納された当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報とを比較して、それらの比較結果を出力することを特徴とする請求項１に記載のプログラムモジュールのバージョン管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、リンクを含むプログラムを開発する際に用いるプログラムモジュールのバージョン管理装置に関するものである。
【０００２】
【従来の技術】
従来、プログラム開発においては、コンパイラを用いてプログラムを更新する際、プログラマ自らがバージョンを管理する必要があり、その管理作業を怠ると、どのバージョンのプログラムソースがコンパイルされて実行モジュール化されたのかが判らなくなり、障害の発生原因となっていた。すなわち、従来のコンパイラにおいては、実行モジュール化されたプログラムは、どのバージョンのソースコードから作成されたかが、デバッガなどの別のツールで確認するまで判らなかった。
【０００３】
【発明が解決しようとする課題】
このように従来のコンパイラにおいては、プログラムソースと実行モジュールのバージョン管理を、別途、プログラマによって実施する必要があるので、管理漏れが発生する可能性があった。
【０００４】
また、メインプログラムからリンクされるリンクプログラムに関しては、コンパイルの際に、そのバージョンがチェックされておらず、旧バージョンのリンクプログラムをリンクする可能性があった。例えば、プログラムソースＡには、リンクプログラムＢが存在するとする。プログラムソースＡおよびリンクプログラムＢをコンパイルしてＡ＋Ｂの内容を含む実行モジュール（Ａ＋Ｂ）が形成されたとする。このコンパイルの後、リンクプログラムＢが更新されてリンクプログラムＢ´になった場合は、実行モジュール（Ａ＋Ｂ）も（Ａ＋Ｂ´）に更新されなくてはならないが、従来のコンパイラでは、これをチェックする機能が無かったため、旧バージョンのリンクプログラムをそのまま使い続ける可能性がある。
【０００５】
この発明は上記に鑑みてなされたもので、実行モジュール、そのソースプログラムおよびリンクプログラムのバージョンを一括管理することで、リンクモジュールを含む実行モジュールのバージョンを実行モジュールの実行前に確認できるようにし、これにより不正処理の実行および障害発生を未然に防止するプログラムモジュールのバージョン管理装置を得ることを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるプログラムモジュールのバージョン管理装置は、リンクを含むプログラムソースをコンパイルして作成されたリンクモジュールを含む実行モジュールのバージョンを管理するプログラムモジュールのバージョン管理装置において、各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納する第１のテーブルと、前記コンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納する第２のテーブルと、リンクモジュールを含む実行モジュールの実行時、前記第２のテーブルに格納された当該実行モジュールに含まれる１〜複数の全てのリンクモジュールのコンパイル日時情報と、前記第１のテーブルに格納された前記全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、該比較結果を出力するバージョン検査手段とを備えることを特徴とする。
【０００７】
この発明によれば、第１のテーブルに各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納し、第２のテーブルにコンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納し、リンクモジュールを含む実行モジュールの実行時、第２のテーブルに格納された当該実行モジュールに含まれる１〜複数の全てのリンクモジュールのコンパイル日時情報と、第１のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしており、これによりプログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【０００８】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、上記の発明において、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第１のテーブルに格納された当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報とを比較し、それらの比較結果を出力することを特徴とする。
【０００９】
この発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしており、これにより実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【００１０】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第１のテーブルに格納された当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報とを比較して、それらの比較結果を出力することを特徴とする。
【００１１】
この発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしており、これによりプログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【００１２】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるプログラムモジュールのバージョン管理装置の好適な実施の形態を詳細に説明する。
【００１３】
図１は、この発明にかかるプログラムモジュールのバージョン管理装置の機能構成を概念的に示すブロック図である。
【００１４】
図１において、図示しないテキストエディタなどのプログラム作成装置によって作成されたプログラムソースは、プログラムソースファイル１にそれぞれ格納されている。このプログラムソースファイル１には、メインプログラムとして機能するプログラム、メインプログラムからリンクするかあるいはリンクプログラムから再リンク、再々リンク、…するリンクプログラムが含まれており、それらの各プログラムソースには、作成日時、プログラム名等のバージョン情報が記述されている。
【００１５】
リンクモジュールファイル２は、ソースプログラムあるいはリンクモジュールからリンクするコンパイル後の実行形式の１〜複数のリンクモジュールをそれぞれ格納するものである。各リンクモジュールは、当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示すリンクモジュール日時情報を属性として有している。
【００１６】
コンパイラ３は、プログラムソースファイル１に格納されている各種プログラムソースおよびリンクモジュールファイル２に格納されているリンクモジュールを用いてコンパイルを実行し、実行形式の実行モジュールを作成し、作成した実行モジュールを実行モジュールファイル４に格納する。
【００１７】
バージョン情報取得プログラム５は、コンパイル作業実施時または実施後に実行されるプログラムであり、プログラムソースファイル１に格納されているプログラムソース、実行モジュールファイル４に格納されている実行モジュール、リンクモジュールファイルに格納されているリンクプログラムに基づいてこれらのバージョン情報を取得し、取得したバージョン情報を２つのデータベーステーブル１０，２０（バージョンチェック用テーブル１０，バージョンチェック用明細テーブル２０）に格納する。
【００１８】
バージョンチェック用テーブル１０は、バージョン情報取得プログラム５によって、プログラムソース１のコンパイル終了後に更新されるもので、バージョンチェック用テーブル１０には、コンパイル時に使用されたソースプログラムおよびコンパイル時に生成された実行モジュールについてのバージョン情報が実行モジュールＩＤに対応付けられて実行モジュール毎に格納される。そのバージョン情報はつぎの通りである。
▲１▼　実行モジュールＩＤ情報（実行モジュール識別情報）
▲２▼　ソースのファイル日時情報
▲３▼　実行モジュール日時情報（実行モジュールのコンパイル日時情報）
▲４▼　チェック有無フラグ
【００１９】
実行モジュールＩＤ情報は、実行モジュール毎に割り付けられる実行モジュールの識別情報であり、この識別情報にはプログラムソースのＩＤ情報も含まれている。ソースのファイル日付情報は、実行ファイルのコンパイル元となるプログラムソースを作成した日時を示す情報である。実行モジュール日時情報は、プログラムソースを実行モジュールにコンパイルした日時を示す情報である。チェック有無フラグは、当該実行モジュールが、バージョン検査プログラム６によるバージョン検査を行うか否かを示すフラグである。
【００２０】
バージョンチェック用明細テーブル２０は、コンパイル時にリンクが発生した際に更新されるもので、バージョンチェック用明細テーブル２０には、コンパイル時に使用されたリンクモジュールについてのバージョン情報が実行モジュールＩＤおよびリンクモジュールＩＤに対応付けられて格納される。すなわち、このバージョンチェック用明細テーブル２０は、あくまでも、メインプログラムのコンパイル時に被リンクモジュールとして使用されたときにのみ、使用されたリンクモジュールに所属するデータが更新されるものである。そのバージョン情報はつぎの通りである。
▲１▼　実行モジュールＩＤ情報
▲２▼　リンクモジュールＩＤ情報
▲３▼　リンクモジュール日時情報（コンパイル日時情報）
【００２１】
実行モジュールＩＤ情報は、当該リンクモジュールのリンク元（呼出し元）となるプログラムの識別情報である。リンクモジュールＩＤ情報は、リンク元の実行モジュールからリンクされる当該リンクモジュールの識別情報である。リンクモジュール日時情報は、コンパイラ３によるメインプログラムのコンパイル作業中にリンクモジュールへのリンクが発生した際に作成または更新されるもので、このとき、バージョン情報取得プログラム５が、リンクモジュールファイル２中の当該リンクモジュールからその属性情報としてのリンクモジュール日時情報（当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示す情報）を取得することによって、テーブル登録される。
【００２２】
バージョン検査プログラム６は、実行モジュールを実行させたときに動作するもので、例えば実行モジュール４の先頭などで、サブルーチンコールなどによって呼び出されるものである。バージョン検査プログラム６は、プログラムソースファイル１、実行モジュールファイル４、バージョンチェック用テーブル１０およびバージョンチェック用明細テーブル２０を用いて、プログラムソース、実行モジュールおよびリンクプログラムのバージョンの不整合をそれぞれ検査する。その検査結果は、表示部７に表示される。
【００２３】
つぎに、図１に示すバージョン管理装置の動作を、図２〜図５を用いて説明する。この場合は、メインプログラムＡおよびリンクモジュールＢ．ＥＸＥを用いてコンパイルを行う場合について説明する。
【００２４】
この場合は、リンクモジュールＢに関しては、メインプログラムＡのコンパイル前に、コンパイルが終了しているので、バージョンチェック用テーブル１０のモジュールＢに関する登録データには、▲１▼実行モジュールＩＤ情報＝Ｂ．ＥＸＥ、▲２▼ソースのファイル日時情報＝「ｘｘ」、▲３▼実行モジュール日時情報＝「ｙｙ」が、
バージョン情報取得プログラム５によって、既に登録されている。
【００２５】
その後、図２に示すように、コンパイラ３によってメインプログラムソースＡおよびリンクモジュールＢ．ＥＸＥをコンパイル／リンクすることにより、実行モジュールＡ．ＥＸＥ（＝Ａ＋Ｂ）を作成する。
【００２６】
このコンパイルの後、図３に示すように、バージョン情報取得プログラム５を動作させることによって、コンパイル時に使用されたプログラムソースＡおよびコンパイルによって生成された実行モジュールＡ．ＥＸＥを用いて、前述した
▲１▼　実行モジュールＩＤ情報
▲２▼　ソースのファイル日時情報
▲３▼　実行モジュール日時情報
を含むバージョン情報を取得し、バージョンチェック用テーブル１０に登録する。
【００２７】
このとき、バージョンチェック用テーブル１０には、▲１▼実行モジュールＩＤ情報＝Ａ．ＥＸＥ、▲２▼ソースのファイル日時情報＝「ｃｃ」、▲３▼実行モジュール日時情報＝「ｄｄ」が登録される。
【００２８】
また、この場合には、コンパイルの際、別のプログラムＢ．ＥＸＥへのリンクが存在しているので、バージョン情報取得プログラム５は、リンクモジュールＢ．ＥＸＥへのリンクが発生した時点で、図４に示すように、リンクモジュールファイル２中の該当するリンクモジュールＢ．ＥＸＥからその属性情報としてのリンクモジュール日時情報を取得し、これをプログラムソースＡから得た▲１▼実行モジュールＩＤ情報およびリンクモジュールＢ．ＥＸＥから得た▲２▼リンクモジュールＩＤに対応付けて、バージョンチェック用明細テーブル２０の▲３▼リンクモジュール日時情報の項目欄に格納する。
【００２９】
このとき、バージョンチェック用明細テーブル２０には、▲１▼実行モジュールＩＤ情報＝Ａ．ＥＸＥ、▲２▼リンクモジュールＩＤ情報＝Ｂ．ＥＸＥ、▲３▼リンクモジュール日時情報＝「ｙｙ」が登録される。すなわち、バージョンチェック用明細テーブル２０の▲３▼リンクモジュール日時情報には、バージョンチェック用テーブル１０に登録されるリンクモジュールＢについての▲３▼実行モジュール日時情報と同じ日時情報「ｙｙ」が登録される。
【００３０】
このようにして、実行モジュールＡ．ＥＸＥに関するコンパイル時のバージョン情報の登録処理が終了する。
【００３１】
実行モジュールＡ．ＥＸＥに関するコンパイルの後、リンクモジュールＢ．ＥＸＥに不良が検出され、リンクモジュールＢ．ＥＸＥをバージョンアップしなくてはいけない事態が発生したとする。この場合は、リンクモジュールＢ．ＥＸＥに対応するリンクプログラムソースＢがＢ´に改訂されて、再びコンパイルされることになる。このプログラムソースＢ´に関するコンパイルが終了したとき、バージョンチェック用テーブル１０のモジュールＢに関する登録内容は、▲１▼実行モジュールＩＤ情報＝Ｂ．ＥＸＥ、▲２▼ソースのファイル日時情報＝「ｘ´ｘ´」、▲３▼実行モジュール日時情報＝「ｙ´ｙ´」に更新される。
【００３２】
このように、リンクモジュールＢ．ＥＸＥの改訂前には、バージョンチェック用テーブル１０のリンクモジュールＢ．ＥＸＥに関する登録内容と、バージョンチェック用明細テーブル２０における実行モジュールＡ．ＥＸＥからリンクするリンクモジュールＢ．ＥＸＥに関する登録内容とが一致していたが、リンクモジュールＢ．ＥＸＥの改訂後には、両テーブルの登録内容が一致しなくなる。これを利用して、リンクプログラムに関するバージョンチェックが行われる。
【００３３】
図４は、バージョン検査プログラム６による実行モジュール実行時のバージョンチェックの為の構成を示す図である。バージョン検査プログラム６によるバージョンチェック項目には、以下の３項目があり、これらが順番に実行される。ただし、バージョンチェック用テーブル１０の▲４▼チェック有無フラグがオフのときには、その実行モジュールに関しては、以下のチェックを行わない。
【００３４】
（１）プログラムソースのバージョンチェック
（２）実行モジュールのバージョンチェック
（３）リンクモジュールのバージョンチェック
【００３５】
まず、バージョンチェック用テーブル１０に登録された当該実行モジュールの▲２▼ソースのファイル日付情報を実行モジュールＩＤに基づいて読み出し、読み出したソース日付情報をコンパイル元のプログラムソースファイル１の日付情報と比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、ソースのバージョンに不整合が発生していたと判断し、エラー情報を表示部７に出力し、実行モジュールの実行を停止する。
【００３６】
つぎに、バージョンチェック用テーブル１０に登録された当該実行モジュールの▲３▼実行モジュール日付情報を実行モジュールＩＤに基づいて読み出し、読み出したモジュール日付情報と、実行モジュール４自身が属性として持っている日付情報とを比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、実行モジュールのバージョンに不整合が発生していたと判断し、エラー情報を表示部７に出力し、処理を停止する。
【００３７】
つぎに、実行モジュールにリンクが存在する場合は、実行モジュールＩＤおよびリンクモジュールＩＤに基づき、バージョンチェック用明細テーブル２０から該当するリンクプログラムの▲３▼リンクモジュール日時情報を読み出すとともに、バージョンチェック用テーブル１０から該当するリンクプログラムの▲３▼実行モジュール日時情報を読み出し、読み出した２つの日時情報を比較する。この比較の結果、両者が一致した場合は、処理を終了し、正常終了を表示部７に表示し、不一致が発生した場合は、リンクプログラムのバージョンに不整合が発生していたと判断し、エラー情報を表示部７に出力し、実行モジュールの実行を停止する。このようなリンクモジュールのバージョンチェックを、当該実行プログラムからリンクする全てのリンクプログラムおよびそのリンクプログラムから再リンク、再々リンク、…する全てのリンクプログラムについて、繰り返し実行する。
【００３８】
このようなリンクモジュールのバージョンチェック処理を行うことにより、リンクモジュールＢ．ＥＸＥをバージョンアップしたときに、このバージョンアップをリンク元の実行モジュールに対しても反映することを忘れた場合でも、リンク元の実行モジュールを実行したときに、上述したバージョンチェックが行われて、バージョンの不整合が発生したときは、その旨が表示されて実行モジュールの実行が停止されるので、不正処理の実行および障害発生を未然に防止することが可能となる。
【００３９】
このようにこの実施の形態によれば、プログラム開発の際に、バージョン情報取得プログラム５およびバージョン検査プログラム６によってプログラムソースのバージョンチェック、実行モジュールのバージョンチェックおよびリンクモジュールのバージョンチェックを行うようにしたので、バージョンアップを関連するプログラムに対し反映することを忘れた場合でも、不正処理の実行および障害発生を未然に防止することが可能となる。
【００４０】
なお、上記実施の形態においては、コンパイル時、リンクがある場合、コンパイルされたリンクモジュールを用いるようにしたが、コンパイル前のリンクプログラムソースを用いるようにしてもよい。
【００４１】
【発明の効果】
以上説明したように、この発明によれば、リンクモジュールを含む実行モジュールの実行時、第２のテーブルに格納された当該実行モジュールに含まれる１〜複数の全てのリンクモジュールのコンパイル日時情報と、第１のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしているので、プログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【００４２】
つぎの発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしているので、実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【００４３】
つぎの発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしているので、プログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【図面の簡単な説明】
【図１】この発明にかかるプログラムモジュールのバージョン管理装置の実施の形態を示す機能ブロック図である。
【図２】コンパイルを実行するための機能ブロック図である。
【図３】バージョンチェック用テーブルを作成するための機能ブロック図である。
【図４】バージョンチェック用明細テーブルを作成するための機能ブロック図である。
【図５】プログラム実行時に、バージョン整合性チェックを行うための機能ブロック図である。
【符号の説明】
１　プログラムソースファイル（プログラムソース）、２　リンクモジュールファイル（リンクモジュール）、３　コンパイラ、４　実行モジュールファイル（実行モジュール）、５　バージョン情報取得プログラム、６　バージョン検査プログム、７　表示部、１０　バージョンチェック用テーブル、２０　バージョンチェック用明細テーブル。
【図１】
2004005058.tif 000003
【図２】
2004005058.tif 000004
【図３】
2004005058.tif 000005
【図４】
2004005058.tif 000006
【図５】
2004005058.tif 000007