(57)【要約】【課題】プログラム間で出力内容に差異がある場合に、差異の原因となったプログラムをより容易に特定できるようにする技術を提供する。【解決手段】プログラム比較装置１００は、現プログラムの出力内容を表す現テキスト２３を取得し、新プログラム２６の出力内容を表す新テキスト２４を取得し、現テキスト２３と新テキスト２４との差異を抽出し、新プログラム２６に関連してアクセスされるオブジェクトの名称を出力する。【選択図】図１１
2019016201.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備える、プログラム比較方法。
【請求項２】
第１のテキストデータおよび第２のテキストデータは、出力された画面の表示内容に含まれるテキストデータであるか、出力された帳票に含まれるテキストデータであるか、出力されたデータベースに含まれるテキストデータである、請求項１に記載の方法。
【請求項３】
第１のテキストデータおよび第２のテキストデータを出力するステップと、
第１のテキストデータおよび第２のテキストデータのうち、前記差異に対応する部分の出力態様を変更するステップと
を備える、請求項１または２に記載の方法。
【請求項４】
前記第１のテキストデータおよび第２のテキストデータは、それぞれ第１のプログラムおよび第２のプログラムに関連してアクセスされるデータベースのテーブルの内容を表すテキストデータを含み、
前記テーブルの内容を表すテキストデータのうち、所定のカラム名に対応するカラムに係る部分のみが、前記差異抽出ステップにおける抽出対象となる、
請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記方法は、さらに、前記テーブルの内容を表すテキストデータのうち、差異が抽出されたレコードについて、差異が抽出された部分に係るカラム名を出力するステップを備える、請求項４に記載の方法。
【請求項６】
前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって呼び出される下位プログラムを含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記オブジェクトは、さらに、
第１のプログラムまたは第２のプログラムを呼び出すために実行される上位プログラムと、
第１のプログラムまたは第２のプログラム、前記上位プログラム、および前記下位プログラムのそれぞれについて、当該プログラムに関連してアクセスされるデータと
を含む、請求項６に記載の方法。
【請求項８】
各データに対するアクセスの種類が、作成、読出、更新および削除のいずれであるかを出力するステップをさらに備える、請求項７に記載の方法。
【請求項９】
前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって出力される帳票を含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
第１のプログラムまたは第２のプログラムを表すソースコードは、前記オブジェクトに係るアクセスを表す命令を含み、前記オブジェクトの名称は前記命令に関連して取得される、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
請求項１〜１０のいずれか一項に記載の方法を実行する、プログラム比較装置。
【請求項１２】
請求項１〜１０のいずれか一項に記載の方法をコンピュータに実行させる、プログラム比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムを比較する技術に関する。
【背景技術】
【０００２】
既存のコンピュータシステム（現行システム）の全体を新システムに移行する作業では、既存プログラムとは別のプログラミング言語による新たなプログラムを作成し、元のプログラムを置き換える場合がある。
【０００３】
新たなプログラムを作成した場合には、既存プログラムからの差異がないかどうか検証し、差異が発見された場合には既存プログラムと同一内容となるよう修正しなければならない。このために、既存プログラムを実行した結果得られる出力内容と、新プログラムを実行した結果得られる出力内容とを比較する必要がある。特許文献１には、このような比較を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２１５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、出力内容を直接的に比較するだけでは、差異の原因となったプログラムを特定するのが困難であるという問題があった。
【０００６】
たとえば、ある新プログラムが正しくコーディングされていても、その新プログラムが呼び出す外部ルーチンにバグが含まれていれば、結果として新プログラムの出力内容が不正となる場合がある。このような場合には、新プログラム自体は対応する既存プログラムと一致するので、差異の原因となったプログラムを特定するのが困難である。
【０００７】
この発明は、このような問題点を解決するためになされたものであり、プログラム間で出力内容に差異がある場合に、差異の原因となったプログラムをより容易に特定できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の問題点を解決するため、この発明に係る方法は、
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備える。
特定の態様によれば、第１のテキストデータおよび第２のテキストデータは、出力された画面の表示内容に含まれるテキストデータであるか、出力された帳票に含まれるテキストデータであるか、出力されたデータベースに含まれるテキストデータである。
特定の態様によれば、
第１のテキストデータおよび第２のテキストデータを出力するステップと、
第１のテキストデータおよび第２のテキストデータのうち、前記差異に対応する部分の出力態様を変更するステップと
を備える。
特定の態様によれば、
前記第１のテキストデータおよび第２のテキストデータは、それぞれ第１のプログラムおよび第２のプログラムに関連してアクセスされるデータベースのテーブルの内容を表すテキストデータを含み、
前記テーブルの内容を表すテキストデータのうち、所定のカラム名に対応するカラムに係る部分のみが、前記差異抽出ステップにおける抽出対象となる。
特定の態様によれば、前記方法は、さらに、前記テーブルの内容を表すテキストデータのうち、差異が抽出されたレコードについて、差異が抽出された部分に係るカラム名を出力するステップを備える。
特定の態様によれば、前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって呼び出される下位プログラムを含む。
特定の態様によれば、前記オブジェクトは、さらに、
第１のプログラムまたは第２のプログラムを呼び出すために実行される上位プログラムと、
第１のプログラムまたは第２のプログラム、前記上位プログラム、および前記下位プログラムのそれぞれについて、当該プログラムに関連してアクセスされるデータと
を含む。
特定の態様によれば、各データに対するアクセスの種類が、作成、読出、更新および削除のいずれであるかを出力するステップをさらに備える。
特定の態様によれば、前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって出力される帳票を含む。
特定の態様によれば、第１のプログラムまたは第２のプログラムを表すソースコードは、前記オブジェクトに係るアクセスを表す命令を含み、前記オブジェクトの名称は前記命令に関連して取得される。
また、この発明に係るプログラム比較装置は、上述の方法を実行する。
また、この発明に係るプログラム比較プログラムは、上述の方法をコンピュータに実行させる。
【発明の効果】
【０００９】
この発明に係るプログラム比較方法、プログラム比較装置およびプログラム比較プログラムによれば、各プログラムの出力内容を表すテキストデータを比較するとともに、いずれかのプログラムに関連してアクセスされるオブジェクト名を出力するので、そのオブジェクト名をヒントとし、差異の原因となったプログラムをより容易に特定することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の利用例を概略的に示す図である。
【図２】本発明の利用例に係る、呼び出し関係の概念図を示す図である。
【図３】本発明の実施の形態１に係るプログラム比較装置の構成を示す図である。
【図４】図３の現出力内容の構成の例を示す図である。
【図５】図３の新出力内容の構成の例を示す図である。
【図６】図３の現テキストの構成の例を示す図である。
【図７】図３の新テキストの構成の例を示す図である。
【図８】図３の新プログラムの構成の例を示す図である。
【図９】図３のプログラム比較装置において、オブジェクト名データを作成する処理の流れを示すフローチャートである。
【図１０】図３のプログラム比較装置において、差異を抽出する処理の流れを示すフローチャートである。
【図１１】図１０のステップＳ２４において表示される内容の例を示す図である。
【図１２】図１１においてプログラムに対応するオブジェクト表示命令手段が操作された場合に出力される内容の例を示す図である。
【図１３】図１１においてプログラムに対応するオブジェクト表示命令手段が操作された場合に出力される内容の別の例を示す図である。
【図１４】図１１においてデータに対応するオブジェクト表示命令手段が操作された場合に出力される内容の例を示す図である。
【図１５】図１１において帳票に対応するオブジェクト表示命令手段が操作された場合に出力される内容の例を示す図である。
【図１６】差異の詳細の表示例を示す図である。
【図１７】差異の詳細の別の表示例を示す図である。
【図１８】実施の形態２に係る現プログラムの出力内容となるデータベースの構造を表す情報の構成の例を示す図である。
【図１９】実施の形態２に係る新プログラムの出力内容となるデータベースの構造を表す情報の構成の例を示す図である。
【図２０】実施の形態２に係る比較対定義情報の構成の例を示す図である。
【図２１】実施の形態２に係る、図１０のステップＳ２３において抽出対象とすべきカラム名の定義方法の第１の例を示す図である。
【図２２】実施の形態２に係る、図１０のステップＳ２３において抽出対象とすべきカラム名の定義方法の第２の例を示す図である。
【図２３】実施の形態２に係る、図１０のステップＳ２３において抽出対象とすべきカラム名の定義方法の第３の例を示す図である。
【図２４】図３の現テキストのうち、実施の形態２において図１０のステップＳ２３の処理に用いられる部分の具体例を示す図である。
【図２５】図３の新テキストのうち、実施の形態２において図１０のステップＳ２３の処理に用いられる部分の具体例を示す図である。
【図２６】図２４および図２５に対応する差異の詳細の表示例を示す図である。
【図２７】実施の形態２に係る差異の詳細の別の表示例を示す図である。
【発明を実施するための形態】
【００１１】
図１および図２を用いて、この発明の利用例を概略的に示す。なお、図１および図２は、本発明に係るシステム等の具体的な構成、作用、効果等を示すものではなく、図３〜図２７を用いて説明する本発明の理解を容易にする準備としてのみ示すものであり、本発明の権利範囲を規定するものではない。
【００１２】
図１に示すように、現システムから新システムに移行するに際し、新システムのための新ソースコードが開発され、新モジュールが生成される。テスト作業において、現モジュールの実行結果と、新モジュールの実行結果とがそれぞれ生成される。実行結果は、画面の表示内容を表すＰＤＦデータ、帳票を表すＰＤＦデータ、データベース（テーブル）を表すＣＳＶデータ、等である。新ソースコードが正しく現ソースコードと同一の内容をもって記述されていれば、これらの実行結果は一致するはずである。
【００１３】
プログラム比較システムは、実行結果からテキストデータを抽出し、テキストファイルを作成する。たとえばＰＤＦデータからテキストデータに該当する情報を抽出する。そして、これらのテキストファイルを比較して差異を抽出する。
【００１４】
一方で、プログラム比較システムは、新ソースコードから呼び出し関係を生成する。
図２に、呼び出し関係の概念図を示す。画面は、１以上のプログラムで利用される。帳票は、１以上のプログラムで利用される。プログラムは、０以上のデータベースを利用する。画面を利用しないプログラムもあり、いわゆるバッチプログラムは画面を利用しない場合がある。帳票を利用しないプログラムもあり、いわゆる共通プログラムは帳票を利用しない場合がある。
【００１５】
画面と帳票とは、呼び出し関係がある。たとえば画面は０以上の帳票を出力し、帳票は１以上の画面から出力される。画面とデータベースとは、呼び出し関係がある。たとえば画面はデータベースを利用する。利用の種類は、たとえば、読出（Ｒｅａｄ）、作成（Ｃｒｅａｔｅ）、更新（Ｕｐｄａｔｅ）、削除（Ｄｅｌｅｔｅ）のいずれかである。
【００１６】
帳票とデータベースとは、呼び出し関係がある。たとえば、帳票はデータベースからデータを入力する。この場合は読出（Ｒｅａｄ）に相当する。また、プログラム間には、呼び出し関係がある。たとえば、親プログラム（上位プログラム）は、子プログラム（下位プログラム）を利用する。
【００１７】
プログラム比較システムは、このようにして抽出されたテキストファイルの差異と、呼び出し関係とを表示する。ユーザ（たとえば新システムの開発者等）は、まず差異があるかどうかを確認し、差異がある場合には、差異の原因がどの新ソースコードにあるのかを特定する必要がある。この差異の原因を特定する作業は、表示された呼び出し関係を参照して効率的に行うことが可能である。
【００１８】
以下、この発明の実施の形態を、図３〜図２７に基づいて説明する。
実施の形態１．
図３に、本発明の実施の形態１に係るプログラム比較装置１００の構成を示す。プログラム比較装置１００は、本明細書に記載されるプログラム比較方法を実行する。プログラム比較装置１００は公知のコンピュータとしての構成を含み、演算を行う演算手段１０と、情報を格納する記憶手段２０とを備える。演算手段１０はＣＰＵ（中央処理装置）を含み、記憶手段２０は半導体メモリおよびＨＤＤ（ハードディスクドライブ）等の記憶媒体を含む。
【００１９】
また、とくに図示しないが、プログラム比較装置１００は、入力手段、出力手段およびネットワークインタフェース等を備えてもよい。入力手段は、使用者が情報を入力するために用いる手段であり、たとえばマウスやキーボード等である。出力手段は、使用者に対して情報を出力する手段であり、たとえば液晶ディスプレイ等の表示装置およびプリンタ等の印刷装置である。
【００２０】
記憶手段２０は、現出力内容２１、新出力内容２２、現テキスト２３、新テキスト２４、差異データ２５、新プログラム２６およびオブジェクト名データ２７を格納することができる。また、記憶手段２０は、図示しないプログラム比較プログラムを格納する。コンピュータがこのプログラム比較プログラムを実行することにより、当該コンピュータは本実施形態に係るプログラム比較装置１００として機能する。すなわち、このプログラム比較プログラムは、本明細書に記載されるプログラム比較方法を、コンピュータに実行させる。
【００２１】
現出力内容２１は、第１のプログラムの出力結果を表すデータである。たとえば現在稼働中のシステム（現行システム）のプログラム（現プログラム）をこの第１のプログラムとすることができる。また、新出力内容２２は、第２のプログラムの出力結果を表すデータである。たとえば開発途中のシステム（新システム）のプログラム（新プログラム）をこの第２のプログラムとすることができる。本実施形態では、第２のプログラムは新プログラム２６である。この第１のプログラムおよび第２のプログラムは、所定の構成を備えるコンピュータ（プログラム比較装置１００を除外しない）に、それぞれ所定の機能を実現させるものである。
【００２２】
第１のプログラムおよび第２のプログラムは、たとえば各システム内で同一または対応する処理を実施するプログラムとすることができる。なお、第１のプログラムおよび第２のプログラムは、たとえば互いに異なるプログラミング言語で記述されているものであるが、同一のプログラミング言語で記述されたものであってもよい。
【００２３】
現出力内容２１および新出力内容２２は、いずれも、ディスプレイに表示された画面の内容であってもよく、帳票として出力された内容であってもよく、データベースの内容であってもよい。ディスプレイに表示された内容および帳票として出力された内容は、たとえばＰＤＦ形式で表現することができるが、他の形式で表現されてもよい。
【００２４】
図４および図５に、それぞれ現出力内容２１および新出力内容２２の構成の例を示す。これらは画面の例であり、たとえば上述のようにＰＤＦ形式で記憶手段２０に格納される。図４の画面と図５の画面とを比較すると、フォントや罫線の態様が異なるが、表示されるテキストの内容（各文字に対応するキャラクタコード等）はほぼ同一である。ただし、テキストの内容について、画面右上の日付表示形式において、図４では「２０１７年２月２日」となっているが、図５では「２０１７／２／２」となっている点のみが相違する。
【００２５】
図３の現テキスト２３は、第１のプログラムの出力内容を表すテキストデータ（第１のテキストデータ）である。現テキスト２３は、たとえば現出力内容２１に含まれるテキストデータを抽出することによって作成可能である。同様に、新テキスト２４は、第２のプログラムの出力内容を表すテキストデータ（第２のテキストデータ）であり、たとえば新出力内容２２に含まれるテキストデータを抽出することによって作成可能である。
【００２６】
現テキスト２３および新テキスト２４は、たとえばＣＳＶ形式のテキストデータとして表現することができるが、他の形式によってもよい。図３の例では、現テキスト２３は「ＴＥＳＴ０１−現．ｃｓｖ」というファイル名を持つＣＳＶ形式のファイルとして構成され、新テキスト２４は「ＴＥＳＴ０１−新．ｃｓｖ」というファイル名を持つＣＳＶ形式のファイルとして構成されている。
【００２７】
現出力内容２１および新出力内容２２が画面の内容を表す場合には、現テキスト２３および新テキスト２４は、たとえば出力された画面の表示内容に含まれるテキストデータとなる。現出力内容２１および新出力内容２２が帳票を表す場合には、現テキスト２３および新テキスト２４は、たとえば出力された帳票に含まれるテキストデータとなる。現出力内容２１および新出力内容２２がデータベースの内容を表す場合には、現テキスト２３および新テキスト２４は、たとえば出力されたデータベースに含まれるテキストデータとなる。
【００２８】
図６および図７に、それぞれ現テキスト２３および新テキスト２４の構成の例を示す。これらはたとえば上述のようにＣＳＶ形式で記憶手段２０に格納される。図６のテキストデータと図７のテキストデータとを比較すると、内容はほぼ同一であるが、冒頭の日付表示形式のみ図４および図５と同様に相違している。
【００２９】
図３の差異データ２５は、現テキスト２３と新テキスト２４との差異を表すデータである。記憶手段２０上での具体的な構成例はとくに示さないが、たとえば現テキスト２３と新テキスト２４との間に差異があるか否かを示すデータと、差異が１つ以上ある場合には各差異の位置を示すデータとを含んでもよい。また、各テキストデータのうち差異に対応する部分の内容を含んでもよい。
【００３０】
図３の新プログラム２６は、上述のように第２のプログラムまたはこれと実質的に同等のプログラムである。すなわち、新プログラム２６を実行した結果として新出力内容２２が出力される。新プログラム２６はたとえばソースコードであるが、他の形式であってもよい。
【００３１】
図８に、新プログラム２６の構成の例を示す。図８（ａ）と図８（ｂ）とはそれぞれ異なる新プログラム２６の例である。これらの例では、新プログラム２６はソースコードの形式で表される。
【００３２】
図３のオブジェクト名データ２７は、新プログラム２６に関連してアクセスされるオブジェクトの名称を表すデータである。本明細書において、オブジェクトとは、とくに断った場合を除き、たとえばプログラムの命令において参照される任意の識別可能な概念を表す。より具体的には、データであってもよく、入出力インタフェースであってもよく、所定の構成を備えるコンピュータ（プログラム比較装置１００を除外しない）によって実行されるプログラムであってもよく、これら以外のオブジェクトであってもよい。
【００３３】
オブジェクトとなるデータは、入力装置を介して入力されるデータであってもよく、記憶手段に格納されるデータであってもよく、出力装置（表示装置または印刷装置等）を介して出力されるデータであってもよい。オブジェクトとなるデータの単位は任意に設計可能であり、たとえば、データベース、テーブル、レコード、カラム、セル、等である。
【００３４】
オブジェクトとなる入出力インタフェースは、たとえば、新プログラム２６が実行されることによって出力される画面または帳票である。これら以外のインタフェース（任意に定義されるＡＰＩ等）を含んでもよい。なお、入出力インタフェースの表現形式は任意である。たとえば、画面は、外見上はプログラムとして表現することも可能であり、その画面を表示させるためのオンラインプログラムとして表現することができる。また、たとえば、帳票は、出力され記憶手段に記憶されたデータベースとして表現することもでき、画面に表示された表として表現することもでき、表が印刷された紙媒体として表現することもできる。
【００３５】
オブジェクトとなるプログラムは、たとえば新プログラム２６を呼び出すために実行されるプログラム（新プログラム２６に対する上位プログラム）であってもよい。言い換えると、この上位プログラムがコンピュータによって実行されると、新プログラム２６（または新プログラム２６に対応するモジュール）が呼び出される場合がある。また、オブジェクトとなるプログラムは、たとえば新プログラム２６から呼び出されるサブルーチンまたは外部ルーチン等（新プログラム２６に対する下位プログラム）であってもよい。言い換えると、新プログラム２６（または新プログラム２６に対応するモジュール）がコンピュータによって実行されると、この下位プログラムが呼び出される場合がある。
【００３６】
オブジェクトとなるプログラムは、直接の上位プログラムまたは下位プログラム以外のプログラムを含んでもよい。たとえば新プログラム２６の上位プログラムを呼び出すための、さらに上位のプログラムを階層的に含んでもよく、下位プログラムによって呼び出されるさらに下位のプログラムを階層的に含んでもよい。また、新プログラム２６に対して絶対的には上位・下位の関係を定義できないプログラムを含んでもよい。たとえば、新プログラム２６の上位プログラムによって呼び出される、新プログラム２６以外のプログラムを含んでもよい。このような呼び出し関係をツリー形式で表現した場合に、新プログラム２６と同一のツリーに含まれるプログラムをすべて含んでもよい。
【００３７】
図８（ａ）のソースコードは、命令文２６ａを含む。なお、本明細書において、「命令」または「命令文」とは、コンピュータに情報を与えるための文字列を広く含む。たとえば、プログラミング言語に定義される狭義の命令（コマンド）に限らず、そのプログラミング言語で利用可能なオブジェクト、ルーチン、データ形式等を定義するためのステートメントまたは関数等に関する記述も含む。
【００３８】
命令文２６ａは、「画面Ａ」、「画面Ｂ」、「帳票Ｃ」および「ｔａｂｌｅＺ」という４つのオブジェクトに係るアクセスを表す命令を含む。画面Ａおよび画面Ｂは画面の例であり、帳票Ｃは帳票の例であり、ｔａｂｌｅＺはデータベースのテーブルの例である。「Ｃｌａｓｓ」というキーワードの直後に「画面Ａ」というオブジェクト名が記載されており、これは、命令文２６ａが画面Ａを介したアクセスを表すということを意味する。アクセスの対象として、画面Ｂ、帳票ＣおよびｔａｂｌｅＺが指定されている。
【００３９】
命令がデータに係るアクセスを表す場合（たとえばデータを対象とするアクセスを表す場合）には、アクセスを表す命令は、作成命令、読出命令、更新命令、または削除命令を含んでもよい。本実施形態では、作成命令、読出命令、更新命令、および削除命令のすべてが、アクセスを表す命令に該当する。命令文２６ａは、「ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｔａｂｌｅＺ」という表現を含んでおり、これは、命令文２６ａが、ｔａｂｌｅＺ（厳密にはｔａｂｌｅＺに含まれる各カラム）に対する読出命令を表すということを意味する。どのような表現がどの命令に対応するかは、プログラミング言語の仕様により定義される。
【００４０】
以上のように、命令文２６ａは、画面Ａを介し、ｔａｂｌｅＺを対象とするアクセスを表す命令を含む。この命令は、画面と、データ（たとえばテーブル、レコード、カラム、セル、等）とを関連付ける命令の例である。たとえば、コンピュータによって新プログラム２６が実行されると、コンピュータは画面Ａを表示し、その画面において、ｔａｂｌｅＺに対する読み出し指示の入力をユーザから受け付けることができる。
【００４１】
また、命令文２６ａは、画面Ａを介し、画面Ｂを対象とするアクセスを表す命令を含む。この命令は、複数の画面を関連付ける命令の例である。たとえば、コンピュータによって新プログラム２６が実行されると、コンピュータは画面Ａを表示し、その画面において、画面Ｂを呼び出す指示（または画面Ｂに遷移する指示）の入力をユーザから受け付けることができる。言い換えると、命令文２６ａは、画面Ａから画面Ｂへの画面遷移命令を表すということができる。
【００４２】
また、命令文２６ａは、画面Ａを介し、帳票Ｃを対象とするアクセスを表す命令を含む。この命令は、画面と帳票とを関連付ける命令の例である。たとえば、コンピュータによって新プログラム２６が実行されると、コンピュータは画面Ａを表示し、その画面において、帳票Ｃを呼び出す指示（または帳票Ｃを出力する指示）の入力をユーザから受け付けることができる。言い換えると、命令文２６ａは、画面Ａから帳票Ｃを出力させるための帳票出力命令を表すということができる。なお、帳票の出力処理は任意の装置において行うことができ、表示装置によって表示してもよく、印刷装置によって印刷してもよい。
【００４３】
図８（ｂ）の新プログラム２６は、命令文２６ｂおよび命令文２６ｃを含む。命令文２６ｂは、「画面Ｂ」および「ｔａｂｌｅＸ」という２つのオブジェクトに係るアクセスを表す命令と、「画面Ｂ」および「ｔａｂｌｅＹ」という２つのオブジェクトに係るアクセスを表す命令とを含む。ｔａｂｌｅＸおよびｔａｂｌｅＹは、データベースのテーブルの例である。また、命令文２６ｃは、「帳票Ｃ」および「ｔａｂｌｅＺ」という２つのオブジェクトに係るアクセスを表す命令を含む。
【００４４】
命令文２６ｂは、「ｉｎｓｅｒｔ  ｉｎｔｏ  ｔａｂｌｅＸ」という表現を含んでおり、これは、命令文２６ｂが、ｔａｂｌｅＸにおける新たなレコードの作成命令を表すということを意味する。また、命令文２６ｂは、「ｄｅｌｅｔｅ  ｆｒｏｍ  ｔａｂｌｅＹ」という表現を含んでおり、これは、命令文２６ｂが、ｔａｂｌｅＹにおけるレコードの削除命令を表すということを意味する。
【００４５】
命令文２６ｃは、帳票Ｃを介し、ｔａｂｌｅＺを対象とするアクセスを表す命令を含む。この命令は、帳票と、データ（たとえばテーブル、レコード、カラム、セル、等）とを関連付ける命令の例である。たとえば、コンピュータによって新プログラム２６が実行されると、コンピュータはｔａｂｌｅＺに含まれるデータを読み出し、読み出されたデータを帳票Ｃに含めて出力する。言い換えると、命令文２６ｃは、帳票Ｃの内容を定義する帳票定義命令を表すということができる。なお、帳票の詳細な内容（どの位置にどのセルのデータが出力されるか等）の定義は、図８（ｂ）では省略しているが、新プログラム２６または他の定義ファイル等において任意に作成可能である。
【００４６】
図８には示さないが、新プログラム２６は、下位プログラムに係るアクセスを表す命令を含んでもよい。そのような命令は、コンピュータに当該下位プログラムを実行させる命令であってもよい。すなわち、コンピュータは、その命令を実行することにより、下位プログラムを呼び出し、下位プログラムの実行を開始する。
【００４７】
以上のように、オブジェクトに係るアクセスを表す命令は、単一のオブジェクトのみに係るものであってもよいし、複数のオブジェクトに係るもの（たとえば複数のオブジェクトを互いに関連付けるもの）であってもよい。たとえば、オブジェクトが画面を含む場合には、アクセスを表す命令は、その画面と、他のオブジェクト（別の画面であってもよいし、画面以外のオブジェクトであってもよい）とを関連付ける命令を含んでもよい。また、たとえば、オブジェクトが帳票を含む場合には、アクセスを表す命令は、その帳票と、他のオブジェクト（帳票であってもよいし、帳票以外のオブジェクトであってもよい）とを関連付ける命令を含んでもよい。
【００４８】
以上のように構成されるプログラム比較装置１００の動作を、以下に説明する。
図９および図１０は、プログラム比較装置１００の処理の流れを示すフローチャートである。とくに、図９はオブジェクト名データ２７を作成する処理に係るものであり、図１０は差異を抽出する処理に係るものである。
【００４９】
図９の処理において、プログラム比較装置１００は、新プログラム２６に基づき、新プログラム２６に関連してアクセスされるオブジェクトの名称を取得する（ステップＳ１１）。新プログラム２６が、オブジェクトに係るアクセスを表す命令を含んでいる場合には、オブジェクトの名称はその命令に関連して取得することができる。結果は、たとえばオブジェクト名データ２７として出力される。
【００５０】
たとえばこの処理は、特定の抽出規則に基づいて行うことができる。この抽出規則は、新プログラム２６のプログラミング言語の文法等に基づいて作成される規則であり、任意に定義可能である。
【００５１】
たとえば、図８（ａ）の例では、Ｃｌａｓｓというキーワードの直後に出現する「画面Ａ」という文字列がオブジェクトの名称を表し、その後に「：」を挟んで出現する文字列がそのオブジェクトの種類を表す（この例では「ＤＳＰ」が画面を表す）。
【００５２】
また、ｓｅｌｅｃｔというキーワードがデータに対する読出命令を表し、これよりその後に「ｆｒｏｍ」命令の対象となる「ｔａｂｌｅＺ」がデータ（この場合はテーブルまたはそのテーブル内の各カラム）の名称を表す。
【００５３】
また、「．ｄｉｓｐｌａｙ」というキーワードは画面遷移を表し、その直前の文字列「画面Ｂ」が遷移先となる画面の名称を表す。
【００５４】
また、「．ｐｒｉｎｔ」というキーワードは帳票の出力を表し、その直前の文字列「帳票Ｃ」が出力される帳票の名称を表す。
【００５５】
なお、図８（ａ）の例では、新プログラム２６は単一の命令（命令文２６ａ）しか含まないが、Ｃｌａｓｓというキーワードが新たに出現した場合には、命令文２６ａはその直前で終了し、当該キーワード以降が新たな命令文となる。
以上のような抽出規則の定義方法、表現形式、等は、当業者が任意に設計可能である。図８（ｂ）についても、同様の抽出規則を設計可能である。
【００５６】
図１０の処理において、まずプログラム比較装置１００は、現出力内容２１および新出力内容２２を取得する（ステップＳ２１）。次に、プログラム比較装置１００は、現出力内容２１に基づいて現テキスト２３を取得するとともに、新出力内容２２に基づいて新テキスト２４を取得する（ステップＳ２２）。ステップＳ２２の具体的な処理内容は適宜設計可能であり、たとえばＰＤＦ形式のファイルからテキストデータを抽出するための公知のプログラムと同様に構成することができる。
【００５７】
次に、プログラム比較装置１００は、現テキスト２３および新テキスト２４に基づき、これらの差異を、差異データ２５として抽出する（ステップＳ２３、差異抽出ステップ）。差異を抽出する処理の具体的内容は任意に設計可能である。たとえば現テキスト２３および新テキスト２４を行単位で比較し、行ごとに差異があるか否かを判定してもよい。また、行の追加および削除を検出する処理を判定に用いてもよい。
【００５８】
なお、テキストデータが互いに厳密に一致しない場合であっても、所定の基準に合致していれば差異がないものと判定してもよい。たとえば、空白文字の有無のみ相違する場合や、空白文字のキャラクタコードのみ相違する場合等には、差異がないものと判定するよう設計することも可能である。さらに、キャラクラコードについて特定の除外コードを定義し、除外コードに該当する文字については差異がないものと判定するよう設計してもよい。
【００５９】
次に、プログラム比較装置１００は、ステップＳ２３の結果を出力する（ステップＳ２４）。結果はたとえばプログラム比較装置１００の表示装置に表示される。
図１１に、ステップＳ２４において表示される内容の例を示す。この例は、５つの現テキスト２３および５つの新テキスト２４からなる５組の比較対について、それぞれの差異抽出の結果を示すものである。
【００６０】
図１１の例において、「比較元」の列には現テキスト２３のファイル名が表示され、「比較先」の列には新テキスト２４のファイル名が表示される。「結果」の列には差異の有無が表示され、これがステップＳ２３の結果に対応する。
【００６１】
「詳細」の列には、差異の詳細内容を表示させるための差異表示命令手段（たとえばボタンの画像またはハイパーリンク等）が表示される。なお、図１１の例では、差異が存在しない場合にはこの操作手段は表示されない。また、差異が存在するか否かに関わらず、「詳細」の列および差異表示命令手段を表示しないように構成してもよい。
【００６２】
「呼び出し関係」の列には、新プログラム２６に関連してアクセスされるオブジェクトを表示させるためのオブジェクト表示命令手段（たとえばボタンの画像またはハイパーリンク等）が表示される。図１１の例では、オブジェクト表示命令手段は、プログラムに対応するものと、帳票に対応するものと、データ（データベース）に対応するものとの３種類が表示されている。
【００６３】
次に、プログラム比較装置１００は、新プログラム２６に関連してアクセスされるオブジェクトの名称を出力する（ステップＳ２５）。オブジェクトの名称はたとえばオブジェクト名データ２７に含まれるものである。なお、このステップＳ２５の前に、図９のステップＳ１１が終了している必要がある。
【００６４】
ステップＳ２５は、たとえば図１１の画面において、「呼び出し関係」列に表示されるオブジェクト表示命令手段のいずれかが操作されることに応じて実行される。出力はたとえばプログラム比較装置１００の表示装置または印刷装置を介して行われる。出力内容の構成は任意に設計可能であるが、図１２〜図１５に例を示す。
【００６５】
図１２の例は、図１１においてプログラムに対応するオブジェクト表示命令手段が操作された場合に出力される内容の例である。このような出力は、たとえばプログラム比較装置１００の表示装置において行われる。
【００６６】
図１２の例では、新プログラム２６に関連してアクセスされるオブジェクトの名称として、新プログラム２６が実行されることによって呼び出される下位プログラムの名称が出力されている。この例では、新プログラム２６に相当するプログラム名が枠による装飾を用いて表示され、新プログラム２６の下位プログラムの名称として「下位プログラム１」および「下位プログラム２」の２つが表示されている。
【００６７】
このような下位プログラムの名称は、新プログラム２６を参照して取得することができる。下位プログラムを呼び出すための命令の具体例は、図８には示されないが、新プログラム２６のプログラミング言語の仕様に基づいて決まっており、当該仕様に沿った抽出規則を用いてプログラム比較装置１００が抽出することが可能である。なお、図１２には新プログラム２６の名称が「画面ＴＥＳＴ０１」として表示されているが、この名称は省略してもよいし、この例のように表示する場合には新プログラム２６または事前に定義される他の情報を参照して取得可能である。
【００６８】
ここで、現出力内容２１と、新プログラム２６に係る新出力内容２２とで差異がある場合には、新プログラム２６から呼び出される下位プログラムに差異の原因が存在する可能性がある。そのような場合には、プログラム比較装置１００のユーザは図１２のような表示によって新プログラム２６の下位プログラムを容易に絞り込むことができ、絞り込んだ各プログラムを詳細に確認することにより、差異の原因となったプログラムをより容易に特定できる可能性が高まる。
【００６９】
図１３の例は、図１１においてプログラムに対応するオブジェクト表示命令手段が操作された場合に出力される内容の別の例である。このような出力は、たとえばプログラム比較装置１００の表示装置において行われる。
【００７０】
図１３の例では、新プログラム２６に関連してアクセスされるオブジェクトの名称として、新プログラム２６を含む呼び出し関係のツリーに含まれる各プログラムの名称が出力されている。この例では、最上位のプログラムの名称として「プログラムｎ」が表示されており、プログラムｎが実行されることによって呼び出される、プログラムｎの下位プログラムの名称として「プログラムｎ１」および「プログラムｎ２」が表示されている。
【００７１】
さらに、プログラムｎ２が実行されることによって呼び出される、プログラムｎ２の下位プログラムが新プログラム２６であるということが、枠による装飾を用いて表示される。プログラムｎ２は、新プログラム２６を呼び出すための上位プログラムである。また、
プログラムｎは、プログラムｎ２を介して新プログラム２６を呼び出すための、間接的な上位プログラムである。新プログラム２６のツリー内での位置を表す名称は「プログラムｎ２１」であるが、新プログラム２６の固有の名称は図１２と同じく「画面ＴＥＳＴ０１」となっている。
【００７２】
ツリーの階層は、図１３の例ではインデントによって示されている。たとえば、最上階層の「プログラムｎ」は左端に表示され、次階層の「プログラムｎ１」および「プログラムｎ２」は左から２番目のカラムに表示されている。
【００７３】
また、新プログラム２６の下位プログラムの名称も、図１２と同様に表示されている。図１３の例では、「プログラムｎ」および「プログラムｎ２」は新プログラム２６の上位プログラムの名称であり、「プログラムｎ２１１」および「プログラムｎ２１２」は、新プログラム２６の下位プログラムの名称である。
【００７４】
また、図１３の例では、「プログラムｎ１」、「プログラムｎ１１」および「プログラムｎ１２」は、新プログラム２６からみて直接の上位プログラムでも直接の下位プログラムでもないが、新プログラム２６の上位プログラムからみて下位プログラムであり、新プログラム２６を含む呼び出し関係のツリーに含まれる。
【００７５】
呼び出し関係のツリーは、新システムの全プログラム（または、少なくとも、当該ツリーを構成する可能性があるプログラムすべて）を参照して取得することができる。たとえば、新プログラム２６を呼び出すための命令が、あるプログラムに含まれていれば、そのプログラムは新プログラム２６の上位プログラムであるということができる。
【００７６】
ここで、現出力内容２１と、新プログラム２６に係る新出力内容２２とで差異がある場合には、新プログラム２６を含む呼び出し関係のツリーに含まれるプログラムのいずれかに差異の原因が存在する可能性がある。そのような場合には、プログラム比較装置１００のユーザは図１３のような表示によって呼び出し関係に含まれるプログラムを容易に絞り込むことができ、絞り込んだ各プログラムを詳細に確認することにより、差異の原因となったプログラムをより容易に特定できる可能性が高まる。
【００７７】
図１４の例は、図１１においてデータに対応するオブジェクト表示命令手段が操作された場合に出力される内容の例である。このような出力は、たとえばプログラム比較装置１００の表示装置において行われる。
【００７８】
図１４の例では、新プログラム２６に関連してアクセスされるオブジェクトの名称として、新プログラム２６を含む呼び出し関係のツリーに含まれる各プログラムの名称と、各プログラムに関連してアクセスされるデータの名称とが表示されている。データの名称は「テーブルＴ１」、「テーブルＴ２」および「テーブルＴ３」である。この例ではデータの名称はデータベースのテーブルを単位としているが、他の単位（データベース、レコード、カラム、セル、等）を単位としてもよい。
【００７９】
この例では、新プログラム２６には上位プログラムおよび下位プログラムが存在するので、新プログラム２６、上位プログラムおよび下位プログラムのそれぞれについて、プログラムに関連してアクセスされるデータが表示される。すなわち、新プログラム２６に関連してアクセスされるデータと、上位プログラムに関連してアクセスされるデータと、下位プログラムに関連してアクセスされるデータとが表示される。新プログラム２６について、上位プログラム、下位プログラムまたは双方が存在しない場合には、存在しないものについては表示を省略してもよい。
【００８０】
図１４の例では、データの名称のみならず、各データに対するアクセスの種類までも表示されている。各データに対するアクセスの種類は、たとえば作成、読出、更新および削除のいずれかである。図１４の例では、このようなアクセスの種類が、いわゆるＣＲＵＤ表の形式で表示されている。
【００８１】
ＣＲＵＤ表とは、各データに対するアクセスの種類が、作成、読出、更新および削除のいずれであるかを出力する具体例であり、たとえばデータの作成を「Ｃ」で、データの読み出しを「Ｒ」で、データの更新を「Ｕ」で、データの削除を「Ｄ」で、それぞれ表すものである。たとえば図１４の例では、「プログラムｎ」はいかなるデータにもアクセスせず、「プログラムｎ１」はテーブルＴ１にのみ「Ｒ」すなわち「読み出し」のアクセスを行う。
【００８２】
また、図１４の例では、新プログラム２６を含む呼び出し関係のツリー全体でデータに対するアクセスをまとめた行が「プログラムｎグループ全体」として表示されている。
【００８３】
ここで、現出力内容２１と、新プログラム２６に係る新出力内容２２とで差異がある場合には、新プログラム２６を含む呼び出し関係のツリーに含まれるプログラムのいずれかに差異の原因が存在する可能性がある。そのような場合には、プログラム比較装置１００のユーザは図１４のような表示によって呼び出し関係に含まれるプログラムを容易に絞り込むことができ、絞り込んだ各プログラムを詳細に確認することにより、差異の原因となったプログラムをより容易に特定できる可能性が高まる。
【００８４】
とくに、図１４のようにＣＲＵＤ表を用いた表示によれば、各プログラムと各データとの関連性を一覧にしてより具体的に確認できるので、差異の原因となったプログラムをより容易に特定できる可能性が高まる。
【００８５】
たとえば図１４の例では、プログラムｎ１２が原因となった可能性が考えられる。プログラムｎ１２にバグがあると、誤ったデータがテーブルＴ２に書き込まれ、この誤ったデータをプログラムｎ２１１が参照して誤動作を起こし、その結果としてプログラムｎ２１（新プログラム２６）の出力内容に差異が発生した可能性があるからである。
【００８６】
なお、図１４のようにプログラムツリーを表示せず、新プログラム２６に関連するデータのみ表示することも可能である。その場合、プログラムとデータとの関連性が図１４に示すものである場合には、データの名称が何も表示されないことになるが、もし新プログラム２６に関連してアクセスされるデータが存在する場合には、そのデータについてＣＲＵＤ表が表示されることになる。
【００８７】
図１５の例は、図１１において帳票に対応するオブジェクト表示命令手段が操作された場合に出力される内容の例である。このような出力は、たとえばプログラム比較装置１００の表示装置において行われる。
【００８８】
図１５の例では、新プログラム２６に関連してアクセスされるオブジェクトの名称として、新プログラム２６が実行されることによって出力される帳票の名称が表示されている。この例では、新プログラム２６に相当するプログラム名「画面ＴＥＳＴ０１」が枠による装飾を用いて表示され、新プログラム２６が実行されることによって出力される帳票の名称として「帳票Ｒ２」が表示されている。
【００８９】
このように帳票名を表示することにより、新プログラム２６と帳票との関連が明確となるので、プログラム比較装置１００のユーザは、新プログラム２６に差異の原因があった場合には関連する帳票でも差異が発生する可能性を認識することができる。
【００９０】
なお、図１５の例は、新プログラム２６以外にも、２つのプログラムの名称（「画面ＴＥＳＴ０２」および「画面ＴＥＳＴ０３」）が表示されている。また、これら２つのプログラムが実行されることによって出力される帳票の名称として「帳票Ｒ１」および「帳票Ｒ３」が表示されている。
【００９１】
図１５の例では帳票の名称が表示されているが、帳票に代えて、または帳票に加えて、新プログラム２６が実行されることによって出力される画面の名称を同様に表示してもよい。
【００９２】
図１６に、差異の詳細の表示例を示す。この例は、図６の現テキスト２３の例と、図７の新テキスト２４の例との間の差異を示す。図１０のフローチャートには示さないが、プログラム比較装置１００は、差異表示命令手段（図１１の例では「差異１」および「差異４」というボタンの画像またはハイパーリンク）が操作されることに応じて、このような出力を行ってもよい。このような出力は、たとえばプログラム比較装置１００の表示装置において行われる。
【００９３】
図１６には、現テキスト２３および新テキスト２４が出力されている。とくに、図１６の例では、現テキスト２３と新テキスト２４とが左右に並べられて表示されている。このような配置により、現テキスト２３と新テキスト２４との具体的な相違点を発見することがより容易になり、差異の原因となったプログラムが新プログラム２６自身である場合には、原因をより容易に特定できる可能性が高まる。
【００９４】
プログラム比較装置１００は、現テキスト２３および新テキスト２４のうち、差異に対応する部分の出力態様を変更してもよい。図１６の例では、差異に対応する行の背景にハイライト表示が行われ、右端に「差異」というマークが表示されている。このように出力態様を変更することにより、現テキスト２３と新テキスト２４との具体的な相違点を発見することがより容易になり、差異の原因となったプログラムが新プログラム２６自身である場合には、原因をより容易に特定できる可能性が高まる。
【００９５】
図１７に、差異の詳細の別の表示例を示す。この例では、差異に対応する行のみが出力されている。このような出力によっても、現テキスト２３と新テキスト２４との具体的な相違点を発見することがより容易になり、差異の原因となったプログラムが新プログラム２６自身である場合には、原因をより容易に特定できる可能性が高まる。
【００９６】
図９および図１０の処理の実行を開始するための処理は、任意に設計可能である。たとえば、現出力内容２１と新出力内容２２とを含む比較対を複数準備しておき、ユーザからの一度の指示でこれらの比較対がすべて処理されてもよい。
【００９７】
たとえば、複数の現出力内容２１をそれぞれ個別のＰＤＦファイルとして作成し、それらを１つまたは複数のフォルダに格納しておく。具体例は次のようなものである。
ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥画面００１．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥画面００２．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０２￥現画面￥画面０３０．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０２￥現画面￥画面０３１．ＰＤＦ
【００９８】
同様に、複数の新出力内容２２をそれぞれ個別のＰＤＦファイルとして作成し、それらを１つまたは複数のフォルダ（ただし現出力内容２１とは異なるフォルダ）に格納しておく。この時に、対応する現出力内容２１と新出力内容２２とのファイル名を同一のものとしておく。具体例は次のようなものである。
ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥画面００１．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥画面００２．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０２￥新画面￥画面０３０．ＰＤＦ
ｗｏｒｋ￥ＴＥＳＴ０２￥新画面￥画面０３１．ＰＤＦ
【００９９】
そして、フォルダ名を用いて比較対を定義する。たとえば、比較ルールとして、現出力内容２１および新出力内容２２のファイル名と、現出力内容２１が格納されたフォルダ名と、新出力内容２２が格納されたフォルダ名とを組として定義する。具体例は次のようなものである。
画面００１．ＰＤＦ  ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥  ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥
画面００２．ＰＤＦ  ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥  ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥
画面００３．ＰＤＦ  ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥  ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥
画面００４．ＰＤＦ  ｗｏｒｋ￥ＴＥＳＴ０１￥現画面￥  ｗｏｒｋ￥ＴＥＳＴ０１￥新画面￥
【０１００】
そして、プログラム比較装置１００は、それぞれ定義されたフォルダの、同一のファイル名を持つファイルを、比較対としてステップＳ２１において取得する。このようにして処理が実行される。
【０１０１】
以上説明するように、実施の形態１に係るプログラム比較装置１００によれば、現新各プログラムの出力内容を表す現テキスト２３および新テキスト２４を比較するとともに、新プログラム２６に関連してアクセスされるオブジェクト名を出力する。これによって、そのオブジェクト名をヒントとし、差異の原因となったプログラムが新プログラム２６であるか否かを、より容易に特定することができる。また、差異の原因が新プログラム２６である場合には、その事実をより容易に特定することができ、差異の原因が新プログラム２６でない場合には、原因となったプログラムをより容易に特定することができる。
【０１０２】
上述の実施の形態１または各変形例では、新プログラム２６は第２のプログラムとして参照したが、新プログラム２６を第１のプログラムとして参照しても本発明を同様に実施することができる。
【０１０３】
上述の実施の形態１または各変形例では、ステップＳ２５において、新プログラム２６に関連してアクセスされるオブジェクトの名称が出力される。変形例として、プログラム比較装置１００は、新プログラム２６に関連してアクセスされるオブジェクトの名称に代えて、またはこれに加えて、現プログラムに関連してアクセスされるオブジェクトの名称を出力してもよい。
【０１０４】
上述の実施の形態１または各変形例において、ステップＳ２１を省略してもよい。その場合には、たとえばプログラム比較装置１００は現出力内容２１および新出力内容２２を格納せず、ステップＳ２２において現テキスト２３および新テキスト２４を取得してもよい。
【０１０５】
実施の形態２．
実施の形態２は、実施の形態１または各変形例において、出力されるデータの構造を表す情報を用いるように構成したものである。以下、図１８〜図２７を用いて、実施の形態２に係るプログラム比較装置の動作を説明する。
【０１０６】
実施の形態２では、現テキスト２３および新テキスト２４は、それぞれ、現プログラムおよび新プログラム２６に関連してアクセスされるデータベースのテーブルの内容を表すテキストデータを含む。
【０１０７】
図１８に、現プログラムの出力内容となるデータベースの構造を表す情報の構成の例を示す。このような情報は、現テキスト２３の一部として出力されてもよいが、現テキスト２３とは独立して（たとえばデータベース定義ファイルとして）作成され、プログラム比較装置の記憶手段に格納されてもよい。
【０１０８】
図１８の例では、行ごとに、データベースに含まれるテーブルの名称と、そのテーブルに含まれるカラムの名称と、各カラムの属性を表す情報（たとえばｋｅｙは主キーであることを示す）とが記述されている。
【０１０９】
同様に、図１９に、新プログラムの出力内容となるデータベースの構造を表す情報の構成の例を示す。これは図１８のデータベースと対応するデータベースのものであるが、図１８と比較するとテーブルの名称が異なっている。
【０１１０】
図２０に、比較対定義情報の構成の例を示す。比較対定義情報は、現テキスト２３と新テキスト２４との差異を抽出するために比較すべきデータベースの対を定義する。図１９の例では２対が定義されており、たとえば新システムのテーブル「ＴＡＢＬＥ−Ａ２」と、現システムのテーブル「ＬＩＢＺ−ＴＡＢＬＥ−Ａ１」とが比較対となっている。
【０１１１】
実施の形態２では、テーブルの内容を表すテキストデータ（すなわち現テキスト２３および新テキスト２４）のうち、所定のカラム名に対応するカラムに係る部分のみが、差異抽出ステップ（ステップＳ２３）における抽出対象となる。
【０１１２】
図２１に、ステップＳ２３において抽出対象とすべきカラム名の定義方法の一例を示す。図２１は、抽出対象から除外すべき除外カラム名を定義するものであり、すなわち、図２１に定義されたカラム名に該当しないカラム名に係るカラムのみが、差異抽出において考慮される。プログラム比較装置は、テーブルの内容を表すテキストデータ（すなわち現テキスト２３および新テキスト２４）のうち、この除外カラム名に対応するカラムに係る部分名に対応する部分を、差異抽出ステップ（Ｓ２３）における抽出対象から除外する。
【０１１３】
図２１の例では、正規表現を用い、「ＵｐｄａｔｅＴｉｍｅ」という文字列を末尾に持つカラム名がすべて除外カラム名に対応するということが定義されている。このようなカラム名は、たとえばデータベースの各レコードの更新時刻を表す。その場合には、データのうち更新時刻のみが異なるような比較対については、差異がないものと判定されることになる。
【０１１４】
図２２および図２３に、ステップＳ２３において抽出対象とすべきカラム名の定義方法の別の例を示す。図２２は、図２０の１行目に定義された比較対に対応する。図２３は、図２０の２行目に定義された比較対に対応する。図２２および図２３の例では、ＳＱＬ文法に従い、抽出すべきカラム名が定義されている。図２２および図２３に定義されたカラム名に係るカラムのみが、差異抽出において考慮される。
【０１１５】
このように抽出対象とすべきカラム名を設定しておくと、重要でないカラム（たとえば更新時刻）のみが異なるような比較対については、差異がないものと判定されることになる。
【０１１６】
なお、現テキスト２３および新テキスト２４に含まれるテキストデータと、各テキストデータに対応するカラム名との関係は、任意の方法で定義可能である。たとえば現テキスト２３および新テキスト２４をＣＳＶ形式で表現し、各行の何番目のデータがどういうカラム名を持つかを表す情報を別途定義しておいてもよい。
【０１１７】
図２４に、現テキスト２３（たとえば「ＬＩＢＺ−ＴＡＢＬＥ−Ａ１」という名称のテーブルの内容）のうち、実施の形態２において差異抽出ステップ（ステップＳ２３）の処理に用いられる部分の具体例を示す。この例はＣＳＶ形式で表現されている。図２１〜２３のようなカラム名の制限により、更新時刻を表すカラムが削除されている。
【０１１８】
図２５に、新テキスト２４（たとえば「ＴＡＢＬＥ−Ａ２」という名称のテーブルの内容）のうち、実施の形態２において差異抽出ステップ（ステップＳ２３）の処理に用いられる部分の具体例を示す。図２４と同様に、更新時刻を表すカラムが削除されている。
【０１１９】
図２６に、図２４および図２５に対応する差異の詳細の表示例を示す。この例では、図１７と同様に、差異に対応する行のみが出力されている。このような出力によっても、現テキスト２３と新テキスト２４との具体的な相違点を発見することがより容易になり、差異の原因となったプログラムが新プログラム２６自身である場合には、原因をより容易に特定できる可能性が高まる。
【０１２０】
図２７に、実施の形態２に係る差異の詳細の別の表示例を示す。この例は、図２６とは異なるデータの比較結果を表すものである。この表示例は、テーブルの内容を表すテキストデータ（現テキスト２３および新テキスト２４）のうち、差異が抽出されたレコードについて、差異が抽出された部分に係るカラム名を出力するものである。
【０１２１】
図２７の例では、現テキスト２３の５５７４行目と、新テキスト２４の５５７４行目とに差異があることが示されている。また、差異の具体的内容として、５５７４行目の「ＦＬＡＧ」というカラム名に係るカラムにおいて、現テキスト２３では「１」となっているにもかかわらず、新テキスト２４では「２」となっているということが示されている。さらに、５５７４行目の「ＣＯＳＴ」というカラム名に係るカラムにおいて、現テキスト２３では「１００００」となっているにもかかわらず、新テキスト２４では「１０００１」となっているということが示されている。
【０１２２】
また、現テキスト２３に存在しないレコードが、新テキスト２４の５５７８行目に存在するということが示されている。また、現テキスト２３の５５８２行目のレコードに対応するレコードは、新テキスト２４には存在しないということが示されている。
【０１２３】
このような出力によっても、現テキスト２３と新テキスト２４との具体的な相違点を発見することがより容易になり、差異の原因となったプログラムが新プログラム２６自身である場合には、原因をより容易に特定できる可能性が高まる。
【符号の説明】
【０１２４】
２１  現出力内容（第１のプログラムの出力内容）、２２  新出力内容（第２のプログラムの出力内容）、２３  現テキスト（第１のテキストデータ）、２４  新テキスト（第２のテキストデータ）、２５  差異データ、２６  新プログラム（第１のプログラム、第２のプログラム）、２６ａ，２６ｂ，２６ｃ  命令文（オブジェクトに係るアクセスを表す命令）、２７  オブジェクト名データ（オブジェクトの名称）、１００  プログラム比較装置（コンピュータ）、ｎ，ｎ２  プログラム（オブジェクト、上位プログラム）、ｎ１，ｎ１１，ｎ１２  プログラム（オブジェクト）、ｎ２１  プログラム（第１のプログラム、第２のプログラム）、ｎ２１１，ｎ２１２  プログラム（オブジェクト、下位プログラム）、Ｒ１〜Ｒ３  帳票（オブジェクト）、Ｓ２３  差異抽出ステップ、Ｔ１〜Ｔ３  テーブル（オブジェクト）、ＴＥＳＴ０１〜ＴＥＳＴ０３  オブジェクト（画面）。
【図１】
2019016201.tif 000003
【図２】
2019016201.tif 000004
【図３】
2019016201.tif 000005
【図４】
2019016201.tif 000006
【図５】
2019016201.tif 000007
【図６】
2019016201.tif 000008
【図７】
2019016201.tif 000009
【図８】
2019016201.tif 000010
【図９】
2019016201.tif 000011
【図１０】
2019016201.tif 000012
【図１１】
2019016201.tif 000013
【図１２】
2019016201.tif 000014
【図１３】
2019016201.tif 000015
【図１４】
2019016201.tif 000016
【図１５】
2019016201.tif 000017
【図１６】
2019016201.tif 000018
【図１７】
2019016201.tif 000019
【図１８】
2019016201.tif 000020
【図１９】
2019016201.tif 000021
【図２０】
2019016201.tif 000022
【図２１】
2019016201.tif 000023
【図２２】
2019016201.tif 000024
【図２３】
2019016201.tif 000025
【図２４】
2019016201.tif 000026
【図２５】
2019016201.tif 000027
【図２６】
2019016201.tif 000028
【図２７】
2019016201.tif 000029
【手続補正書】
【提出日】平成30年8月2日(2018.8.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上述の問題点を解決するため、この発明に係る方法は、
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
前記第１のテキストデータおよび第２のテキストデータは、それぞれ第１のプログラムおよび第２のプログラムに関連してアクセスされるデータベースのテーブルの内容を表すテキストデータを含み、
前記テーブルの内容を表すテキストデータのうち、所定のカラム名に対応するカラムに係る部分のみが、前記差異抽出ステップにおける抽出対象となる。
また、この発明に係る方法は、
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
前記オブジェクトは、
第１のプログラムまたは第２のプログラムが実行されることによって呼び出される下位プログラムと、
第１のプログラムまたは第２のプログラムを呼び出すために実行される上位プログラムと、
第１のプログラムまたは第２のプログラム、前記上位プログラム、および前記下位プログラムのそれぞれについて、当該プログラムに関連してアクセスされるデータと
を含み、
前記方法は、各データに対するアクセスの種類が、作成、読出、更新および削除のいずれであるかを出力するステップをさらに備える。
また、この発明に係る方法は、
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
第１のテキストデータおよび第２のテキストデータを出力するステップと、
第１のテキストデータおよび第２のテキストデータのうち、前記差異に対応する部分の出力態様を変更するステップと
を備える。
また、この発明に係る方法は、
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
第１のテキストデータおよび第２のテキストデータは、オンラインプログラムが実行されることにより表示される入出力インタフェースとしての画面の表示内容に含まれるテキストデータである。
特定の態様によれば、前記方法は、さらに、前記テーブルの内容を表すテキストデータのうち、差異が抽出されたレコードについて、差異が抽出された部分に係るカラム名のみを出力するステップを備える。
特定の態様によれば、前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって出力される帳票を含む。
特定の態様によれば、第１のプログラムまたは第２のプログラムを表すソースコードは、前記オブジェクトに係るアクセスを表す命令を含み、前記オブジェクトの名称は前記命令に関連して取得される。
また、この発明に係るプログラム比較装置は、上述の方法を実行する。
また、この発明に係るプログラム比較プログラムは、上述の方法をコンピュータに実行させる。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
前記第１のテキストデータおよび第２のテキストデータは、それぞれ第１のプログラムおよび第２のプログラムに関連してアクセスされるデータベースのテーブルの内容を表すテキストデータを含み、
前記テーブルの内容を表すテキストデータのうち、所定のカラム名に対応するカラムに係る部分のみが、前記差異抽出ステップにおける抽出対象となる、
プログラム比較方法。
【請求項２】
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
前記オブジェクトは、
第１のプログラムまたは第２のプログラムが実行されることによって呼び出される下位プログラムと、
第１のプログラムまたは第２のプログラムを呼び出すために実行される上位プログラムと、
第１のプログラムまたは第２のプログラム、前記上位プログラム、および前記下位プログラムのそれぞれについて、当該プログラムに関連してアクセスされるデータと
を含み、
前記方法は、各データに対するアクセスの種類が、作成、読出、更新および削除のいずれであるかを出力するステップをさらに備える、プログラム比較方法。
【請求項３】
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
第１のテキストデータおよび第２のテキストデータを出力するステップと、
第１のテキストデータおよび第２のテキストデータのうち、前記差異に対応する部分の出力態様を変更するステップと
を備える、プログラム比較方法。
【請求項４】
コンピュータが実行する、プログラム比較方法であって、
第１のプログラムの出力内容を表す第１のテキストデータを取得するステップと、
第２のプログラムの出力内容を表す第２のテキストデータを取得するステップと、
第１のテキストデータと第２のテキストデータとの差異を抽出する、差異抽出ステップと、
第１のプログラムまたは第２のプログラムに関連してアクセスされるオブジェクトの名称を出力するステップと、
を備え、
第１のテキストデータおよび第２のテキストデータは、オンラインプログラムが実行されることにより表示される入出力インタフェースとしての画面の表示内容に含まれるテキストデータである、プログラム比較方法。
【請求項５】
前記方法は、さらに、前記テーブルの内容を表すテキストデータのうち、差異が抽出されたレコードについて、差異が抽出された部分に係るカラム名のみを出力するステップを備える、請求項１に記載の方法。
【請求項６】
前記オブジェクトは、第１のプログラムまたは第２のプログラムが実行されることによって出力される帳票を含む、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
第１のプログラムまたは第２のプログラムを表すソースコードは、前記オブジェクトに係るアクセスを表す命令を含み、前記オブジェクトの名称は前記命令に関連して取得される、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
請求項１〜７のいずれか一項に記載の方法を実行する、プログラム比較装置。
【請求項９】
請求項１〜７のいずれか一項に記載の方法をコンピュータに実行させる、プログラム比較プログラム。