以下に、本願の開示する評価結果の出力プログラム、評価結果の出力方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
[実施例1に係る情報処理装置の構成]
図1は、実施例1に係る情報処理装置の構成を示す機能ブロック図である。実施例1に係る情報処理装置1は、同じファイル形式のファイル同士の比較を行う際に、特定の項目については、内容が不一致であっても、一致とみなす。特定の項目の内容に不一致があっても一致とみなす比較方法(除外ルールという)は、あらかじめファイル(例えば、後述する判定除外ファイル)に記憶される。除外ルールは、複数記憶されることが可能である。情報処理装置は、複数の除外ルールのいずれかに示される項目のみ値が不一致である場合に、比較結果が正常であることを示す情報とともに、不一致があった項目と対応する除外ルールがいずれであるかを識別する情報を出力する。
図1に示すように、情報処理装置1は、制御部10および記憶部20を有する。
記憶部20は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部20は、比較元ファイル21、比較先ファイル22、比較結果ファイル23、判定除外ファイル24および結果出力ファイル25を有する。
比較元ファイル21は、比較する元のファイルである。比較先ファイル22は、比較する先のファイルである。比較元ファイル21および比較先ファイル22は、ともに同じファイル形式である。なお、実施例1では、比較元ファイル21および比較先ファイル22が、CSV(comma-separated values)形式のファイル形式である場合とする。
比較結果ファイル23には、比較元ファイル21と比較先ファイル22との対応するレコード同士の比較結果が設定される。比較結果ファイル23には、除外ルールが使用される前の比較結果が設定される。比較結果ファイル23には、例えば、対応するレコード同士のうち、(判定結果がNGとなる)差異のある項目を含むレコード同士が対応付けて設定される。なお、比較結果ファイル23のデータ構造は、後述する。
判定除外ファイル24には、値が不一致であっても一致とみなす特定の項目に関する情報である除外ルールが設定される。判定除外ファイル24には、複数の除外ルールが設定可能である。除外ルールは、例えば、所定の項目に対応する値が正規表現で示される値であれば、所定の項目の値が不一致であっても、この項目は結果判定の対象から除外されるというルールである。なお、判定除外ファイル24のデータ構造は、後述する。
結果出力ファイル25には、比較元ファイル21と比較先ファイル22との対応するレコード同士の比較結果が設定される。比較結果ファイル23との違いは、除外ルールが使用された後の比較結果が設定されることである。そして、結果出力ファイル25には、対応するレコード同士の比較結果とともに、特定の項目と対応する除外ルールがいずれかであるかを識別する情報が設定される。なお、結果出力ファイル25のデータ構造は、後述する。
制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部10は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。または、制御部10は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。さらに、制御部10は、入力部11、初期化部12、比較部13、判定除外部14および結果出力部15を有する。
入力部11は、比較コマンドの入力を受け付ける。比較コマンドは、ファイル同士の比較処理を比較部13に実行させ、判定除外処理を判定除外部14に実行させ、結果出力処理を結果出力部15に出力させるコマンドである。一例として、比較コマンドは、比較コマンド名のほか、引数として、比較元ファイル名、比較先ファイル名を含む。さらに、結果出力先を含んでもよい。比較コマンド名は、あらかじめ定められた比較処理に係るコマンドの名称である。比較元ファイル名は、比較元ファイル21のファイル名である。比較先ファイル名は、比較先ファイル22のファイル名である。結果出力先は、比較結果ファイル23や結果出力ファイル25の出力先のディレクトリである。さらに、比較コマンドは、判定除外処理を実行させる場合、オプションの引数として、判定除外処理のオプションであることがわかる符号および判定除外ファイル名を含む。判定除外処理のオプションであることがわかる符号は、一例として、「−u」を用いることができる。判定除外ファイル名は、判定除外ファイル24のファイル名である。
初期化部12は、比較コマンドを実行するために用いられる制御データや変数を初期化する。初期化部12は、比較コマンドを解析する。一例として、初期化部12は、入力部11によって入力された比較コマンドを解析する。また、初期化部12は、比較コマンドのオプションとして判定除外処理のオプションの有無を判定し、動作モードを認識する。なお、初期化部12は、比較コマンドの引数のチェックを行っても良い。
比較部13は、比較元ファイル21と比較先ファイル22を比較し、2つのファイルの差異を比較結果ファイル23に格納する。なお、比較部13による比較処理は、例えば、ファイルの比較を行うための「diffコマンド」のアルゴリズムを用いれば良いが、これに限定されず、いかなる既知の技術を用いても良い。
ここで、比較結果ファイル23のデータ構造を、図2を参照して説明する。図2は、実施例1に係る比較結果ファイルのデータ構造の一例を示す図である。図2に示すように、比較結果ファイル23は、見出し23a、判定結果23b、比較結果23c、除外条件23d、比較元行番号23e、比較先行番号23fおよび差異項目23gを対応付けて記憶する。見出し23aは、差異情報のヘッダであり、2つのファイルの対応するレコードに差異があることを示す見出しの識別子である。
判定結果23b〜差異項目23gは、差異情報の詳細である。判定結果23bは、2つのファイルの対応するレコードの判定結果である。判定結果23bは、比較部13による比較処理と判定除外部14による判定除外処理によって決定される結果である。一例として、判定結果23bとして「OK」は一致の判定がなされたことを示し、「NG」は一致の判定がなされなかったことを示す。
比較結果23cは、比較部13による比較処理の結果である。一例として、比較結果23cとして「Unmatch」は差異があることを示す。
除外条件23dには、判定除外ファイル24に設定されている除外ルール毎の適用結果が設定される。除外条件23dは、判定除外部14による判定除外処理によって決定される結果である。一例として、除外条件23dとして「−」は初期値であることを示し、除外ルールの適用がない場合には、除外ルール名が設定されず、除外ルールの適用がある場合には、除外ルール名が設定される。なお、ここでいう「除外ルールの適用がある」とは、言い換えると、除外ルールに合致することをいう。「除外ルールの適用がない」とは、言い換えると、除外ルールに合致しないことをいう。
比較元行番号23eは、比較部13により差異が検出された比較元の行(レコード)の番号である。一例として、比較元行番号23eとして「−1」は、レコードが比較先にのみ存在する場合であることを示す。比較先行番号23fは、比較部13により差異が検出された比較先の行(レコード)の番号である。一例として、比較先行番号23fとして「−1」は、レコードが比較元にのみ存在する場合であることを示す。
差異項目23gは、比較部13により差異が検出された項目であり、該項目のカラム位置を示す。一例として、レコードに「業務ID、日付、ユーザID」の順で各項目に対する値が設定される場合、日付に差異があれば、差異項目23gはカラム位置として「2」と設定され、ユーザIDに差異があれば、差異項目23gはカラム位置として「3」と設定される。なお、複数の項目に差異があれば、差異がある項目のカラム位置をカンマ(、)で区切って設定される。
ここで、比較部13の入力データと出力データについて、図3を参照して説明する。図3は、実施例1に係る比較部の入力データと出力データの一例を示す図である。図3に示すように、比較部13の入力データは、CSV形式の比較元ファイル21およびCSV形式の比較先ファイル22である。ここでは、「XX.csv」を比較元ファイル21とし、「YY.csv」を比較先ファイル22とする。比較元ファイル21および比較先ファイル22の各1行目には、ヘッダ情報として項目名が記述されている。また、比較部13の出力データは、比較結果ファイル23である。
比較部13は、比較元としての「XX.csv」と比較先としての「YY.csv」を比較し、比較結果を取得する。ここでは、比較部13は、比較元の比較結果と比較先の比較結果を取得する。一例として、業務IDが“A0001”のレコードである場合、日付に差異がある。すなわち、比較元の日付は「20131201」であるのに対し、比較先の日付は「20140112」であり、日付に差異がある。業務IDが“A0002”のレコードである場合、比較元には存在するが、比較先には存在しない。すなわち、レコードが比較元にのみ存在する場合である。業務IDが“A0009”のレコードである場合、日付、ユーザIDおよびRCodeに差異がある。すなわち、比較元の日付、ユーザID、RCodeは「20131202」、「0xFFF9」、「0」であるのに対し、比較先の日付、ユーザID、RCodeは「20140114」、「0xFFF2」、「1」であり、日付、ユーザID、RCodeに差異がある。
このような比較結果の下、比較部13は、2つのファイルの差異を比較結果ファイル23に格納する。ここでは、一例として、業務IDが“A0001”のレコードである場合、日付に差異があるので、見出し23aとして「差異1」、判定結果23bとして「NG」、比較結果23cとして「Unmatch」が格納される。除外条件23dとして「−」、比較元行番号23eとして「1」、比較先行番号23fとして「1」、差異項目23gとして日付のカラム位置である「2」が格納される。業務IDが「A0002」のレコードである場合、比較先には存在しないので、見出し23aとして「差異2」、判定結果23bとして「NG」、比較結果23cとして「Unmatch」が格納される。除外条件23dとして「−」、比較元行番号23eとして「2」、比較先行番号23fとして「−1」、差異項目23gとして「 」が格納される。業務IDが「A0009」のレコードである場合、日付、ユーザID、RCodeに差異があるので、見出し23aとして「差異9」、判定結果23bとして「NG」、比較結果23cとして「Unmatch」が格納される。除外条件23dとして「−」、比較元行番号23eとして「9」、比較先行番号23fとして「8」、差異項目23gとして日付、ユーザID、RCodeのカラム位置である「2、3、4」が格納される。
図1に戻って、判定除外部14は、比較コマンドのオプションに判定除外処理の指定がある場合、比較結果ファイル23および判定除外ファイル24を用いて、判定除外処理を行う。
ここで、判定除外ファイル24のデータ構造を、図4を参照して説明する。図4は、実施例1に係る判定除外ファイルのデータ構造の一例を示す図である。図4に示すように、判定除外ファイル24は、除外ルール名24a、項目名24bおよび正規表現24cを対応付けて記憶する。除外ルール名24aは、除外ルールとして一意の名称である。項目名24bは、判定の除外対象とする項目名である。項目名24bは、CSV形式のファイル比較の場合には、比較元ファイル21および比較先ファイル22のそれぞれの1行目にヘッダ情報として記述された項目名に対応する。正規表現24cは、項目名24bの項目の値の正規表現である。すなわち、項目名24bの項目の値が正規表現24cに合致した場合、この項目は判定対象外となる。換言すれば、項目名24bの項目の値が正規表現24cに合致した場合、項目の値に不一致があっても一致とみなされる。なお、正規表現24cは省略しても良く、省略した場合には、項目名24bの項目はいかなる値であっても判定対象外となる。換言すれば、項目名24bの項目の値がいかなる値であっても、項目の値は一致とみなされる。
一例として、除外ルール名24aが「特定ユーザID除外」である場合、項目名24bとして「ユーザID」、正規表現24cとして「0xFFF*」と記憶している。ユーザIDの除外ルール名24aが「日付除外」である場合、項目名24bとして「日付」、正規表現24cとして「201*」と記憶している。正規表現のうち「*」は、ワイルドカードであって任意の文字列を含んでよいことを意味する。すなわち、「ユーザID」の値がそれぞれ「0xFFFF」と「0xFFFA」であれば、どちらとも正規表現24cとしての「0xFFF*」に合致するので、ユーザIDは判定対象外となる。これに対して、「ユーザID」の値がそれぞれ「0xFFFF」と「0xFAFF」であれば、「0xFAFF」が正規表現24cとしての「0xFFF*」に合致しないので、ユーザIDは判定対象となる。
図1に戻って、例えば、判定除外部14は、比較部13により生成された比較結果ファイル23および比較コマンドで指定された判定除外ファイル24を読み込む。判定除外部14は、比較結果ファイル23のレコードを順次選択し、選択したレコードから比較元行番号23e、比較先行番号23fおよび差異項目23gを抽出する。判定除外部14は、比較元行番号23eおよび比較先行番号23fのいずれか一方が「−1」であれば、一方の対応する行が存在しないので、選択したレコードの判定結果23bを「NG」のままとする。
判定除外部14は、比較元行番号23eおよび比較先行番号23fのいずれも「−1」でなければ、比較元ファイル21の比較元行番号23eのレコードのうち、差異項目23gに含まれるカラム位置に該当する値および項目名を取得する。判定除外部14は、比較先ファイル22の比較先行番号23fのレコードのうち、差異項目23gに含まれるカラム位置に該当する値および項目名を取得する。判定除外部14は、差異項目23gに含まれるカラム位置に該当する項目名が判定除外ファイル24に存在すれば、判定除外ファイル24から該当する項目名24b、正規表現24cおよび除外ルール名24aを抽出する。判定除外部14は、比較元の該当する値および比較先の該当する値が、どちらとも抽出された正規表現24cに合致するか否かを判定する。判定除外部14は、それぞれの値がどちらとも抽出された正規表現24cに合致すれば、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aを設定する。判定除外部14は、どちらか一方でも抽出された正規表現24cに合致しなければ、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aを設定しない。
判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致すれば、比較結果ファイル23の選択レコードの判定結果23bに判定が一致することを示す「OK」を設定する。すなわち、差異項目23gに含まれるカラム位置の項目のそれぞれが、いずれかの除外ルールに設定された正規表現24cに合致した場合に、当該レコードに含まれる複数の項目についての比較の結果として、正常とみなせることを意味する判定結果「OK」を設定する。判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致しなければ、いずれかの除外ルールに合致しなかったので、判定結果23bを「NG」のままとする。
また、判定除外部14は、差異項目23gに含まれるカラム位置に該当する項目名が判定除外ファイル24に存在しなければ、該項目名が判定除外項目でないので、判定結果23bを「NG」のままとする。
ここで、判定除外部14による処理の具体例を、図5A〜図5Dを参照して説明する。図5A〜図5Dは、判定除外部による処理の具体例を示す図である。なお、図5A〜図5Dでは、図3で示した比較元ファイル21、比較先ファイル22および比較結果ファイル23を用いて説明するものとする。また、図4で示した判定除外ファイル24を用いて説明するものとする。
図5Aは、比較結果ファイル23の見出し23aが「差異1」である場合の差異項目の除外判定における図である。比較結果ファイル23の比較元行番号23e「1」は、比較元ファイル21のNo21aが「1」のレコードに対応する。比較結果ファイル23の比較先行番号23f「1」は、比較先ファイル22のNo22aが「1」のレコードに対応する。
判定除外部14は、比較元行番号23eおよび比較先行番号23fのいずれも「−1」でないので、比較元ファイル21および比較先ファイル22のそれぞれの対象レコードのうち、差異項目23gに含まれるカラム位置に該当する値および項目名を取得する。ここでは、差異項目23gに含まれるカラム位置が「2」であるので、判定除外部14は、比較元ファイル21の対象レコードのカラム位置「2」に対応する値として「20131201」および項目名として「日付」を取得する。判定除外部14は、比較先ファイル22の対象レコードのカラム位置「2」に対応する値として「20140112」および項目名として「日付」を取得する。
判定除外部14は、差異項目23gに含まれるカラム位置に該当する項目名「日付」が判定除外ファイル24に存在するので、判定除外ファイル24から該当する項目名24b、正規表現24cおよび除外ルール名24aを抽出する。ここでは、判定除外部14は、項目名24bとして「日付」、正規表現24cとして「201*」、除外ルール名24aとして「日付除外」を抽出する。
判定除外部14は、比較元の該当する値および比較先の該当する値が、どちらとも抽出された正規表現24cに合致するか否かを判定する。ここでは、正規表現24cが「201*」である。このうち「*」はワイルドカードであって任意の文字列を含んでよいので、この正規表現は、項目名「日付」に設定された値の左から3文字が「201」に一致していればよいことを意味する。比較元の該当する値が「20131201」であるので、比較元の該当する値は正規表現24cに合致する。比較先の該当する値も「20140112」であるので、比較先の該当する値は正規表現24cに合致する。したがって、判定除外部14は、どちらとも合致すると判定する。そこで、判定除外部14は、どちらとも合致すると判定したので、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aを設定する。ここでは、判定除外部14は、除外条件23dに「日付除外」を設定する(s1)。なお、判定所外部14は、比較元の該当する値および比較先の該当する値のいずれか一方または両方が、抽出された正規表現24cに合致しない場合は、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aを設定しない。
判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致すれば、比較結果ファイル23の選択レコードの判定結果23bに判定が一致することを示す「OK」を設定する。ここでは、差異項目23gに含まれるカラム位置の数および除外条件23dに設定された除外ルール名の数は共に1であるので、判定除外部14は、「OK」を設定する(s2)。
図5Bは、比較結果ファイル23の見出し23aが「差異4」である場合の差異項目の除外判定における図である。比較結果ファイル23の比較元行番号23e「4」は、比較元ファイル21のNo21aが「4」のレコードに対応する。比較結果ファイル23の比較先行番号23f「3」は、比較先ファイル22のNo22aが「3」のレコードに対応する。
判定除外部14は、比較元行番号23eおよび比較先行番号23fのいずれも「−1」でないので、比較元ファイル21および比較先ファイル22のそれぞれの対象レコードのうち、差異項目23gに含まれるカラム位置に該当する値および項目名を取得する。ここでは、差異項目23gに含まれるカラム位置が「2、3」であるので、判定除外部14は、比較元ファイル21の対象レコードのカラム位置「2」とカラム位置「3」に対応する値および項目名をそれぞれ取得する。なお、差異項目23gに含まれるカラム位置が「2」の場合は、除外条件23dに「日付除外」を設定する(s1)まで、図5Aと同様であるので、その説明を省略する。
差異項目23gに含まれるカラム位置が「3」の場合は、判定除外部14は、比較元ファイル21の対象レコードのカラム位置「3」に対応する値として「0xFFF1」および項目名として「ユーザID」を取得する。判定除外部14は、比較先ファイル22の対象レコードのカラム位置「3」に対応する値として「0xFFF2」および項目名として「ユーザID」を取得する。
判定除外部14は、差異項目23gに含まれるカラム位置に該当する項目名「ユーザID」が判定除外ファイル24に存在するので、判定除外ファイル24から該当する項目名24b、正規表現24cおよび除外ルール名24aを抽出する。ここでは、判定除外部14は、項目名24bとして「ユーザID」、正規表現24cとして「0xFFF*」、除外ルール名24aとして「特定ユーザID除外」を抽出する。
判定除外部14は、比較元の該当する値および比較先の該当する値が、どちらとも抽出された正規表現24cに合致するか否かを判定する。ここでは、正規表現24cが「0xFFF*」であり、比較元の該当する値が「0xFFF1」であるので、比較元の該当する値は正規表現24cに合致する。比較先の該当する値も「0xFFF2」であるので、比較先の該当する値は正規表現24cに合致する。したがって、判定除外部14は、どちらとも合致すると判定する。そこで、判定除外部14は、どちらとも合致すると判定したので、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aをさらに設定する。ここでは、判定除外部14は、除外条件23dに「特定ユーザID除外」をさらに設定する(s3)。
判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致すれば、比較結果ファイル23の選択レコードの判定結果23bに判定が一致することを示す「OK」を設定する。ここでは、差異項目23gに含まれるカラム位置の数および除外条件23dに設定された除外ルール名の数は共に2であるので、判定除外部14は、「OK」を設定する(s4)。
ところで、図5Bでは、差異項目23gに含まれる複数のカラム位置に対応する項目がどちらも除外条件に合致する場合について説明した。図5Cでは、差異項目23gに含まれる複数のカラム位置に対応する項目のうち一方が除外条件に合致し、他方が除外条件に合致しない場合について説明する。
図5Cは、比較結果ファイル23の見出し23aが「差異7」である場合の差異項目の除外判定における図である。比較結果ファイル23の比較元行番号23e「7」は、比較元ファイル21のNo21aが「7」のレコードに対応する。比較結果ファイル23の比較先行番号23f「6」は、比較先ファイル22のNo22aが「6」のレコードに対応する。なお、差異項目23gに含まれるカラム位置が「2」の場合は、除外条件23dに「日付除外」を設定する(s1)まで、図5Aと同様であるので、その説明を省略する。
差異項目23gに含まれるカラム位置が「3」の場合は、判定除外部14は、比較元ファイル21の対象レコードのカラム位置「3」に対応する値として「0xFF07」および項目名として「ユーザID」を取得する。判定除外部14は、比較先ファイル22の対象レコードのカラム位置「3」に対応する値として「0xFF10」および項目名として「ユーザID」を取得する。
判定除外部14は、差異項目23gに含まれるカラム位置に該当する項目名「ユーザID」が判定除外ファイル24に存在するので、判定除外ファイル24から該当する項目名24b、正規表現24cおよび除外ルール名24aを抽出する。ここでは、判定除外部14は、項目名24bとして「ユーザID」、正規表現24cとして「0xFFF*」、除外ルール名24aとして「特定ユーザID除外」を抽出する。
判定除外部14は、比較元の該当する値および比較先の該当する値が、どちらとも抽出された正規表現24cに合致するか否かを判定する。ここでは、正規表現24cが「0xFFF*」であり、比較元の該当する値が「0xFF07」であるので、比較元の該当する値は正規表現24cに合致しない。比較先の該当する値も「0xFF10」であるので、比較先の該当する値は正規表現24cに合致しない。したがって、判定除外部14は、どちらも合致しているわけではないと判定する。そこで、判定除外部14は、どちらも合致するわけではないと判定したので、比較結果ファイル23の選択レコードの除外条件23dに、該当する除外ルール名24aをさらには設定しない。
判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致すれば、比較結果ファイル23の選択レコードの判定結果23bに判定が一致することを示す「OK」を設定する。ここでは、差異項目23gに含まれるカラム位置の数、除外条件23dに設定された除外ルール名の数は、それぞれ2、1であるので、判定除外部14は、判定結果23bを「NG」のままとする(s5)。
ところで、図5Bでは、差異項目23gに含まれる複数のカラム位置に対応する項目がどちらも除外条件に合致する場合について説明した。図5Dでは、差異項目23gに含まれる複数のカラム位置にそれぞれ対応する項目のうち、少なくとも1つの項目が除外条件にない場合について説明する。
図5Dは、比較結果ファイル23の見出し23aが「差異9」である場合の差異項目の除外判定における図である。比較結果ファイル23の比較元行番号23e「9」は、比較元ファイル21のNo21aが「9」のレコードに対応する。比較結果ファイル23の比較先行番号23f「8」は、比較先ファイル22のNo22aが「8」のレコードに対応する。なお、差異項目23gに含まれるカラム位置が「2」の場合は、除外条件23dに「日付除外」を設定する(s1)まで、図5Bと同様であるので、その説明を省略する。また、差異項目23gに含まれるカラム位置が「3」の場合は、除外条件23dに「特定ユーザID除外」を設定する(s3)まで、図5Bと同様であるので、その説明を省略する。
差異項目23gに含まれるカラム位置が「4」の場合は、判定除外ファイル24に、カラム位置「4」に対応する項目の項目名24b「RCode」は存在しない。そこで、判定除外部14は、カラム位置「4」に対応する項目の項目名24b「RCode」に対して、判定除外処理を行わない。
判定除外部14は、差異項目23gに含まれるカラム位置の数と除外条件23dに設定された除外ルール名の数が一致すれば、比較結果ファイル23の選択レコードの判定結果23bに判定が一致することを示す「OK」を設定する。ところが、差異項目23gに含まれるカラム位置の数は3、除外条件23dに設定された除外ルール名の数は2であるので、判定除外部14は、「NG」のままとする(s6)。
図1に戻って、結果出力部15は、判定除外ファイル24および判定除外部14により生成された比較結果ファイル23を用いて、比較元ファイル21と比較先ファイル22との比較結果を出力する。
例えば、結果出力部15は、比較元ファイル21のレコードを順番に読み込む。結果出力部15は、比較結果ファイル23を読み込み、比較元行番号23eに、比較元ファイル21から読み込んだレコードのNo21aが設定されているレコードがあるか否かを判定する。結果出力部15は、設定されているレコードがなければ、差異がないと判断し、一致していることを示す比較結果を、結果出力ファイル25に格納する。つまり、比較結果ファイル23は、差異のある項目を含むレコード同士を対応付けて設定されているので、設定されているレコードがなければ、差異がなく、一致しているからである。
結果出力部15は、設定されているレコードがあれば、比較結果ファイル23の該当するレコードの判定結果23b、比較結果23cを結果出力ファイル25に格納する。加えて、結果出力部15は、比較結果ファイル23の該当するレコードに除外条件23dが設定されていれば、除外条件23dに関する情報を結果出力ファイル25に格納する。除外条件23dに関する情報は、一例として、除外条件23dに設定されている除外ルール名に対応する除外ルールが適用されたことを示す情報(例えば「適用」)を意味する。すなわち、結果出力部15は、比較結果とともに、項目の値は一致せず除外ルールに示される比較方法により一致が検出されたことを識別可能な情報を出力する。結果出力部15は、比較先ファイル21についても、比較元ファイル21と同様に、比較結果とともに除外条件23dに関する情報を出力すべく、各種情報を結果出力ファイル25に格納する。
[結果出力ファイルのデータ構造]
ここで、結果出力ファイル25のデータ構造を、図6を参照して説明する。図6は、実施例1に係る比較結果ファイルのデータ構造の一例を示す図である。図6に示すように、結果出力ファイル25は、比較元と比較先とでそれぞれ区別されている。結果出力ファイル25は、No25a、判定結果25b、比較結果25c、除外条件25d、行番号25e、業務ID25f、日付25g、ユーザID25hおよびRCode25iを対応付けて記憶する。
No25a、業務ID25f〜RCode25iは、比較元ファイル21の項目に対応する内容である。行番号25eは、比較元ファイル21のレコードの行番号を示す。判定結果25bは、行番号に対応するレコードの判定結果である。判定結果25bは、比較結果ファイル23の判定結果23bに対応する。比較結果25cは、比較部13による比較処理の結果である。比較結果25cは、比較結果ファイル23の比較結果23cに対応する。判定除外25dは、判定除外ファイル24に記述されている除外ルール毎の適用結果が設定される。一例として、除外条件25dとして「−」は初期値であることを示し、「 」は除外ルールの適用がなかったことを示し、「適用」は除外ルールの適用があったことを示す。除外条件25dは、除外ルールが複数存在すれば、除外ルールに対応付けてそれぞれの適用結果が設定される。
図6に示す比較結果ファイルの例では、比較元の項目と比較先の項目とで値が不一致であったことが、識別可能に表示されている。即ち、比較処理の対象となった比較元ファイル21の項目に対応する業務ID25f〜RCode25iの各欄のうち、比較元の項目と比較先の項目とで値が不一致であった欄では、欄の背景色が変更されている。不一致であることの表示の仕方は、背景色を変更する以外の方法により行なわれてももちろん構わない。例えば、文字色を変えることが考えられる。
一例として、図6で示した結果出力ファイル25の内容は、図3で示した比較元ファイル21と比較先ファイル22の比較結果について、図4で示した判定除外ファイル24に基づいて判定除外をした結果出力の例である。比較元のNo「1」と比較先のNo「1」との比較結果は、日付25gの内容のみが不一致であるが、除外条件25dとして日付除外が「適用」となっているので、判定結果25bは、「OK」となっている。すなわち、除外条件25dの欄に「適用」が出力されていることにより、項目の値は一致していたわけではなく、不一致であったが除外条件により一致とみなされたことが示されている。また、判定結果25bの欄に「OK」が出力されていることにより、比較に応じた評価の結果として正常であることが示されている。
また、比較元のNo「4」と比較先のNo「3」との比較結果は、日付25gの内容とユーザID25hの内容とが不一致であるが、除外条件25dとして日付除外、特定ユーザID除外とも「適用」となっているので、判定結果25bは、「OK」となっている。
また、比較元のNo「7」と比較先のNo「6」との比較結果は、日付25gの内容とユーザID25hの内容とが不一致である。除外条件25dとして日付除外が「適用」であるが、特定ユーザID除外が「適用」とされていない。したがって、判定結果25bは、「NG」となっている。
また、比較元のNo「9」と比較先のNo「8」との比較結果は、日付25gの内容とユーザID25hの内容とRCode25iの内容とが不一致である。除外条件25dとして日付除外、特定ユーザID除外とも「適用」となっている。ところが、除外条件25dにないRcode25iの内容が不一致であるので、判定結果25bは、「NG」となっている。
[比較結果の出力処理の全体のフローチャート]
次に、実施例1に係る比較結果の出力処理のフローチャートを、図7〜図9を参照して説明する。図7は、実施例1に係る比較結果の出力処理の全体のフローチャートを示す図である。図8Aおよび図8Bは、実施例1に係る判定除外処理のフローチャートを示す図である。図9は、実施例1に係る結果出力処理のフローチャートを示す図である。
図7に示すように、入力部11は、比較コマンドの入力を受け付ける(ステップS11)。初期化部12は、比較コマンドを実行するために用いられる各種データを初期化する(ステップS12)。初期化部12は、比較コマンドの引数を解析する(ステップS13)。初期化部12は、比較コマンドのオプションを解析する(ステップS14)。
そして、比較部13は、比較コマンドに引数として設定された比較元ファイル21と比較先ファイル22との比較処理を行い(ステップS15)、比較結果を出力する(ステップS16)。比較結果は、比較結果ファイル23に格納される。
そして、判定除外部14は、比較コマンドのオプションに判定除外処理の指定(一例として、「−u」)があるか否かを判定する(ステップS17)。判定除外処理の指定がないと判定した場合には(ステップS17;No)、判定除外部14は、比較結果の出力処理を終了する。
一方、判定除外処理の指定があると判定した場合には(ステップS17;Yes)、判定除外部14は、判定除外処理を実行する(ステップS18)。なお、判定除外処理のフローチャートは、後述する。そして、結果出力部15は、結果出力処理を実行する(ステップS19)。なお、結果出力処理のフローチャートは、後述する。そして、結果出力部15は、比較結果の出力処理を終了する。
[判定除外処理のフローチャート]
図8Aおよび図8Bでは、変数n1は、比較結果ファイル23の行番号として用いられる。変数n2は、判定除外ファイル24の行番号として用いられる。変数Iは、比較結果ファイル23の差異項目23gに含まれるカラム位置へのインデックスとして用いられる。
図8Aおよび図8Bに示すように、判定除外部14は、比較結果ファイル23および判定除外ファイル24を読み込む(ステップS21)。判定除外部14は、比較結果ファイル23のレコード数をLとする(ステップS22)。判定除外部14は、判定除外ファイル24のレコード数をMとする(ステップS23)。
判定除外部14は、比較結果ファイル23の行番号「1」を変数n1に設定する(ステップS24)。
そして、判定除外部14は、比較結果ファイル23のn1番目のレコードを読み込み、読み込んだレコードから比較元行番号23e、比較先行番号23f、および差異項目23gを抽出する(ステップS25)。判定除外部14は、比較元行番号23e、比較先行番号23fの少なくともどちらか一方が−1であるか否かを判定する(ステップS26)。比較元行番号23e、比較先行番号23fの少なくともどちらか一方が−1であると判定した場合には(ステップS26;Yes)、判定除外部14は、比較結果ファイル23の次の行番号の処理を実行すべく、ステップS44に移行する。
比較元行番号23e、比較先行番号23fのどちらも−1でないと判定した場合には(ステップS26;No)、判定除外部14は、抽出した差異項目23gの差異項目数をDとすると(ステップS27)、Dを変数[差異数]に設定する(ステップS28)。判定除外部14は、差異項目23gに含まれるカラム位置への1つ目のインデックス「1」を変数Iに設定する(ステップS29)。
判定除外部14は、比較元ファイル21から、抽出した比較元行番号23eのデータのうち、I番目の差異項目(カラム位置)に該当するデータおよびその項目名を取得する(ステップS30)。判定除外部14は、比較先ファイル22から、抽出した比較先行番号23fのデータのうち、I番目の差異項目(カラム位置)に該当するデータおよびその項目名を取得する(ステップS31)。
判定除外部14は、判定除外ファイル24の行番号「1」を変数n2に設定する(ステップS32)。
判定除外部14は、判定除外ファイル24の、n2番目のレコードから、項目名24bと正規表現24cを抽出する(ステップS33)。判定除外部14は、取得した比較元行番号23eのデータおよび項目名、取得した比較先行番号23fのデータおよび項目名のそれぞれ両方が、判定除外ファイル24から抽出した項目名、正規表現に合致するか否かを判定する(ステップS34、35)。それぞれ両方のデータが抽出した正規表現に合致しないと判定した場合には(ステップS35;No)、判定除外部14は、次の判定除外ファイル24のレコードに進むべく、ステップS42に移行する。
一方、それぞれ両方のデータが抽出した正規表現に合致すると判定した場合には(ステップS35;Yes)、判定除外部14は、変数[差異数]を1減算する(ステップS36)。
判定除外部14は、判定除外ファイル24のn2番目のレコードの除外ルール名24aを抽出し、比較結果ファイル23のn1番目のレコードの除外条件23dの欄に設定する(ステップS37)。一例として、図5Aのs1のように、除外条件23dの欄に除外ルール名24a「日付除外」が設定される。
判定除外部14は、差異項目23gに含まれるカラム位置への次のインデックスを指すべく、変数Iを1加算する(ステップS38)。判定除外部14は、変数Iが差異項目の数Dより大きいか否かを判定する(ステップS39)。変数Iが差異項目の数Dより大きくないと判定した場合には(ステップS39;No)、判定除外部14は、次のカラム位置への処理をすべく、ステップS30に移行する。
一方、判定除外部14は、変数Iが差異項目の数Dより大きいと判定した場合には(ステップS39;Yes)、変数[差異数]が0であるか否かを判定する(ステップS40)。変数[差異数]が0であると判定した場合には(ステップS40;Yes)、判定除外部14は、比較結果ファイル23のn1番目のレコードの判定結果23bの欄に「OK」を設定する(ステップS41)。一例として、図5Aのs2のように、判定結果23bの欄に「OK」が設定される。そして、判定除外部14は、ステップS42に移行する。
一方、変数[差異数]が0でないと判定した場合には(ステップS40;No)、判定除外部14は、判定除外ファイル24の次のレコードを指すべく、ステップS42に移行する。
ステップS42では、判定除外部14は、判定除外ファイル24の次のレコードを指すべく、変数n2を1加算する(ステップS42)。判定除外部14は、変数n2が判定除外ファイル24のレコード数Mより大きいか否かを判定する(ステップS43)。変数n2が判定除外ファイル24のレコード数Mより大きくないと判定した場合(ステップS43;No)、判定除外部14は、判定除外ファイル24の次のレコードの処理をすべく、ステップS33に移行する。
一方、変数n2が判定除外ファイル24のレコード数Mより大きいと判定した場合(ステップS43;Yes)、判定除外部14は、比較結果ファイル23の次のレコードを指すべく、変数n1を1加算する(ステップS44)。判定除外部14は、変数n1が比較結果ファイル23のレコード数Lより大きいか否かを判定する(ステップS45)。変数n1が比較結果ファイル23のレコード数Lより大きくないと判定した場合(ステップS45;No)、判定除外部14は、比較結果ファイル23の次のレコードの処理をすべく、ステップS25に移行する。
一方、変数n1が比較結果ファイル23のレコード数Lより大きいと判定した場合(ステップS45;Yes)、判定除外部14は、判定除外処理を終了する。
[結果出力処理のフローチャート]
図9では、変数nは、比較元ファイル21および比較先ファイル22の行番号として用いられる。変数Fの値は、比較元ファイル21および比較先ファイル22の区別に用いられるフラグである。変数Fが1の場合には、比較元ファイル21を示し、変数Fが2の場合には、比較先ファイル22を示すものとする。
図9に示すように、結果出力部15は、比較結果ファイル23および判定除外ファイル24を読み込む(ステップS51)。結果出力部15は、比較元ファイル21を対象ファイルとし(ステップS52)、変数Fを、比較元ファイル21を示す「1」に設定する(ステップS53)。
結果出力部15は、対象ファイルのレコード数をMとする(ステップS54)。結果出力部15は、判定除外ファイル24内に定義されている除外ルール名24aを抽出し、標題に含まれる除外条件25dに追加する(ステップS55)。ここでいう標題とは、結果出力ファイル25の最上段に表されるタイトルのことをいう。つまり、図6に示す結果出力ファイル25では、No、判定結果、比較結果、特定ユーザID除外および日付除外を含む除外条件、行番号、業務ID、日付、ユーザIDおよびRCodeがそれぞれ標題である。結果出力部15は、除外条件の標題を出力用レコードに追加し、結果出力ファイル25に出力する(ステップS56)。
結果出力部15は、対象ファイルの行番号「1」を変数nに設定する(ステップS57)。結果出力部15は、対象ファイルのn番目のレコードを読み込む(ステップS58)。結果出力部15は、比較結果ファイル23を読み込み、該比較結果ファイル23の対象ファイルに対応する行番号23e、23fの欄に、変数nの値が設定されているレコードがあるか否かを判定する(ステップS59)。
対象ファイルに対応する行番号23e、23fの欄に、変数nの値が設定されているレコードがないと判定した場合には(ステップS59;No)、結果出力部15は、以下の処理を行う。すなわち、結果出力部15は、判定結果25bとして“OK”、比較結果25cとして“match”、除外条件“−”を出力用レコードに設定する(ステップS60)。そして、結果出力部15は、ステップS63に移行する。
一方、対象ファイルに対応する行番号23e、23fの欄に、変数nの値が設定されているレコードがあると判定した場合には(ステップS59;Yes)、結果出力部15は、以下の処理を行う。すなわち、結果出力部15は、比較結果ファイル23の変数nの値が設定されていたレコードの判定結果23b、比較結果23cを抽出し、出力用レコードに設定する(ステップS61)。結果出力部15は、比較結果ファイル23の変数nの値が設定されていたレコードの除外条件23dの欄に設定されている除外ルール名を抽出し、出力用レコードの該当標題箇所に“適用”を設定する(ステップS62)。そして、結果出力部15は、ステップS63に移行する。
ステップS63では、結果出力部15は、対象ファイルのn番目のレコードを、出力用レコードに追加し、結果出力ファイル25に出力する(ステップS63)。結果出力部15は、対象ファイルの次のレコードを指すべく、変数nを1加算する(ステップS64)。結果出力部15は、変数nが対象ファイルのレコード数Mより大きいか否かを判定する(ステップS65)。変数nが対象ファイルのレコード数Mより大きくないと判定した場合(ステップS65;No)、結果出力部15は、対象ファイルの次のレコードの処理をすべく、ステップS58に移行する。
一方、変数nが対象ファイルのレコード数Mより大きいと判定した場合(ステップS65;Yes)、結果出力部15は、変数Fを1加算する(ステップS66)。変数Fが「2」であれば、比較先ファイル22を示す。結果出力部15は、変数Fが2より大きいか否かを判定する(ステップS67)。変数Fが2より大きくない場合には(ステップS67;No)、結果出力部15は、比較先ファイル22を対象ファイルとし(ステップS68)、ステップS54に移行する。
一方、変数Fが2より大きい場合には(ステップS67;Yes)、結果出力部15は、結果出力処理を終了する。
[実施例1の効果]
このようにして、上記実施例1では、情報処理装置1は、比較処理の対象とするデータに含まれる特定の項目について比較方法の指定を受け付ける。そして、情報処理装置1は、前記特定の項目を含む1以上の項目が含まれる第1のデータ及び第2のデータとの間で対応する各項目の値の比較に応じた評価結果を出力する際に、前記特定の項目については、項目の値が一致する場合、項目の値は一致せず前記比較方法により一致が検出された場合のいずれも正常を示す結果を出力するとともに、項目の一致の検出、前記比較方法による一致の検出のいずれがなされたかの別を識別可能に出力する。よって、情報処理装置1は、項目の値が不一致であっても正常とみなしてもよい場合に、判定除外ルールの対象としたどの項目で不一致があったうえで、つまりどの判定除外ルールを適用のもとに判定結果がOKであったかを視認可能な出力を行える。
また、上記実施例1によれば、情報処理装置1は、前記比較方法として、特定の項目の値の一部分についての比較の指定を受け付ける。情報処理装置1は、1つの条件に示される特定の項目の値が該1つの条件に示される部分のみ不一致の場合に、比較の結果が正常であることを示す情報とともに、部分不一致があった項目と対応する該1つの条件を識別可能な情報を出力する。よって、情報処理装置1は、項目の値が部分不一致であっても正常とみなしてもよい場合に、判定除外ルールの対象としたどの項目で部分不一致があったうえで、つまりどの判定除外ルールを適用のもとに判定結果がOKであったかを視認可能な出力を行える。
ところで、実施例1に係る情報処理装置1は、一例として、CSV形式の比較元ファイル21と比較先ファイル22の比較結果を出力するものと説明した。しかしながら、情報処理装置1は、これに限定されず、テキスト形式の比較元ファイル21と比較先ファイル22の比較結果を出力するようにしても良い。そこで、実施例2では、情報処理装置1が、テキスト形式の比較元ファイル21と比較先ファイル22の比較結果を出力する場合について説明する。
[実施例2に係る情報処理装置の構成]
図10は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。なお、図1に示す情報処理装置1と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、判定除外部14を判定除外部31に変更した点にある。実施例1と実施例2とが異なるところは、比較元ファイル21、比較先ファイル22、比較結果ファイル23および判定除外ファイル24をそれぞれ比較元ファイル41、比較先ファイル42、比較結果ファイル43および判定除外ファイル44に変更した点にある。
ここで、比較結果ファイル43のデータ構造を、図11を参照して説明する。図11は、実施例2に係る比較結果ファイルのデータ構造の一例を示す図である。図11に示すように、比較結果ファイル43は、比較元と比較先に差異がある対応レコードの情報を記憶する。比較結果ファイル43は、見出し43a、判定結果43b、比較結果43c、除外条件43d、比較元行番号43eおよび比較先行番号43fを対応付けて記憶する。見出し43aは、図2で示した比較結果ファイル23の見出し23aと同様であるので、その説明を省略する。判定結果43bは、図2で示した比較結果ファイル23の判定結果43bと同様であるので、その説明を省略する。比較結果43cは、図2で示した比較結果ファイル23の比較結果23cと同様であるので、その説明を省略する。除外条件43dは、図2で示した比較結果ファイル23の除外条件23dと同様であるので、その説明を省略する。比較元行番号43eは、図2で示した比較結果ファイル23の比較元行番号23eと同様であるので、その説明を省略する。比較先行番号43fは、図2で示した比較結果ファイル23の比較先行番号23fと同様であるので、その説明を省略する。
ここで、比較部13の入力データと出力データについて、図12を参照して説明する。図12は、実施例2に係る比較部の入力データと出力データの一例を示す図である。図12に示すように、比較部13の入力データは、テキスト形式の比較元ファイル41およびテキスト形式の比較先ファイル42である。ここでは、「x.txt」を比較元ファイル41とし、「y.txt」を比較先ファイル42とする。比較元ファイル41および比較先ファイル42のそれぞれの1行目には、ヘッダ情報として項目名が設定されている。比較部13の出力データは、比較結果ファイル43である。
比較部13は、比較元として「x.txt」と比較先として「y.txt」を比較し、比較結果を取得する。ここでは、比較部13は、比較元の比較結果と比較先の比較結果を取得する。一例として、比較元の1行目のデータ“AAAA”は、比較先の1行目にある。比較元の2行目のデータ“BBBB”は、比較先に存在しない。すなわち、“BBBB”は、比較先で削除されている。比較元の4行目のデータ“Day=11”は、比較先の3行目のデータ“Day=12”に変更されている。比較元の5行目のデータ“GGGG”は、比較先の4行目のデータ“EEEE”に変更されている。比較先の5行目のデータ“FFFF”は、比較元に存在しない。すなわち、“FFFF”は、比較先で追加されている。
このような比較結果の下、比較部13は、2つのファイルの差異を比較結果ファイル43に格納する。ここでは、一例として、データが“BBBB”である場合、該データが比較先に存在しないので、差異がある。見出し43aとして「差異1」、判定結果43bとして「NG」、比較結果43cとして「Unmatch」が格納される。除外条件43dとして「−」、比較元行番号43eとして「2」、比較先行番号43fとして「−1」が格納される。データが“Day=11”である場合、該データが比較先では“Day=12”に変更されているので、差異がある。見出し43aとして「差異2」、判定結果43bとして「NG」、比較結果43cとして「Unmatch」が格納される。除外条件43dとして「−」、比較元行番号43eとして「4」、比較先行番号43fとして「3」が格納される。データが“GGGG”である場合、該データが比較先では“EEEE”に変更されているので、差異がある。見出し43aとして「差異3」、判定結果43bとして「NG」、比較結果43cとして「Unmatch」が格納される。除外条件43dとして「−」、比較元行番号43eとして「5」、比較先行番号43fとして「4」が格納される。データ“FFFF”は、比較先で追加されているので、差異がある。見出し43aとして「差異4」、判定結果43bとして「NG」、比較結果43cとして「Unmatch」が格納される。除外条件43dとして「−」、比較元行番号43eとして「−1」、比較先行番号43fとして「5」が格納される。
図10に戻って、判定除外部31は、比較コマンドのオプションに判定除外処理の指定がある場合、比較結果ファイル43および判定除外ファイル44を用いて、判定除外処理を行う。
ここで、判定除外ファイル44のデータ構造を、図13を参照して説明する。図13は、実施例2に係る判定除外ファイルのデータ構造の一例を示す図である。図13に示すように、判定除外ファイル44は、除外ルール名44aおよび正規表現44bを対応付けて記憶する。除外ルール名44aは、図4で示した判定除外ファイル24の除外ルール名24aと同様であるので、その説明を省略する。正規表現44bは、図4で示した判定除外ファイル24の正規表現24cと同様であるので、その説明を省略する。
一例として、除外ルール名44aが「日付除外」である場合、正規表現44bとして「^Day=.*」と記憶している。実施例1で説明したように「*」はワイルドカードであって、いずれの文字列を含んでも良いことを意味するので、すなわち、日付の値、すなわち「Day=」以降の値がそれぞれ何であっても、日付は判定対象外となる。換言すれば、日付の値が不一致であっても一致とみなしてよいことが設定されている。なお、図13では、除外ルールが1個のみ記憶されているが、複数の除外ルールが記憶されていても良い。
図10に戻って、例えば、判定除外部31は、比較部13により生成された比較結果ファイル43および比較コマンドで指定された判定除外ファイル44を読み込む。判定除外部31は、比較結果ファイル43のレコードを順次選択し、選択したレコードから比較元行番号43eおよび比較先行番号43fを抽出する。判定除外部31は、比較元行番号43eおよび比較先行番号43fのいずれか一方が「−1」であれば、一方の対応する行が存在しないので、判定結果43bを「NG」のままとする。
判定除外部31は、比較元行番号43eおよび比較先行番号43fのいずれも「−1」でなければ、比較元ファイル41の比較元行番号43eのデータを取得する。判定除外部31は、比較先ファイル42の比較先行番号43fのデータを取得する。判定除外部31は、比較元の取得データおよび比較先の取得データが、どちらとも判定除外ファイル44の正規表現44bに合致するか否かを判定する。判定除外部31は、どちらとも合致すれば、比較結果ファイル43の選択レコードの除外条件43dに、該当する除外ルール名44aを設定する。加えて、判定除外部31は、比較結果ファイル43の選択レコードの判定結果43bに判定が一致することを示す「OK」を設定する。
判定除外部31は、どちらか一方でも合致していなければ、比較結果ファイル43の選択レコードの除外条件43dに、該当する除外ルール名44aを設定しない。加えて、判定除外部31は、判定結果43bを「NG」のままとする。
[判定除外処理のフローチャート]
図14では、変数n1は、比較結果ファイル43の行番号として用いられる。変数n2は、判定除外ファイル44の行番号として用いられる。
図14に示すように、判定除外部31は、比較結果ファイル43および判定除外ファイル44を読み込む(ステップS71)。判定除外部31は、比較結果ファイル43のレコード数をLとする(ステップS72)。判定除外部31は、判定除外ファイル43のレコード数をMとする(ステップS73)。
判定除外部31は、比較結果ファイル43の行番号「1」を変数n1に設定する(ステップS74)。
そして、判定除外部31は、比較結果ファイル43のn1番目のレコードを読み込み、読み込んだレコードから比較元行番号43eおよび比較先行番号43fを抽出する(ステップS75)。判定除外部31は、比較元行番号43e、比較先行番号43fの少なくともどちらか一方が−1であるか否かを判定する(ステップS76)。比較元行番号43e、比較先行番号43fの少なくともどちらか一方が−1であると判定した場合には(ステップS76;Yes)、判定除外部31は、比較結果ファイル43の次の行番号の処理を実行すべく、ステップS87に移行する。
比較元行番号43e、比較先行番号43fのどちらも−1でないと判定した場合には(ステップS76;No)、判定除外部31は、比較元ファイル41から、抽出した比較元行番号43eのデータを取得する(ステップS77)。判定除外部31は、比較先ファイル42から、抽出した比較先行番号43fのデータを取得する(ステップS78)。
判定除外部31は、判定除外ファイル44の行番号「1」を変数n2に設定する(ステップS79)。
判定除外部31は、判定除外ファイル44の、n2番目のレコードから、正規表現44bを抽出する(ステップS80)。判定除外部31は、取得した比較元行番号43eのデータ、取得した比較先行番号43fのデータの両方が、判定除外ファイル44から抽出した正規表現に合致するか否かを判定する(ステップS81、82)。両方のデータが抽出した正規表現に合致しないと判定した場合には(ステップS82;No)、判定除外部31は、判定除外ファイル44の次のレコードを指すべく、ステップS85に移行する。
一方、両方のデータが抽出した正規表現に合致すると判定した場合には(ステップS82;Yes)、判定除外部31は、判定除外ファイル44のn2番目のレコードの除外ルール名44aを抽出し、比較結果ファイル43のn1番目のレコードの除外条件43dの欄に設定する(ステップS83)。一例として、図11の該当する除外条件43dの欄に除外ルール名44aが設定される。
加えて、判定除外部31は、比較結果ファイル43のn1番目のレコードの判定結果43bの欄に「OK」を設定する(ステップS84)。一例として、図11の該当する判定結果43bの欄に「OK」が設定される。そして、判定除外部31は、ステップS85に移行する。
ステップS85では、判定除外部31は、判定除外ファイル44の次のレコードを指すべく、変数n2を1加算する(ステップS85)。判定除外部31は、変数n2が判定除外ファイル44のレコード数Mより大きいか否かを判定する(ステップS86)。変数n2が判定除外ファイル44のレコード数Mより大きくないと判定した場合(ステップS86;No)、判定除外部31は、判定除外ファイル44の次のレコードの処理をすべく、ステップS80に移行する。
一方、変数n2が判定除外ファイル44のレコード数Mより大きいと判定した場合(ステップS86;Yes)、判定除外部31は、比較結果ファイル43の次のレコードを指すべく、変数n1を1加算する(ステップS87)。判定除外部31は、変数n1が比較結果ファイル43のレコード数Lより大きいか否かを判定する(ステップS88)。変数n1が比較結果ファイル43のレコード数Lより大きくないと判定した場合(ステップS88;No)、判定除外部31は、比較結果ファイル43の次のレコードの処理をすべく、ステップS75に移行する。
一方、変数n1が比較結果ファイル43のレコード数Lより大きいと判定した場合(ステップS88;Yes)、判定除外部31は、判定除外処理を終了する。
[実施例2の効果]
このようにして、上記実施例2では、情報処理装置1は、1つのレコードに単数の項目が含まれるテキスト形式の比較元ファイル41の第1のデータと比較先ファイル42の第2のデータとの指定を受け付ける。加えて、情報処理装置1は、特定の項目について比較方法の指定を受け付ける。情報処理装置1は、第1のデータの所定のレコードと前記第2のデータの所定のレコードとの比較を行う。情報処理装置1は、特定の項目については、項目の値が一致する場合、項目の値は一致せず前記比較方法により一致が検出された場合のいずれも正常を示す結果を出力するとともに、項目の一致の検出、前記比較方法による一致の検出のいずれがなされたかの別を識別可能に出力する。よって、情報処理装置1は、テキスト形式の比較元ファイル41およびテキスト形式の比較先ファイル42であっても、項目の値が不一致であっても正常とみなしてもよい場合に、比較結果を効率的に出力できる。
[その他]
なお、実施例1では、情報処理装置1が、一例として、CSV形式の比較元ファイル21と比較先ファイル22の比較結果を出力する場合を説明した。実施例2では、情報処理装置1が、一例として、テキスト形式の比較元ファイル41と比較先ファイル42の比較結果を出力する場合を説明した。しかしながら、情報処理装置1は、これに限定されず、レイアウト定義に基づくデータ構造を1レコードとする、複数レコードの比較元ファイルと比較先ファイルの比較結果を出力する場合であっても良い。ここで、レイアウト定義とは、データをバイト単位等の固定長の項目として区切り、それぞれの項目に項目名や属性を規定する定義情報である。CSV形式の場合には、1行名に項目名が記述されているが、レイアウト形式の場合には、固定長のデータの項目名などをレイアウト定義から取得するようにすれば良い。したがって、情報処理装置1は、レイアウト形式の場合であっても、CSV形式と同様の処理を行えば、比較結果を出力することができる。これにより、情報処理装置1は、レイアウト形式の比較元ファイルおよびレイアウト形式の比較先ファイルであっても、項目の値が不一致であっても正常とみなしてもよい場合に、どの判定除外ルールに該当する不一致があったうえで、つまりどの判定除外ルールを適用のもとに判定結果がOKであったかわかりやすい出力を行える。
また、実施例1、2では、比較部13が比較元ファイル21(41)と比較先ファイル22(42)を比較し、比較結果ファイル23(43)を作成する。継続して、判定除外部14(31)および結果出力部15が、比較結果ファイル23(43)および判定除外ファイル24(44)を用いて、結果出力ファイル25を作成する。しかしながら、これに限定されず、判定除外部14(31)および結果出力部15が、過去に作成された比較結果ファイル23(43)および判定除外ファイル24(44)を用いて、結果出力ファイル25を作成するものとしても良い。これにより、情報処理装置1は、比較処理と判定除外処理の実行のタイミングを変えることができ、汎用性のある実行パターンを実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、初期化部12と比較部13とを1個の部として統合しても良い。また、比較元ファイル21、比較先ファイル22、比較結果ファイル23、判定除外ファイル24および結果出力ファイル25を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した情報処理装置1と同様の機能を実現する比較結果出力プログラムを実行するコンピュータの一例を説明する。図15は、比較結果出力プログラムを実行するコンピュータの一例を示す図である。
図15に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、比較結果出力プログラム205aおよび比較結果出力関連情報205bを記憶する。
CPU203は、比較結果出力プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置1の各機能部に対応する。比較結果出力関連情報205bは、比較元ファイル21、比較先ファイル22、比較結果ファイル23、判定除外ファイル24および結果出力ファイル25に対応する。そして、例えばリムーバブルディスク211が、比較結果出力プログラム205aなどの各情報を記憶する。
なお、比較結果出力プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから比較結果出力プログラム205aを読み出して実行するようにしても良い。