データチェック装置
【目的】 データレコードのチェックを行なう際、利用者に負担をかけることなく、データレコード中の特定の属性についてのみ属性チェックを行なう。
【構成】 レコード構造解析部12は基準データレコードの構造を示すレコード構造定義情報2に基づいて基準データレコード中の各項目の項目名, 属性,開始位置,項目長を示すレコード構造定義展開情報を作成する。パラメータ解析部15はチェック動作指示パラメータ記述3とレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求める。データ読み込み部17はチェック対象レコード格納ファイル4からデータレコードを読み込み、チェック対象部分取得部18は、チェック対象データレコードの内容の内、パラメータ解析部15が求めたレコード内位置の内容を取得し、属性チェック部19はチェック対象部分取得部18が取得した内容について属性チェックを行なう。
【構成】 レコード構造解析部12は基準データレコードの構造を示すレコード構造定義情報2に基づいて基準データレコード中の各項目の項目名, 属性,開始位置,項目長を示すレコード構造定義展開情報を作成する。パラメータ解析部15はチェック動作指示パラメータ記述3とレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求める。データ読み込み部17はチェック対象レコード格納ファイル4からデータレコードを読み込み、チェック対象部分取得部18は、チェック対象データレコードの内容の内、パラメータ解析部15が求めたレコード内位置の内容を取得し、属性チェック部19はチェック対象部分取得部18が取得した内容について属性チェックを行なう。
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、或るシステムで作成されたデータレコードに、そのデータレコードを他のシステムで利用した場合、属性エラーによりデータ例外を発生させる部分が存在するか否かをチェックするデータチェック装置に関する。
【0002】
【従来の技術】或るシステムAで作成されたデータレコードを他のシステムBで利用する場合、システムBで認識している基準データレコードの構造(データレコード中の各項目の属性,項目長等)に基づいて、システムAで作成されたチェック対象データレコードに、基準データレコードに対して属性エラーとなる部分が存在するか否かを事前にチェックしておくことが必要になる。
【0003】チェック対象データレコード中に、基準データレコードに対して属性エラーとなる部分が存在するか否かをチェックする技術としては、従来、基準データレコードの各項目の項目属性,項目長を含む項目定義情報を外部記憶装置に格納しておき、データレコードのチェック時、チェック対象データレコードを読み込むと共に項目定義情報を主記憶装置上に展開し、この項目定義情報に基づいて読み込んだチェック対象データレコードに属性エラーとなる部分が存在するか否かをチェックする技術(例えば、特開昭59−148921号公報)が知られており、この技術を利用することにより、システムAで作成されたデータレコードが、基準データレコードに対して属性エラーとなる部分を有しているか否かをチェックすることができる。即ち、システムBが認識している基準データレコードの各項目の項目属性,項目長を項目定義情報として外部記憶装置に格納しておけば良い。
【0004】
【発明が解決しようとする課題】ところで、データレコードの属性チェックを行なう場合、特定の属性についてのみ、属性チェックを行なえば十分な場合がある。例えば、システムBのデータレコード処理に関する機能のテストを、システムBで作成したデータレコードが存在しないことからシステムAで既に作成されているデータレコードを利用して行なう場合であって、システムBでは、上記データレコードには、属性が数字の項目と属性が英数字の項目の2種類しか含まれていないと認識している場合は、システムAで作成されたデータレコード(このデータレコード中の項目は、数字,英数字,ゼロサプレスの内の何れかの属性であることが保証されているとする)中の、システムBで属性が数字であると認識している部分についてのみ属性チェックを行なえば十分である。
【0005】即ち、システムBで属性が数字であると認識している部分を、システムAでは属性が英数字,ゼロサプレスと認識している場合は、システムAで作成されたデータレコードの上記部分には、数字以外のコードが格納されていることがあり、そのようなデータレコードを使用してシステムBのテストを行なうと、データ例外の発生によりテストが中断してしまうが、システムBで属性が英数字であると認識している部分を、システムAでは属性が数字,ゼロサプレスであると認識していてもデータ例外は発生しないからである。
【0006】このように、データレコードの特定の属性についてのみ、属性チェックを行なえば十分な場合であっても、上記した従来の技術は、基準データレコードの全ての項目の項目属性,項目長を外部記憶装置に格納するようにしているので、全ての項目について属性チェックが行なわれてしまう。即ち、不必要な項目についても属性チェックが行なわれるため、無駄な処理時間が多くなるという問題がある。また、このような問題をなくすため、属性チェックを行なうことが必要な項目の項目属性,項目開始位置,項目長のみを外部記憶装置に格納することも考えられるが、この場合は、利用者が、チェックを行なうことが必要になる項目の属性,開始位置,項目長をレコード構造定義情報を解析することにより取得しなければならないため、利用者に負担がかかるという問題があった。
【0007】そこで、本発明の目的は、利用者に負担をかけることなく、データレコード中の特定の属性についてのみ属性チェックを行なうことができるデータチェック装置を提供することにある。
【0008】
【課題を解決するための手段】本発明は上記目的を達成するため、基準データレコードの構造を示すレコード構造定義情報に基づいて前記基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成するレコード構造解析部と、チェック動作指定パラメータ記述で指定されたチェック属性と前記レコード構造解析部で作成したレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求めるパラメータ解析部と、前記チェック対象データレコードが格納されているファイルからデータレコードを1レコードずつ読み込むデータ読み込み部と、該データ読み込み部が読み込んだデータレコードの内容の内、前記パラメータ解析部が求めたレコード内位置の内容を取得するチェック対象部分取得部と、該チェック対象部分取得部が取得した内容に対して属性チェックを行なう属性チェック部とを備えたものである。
【0009】また、属性エラーがあったチェック対象データレコード,属性エラー部分に対応する基準データレコードの項目名,属性エラー部分の内容を利用者に認識させるという目的を達成するため、前記属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する前記基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する結果出力制御部を備えたものである。
【0010】また、本発明は、或るシステムで作成されたデータレコードに、それを他のシステムで利用した場合、属性エラーによりデータ例外を発生させる部分が含まれていても、上記或るシステムで作成されたデータレコードから上記他のシステムでのテスト等に於いて利用可能なデータレコードを作成できるようにするという目的を達成するため、前記結果出力制御部は、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、前記出力データファイルに出力するものである。
【0011】
【作用】レコード構造解析部は、基準データレコードの構造を示すレコード構造定義情報に基づいて基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成し、パラメータ解析部は、チェック動作指定パラメータ記述で指定されたチェック属性とレコード構造解析部が作成したレコード構造定義展開情報とに基づいてチェック対象データレコード中のチェックを行なうレコード内位置を求める。
【0012】データレコードのチェック時、データ読み込み部がファイルからチェック対象データレコードを1レコードずつ読み込む。
【0013】データ読み込み部がチェック対象データレコードを1つ読み込むと、チェック対象部分取得部が、そのデータレコードの内容の内、パラメータ解析部が求めたレコード内位置の内容を取得する。
【0014】チェック対象部分取得部がチェック対象とする項目の内容を取得すると、属性チェック部が、その項目の内容に対して属性チェックを行なう。また、結果出力制御部は、属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する。
【0015】また、他の構成に於いては、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、出力データファイルに出力する。
【0016】
【実施例】次に本発明の実施例について図面を参照して詳細に説明する。
【0017】図1は本発明の実施例のブロック図であり、データチェック装置1と、レコード構造定義情報2と、チェック動作指定パラメータ記述3と、チェック対象レコード格納ファイル4と、プリンタ等の出力装置5と、出力データファイル6と、表示装置7と、入力装置8とから構成されている。
【0018】データチェック装置1は、レコード構造入力部11と、レコード構造解析部12と、レコード構造定義展開テーブル13と、パラメータ入力部14と、パラメータ解析部15と、パラメータ展開テーブル16と、データ読み込み部17と、チェック対象部分取得部18と、属性チェック部19と、結果出力制御部20とから構成されている。
【0019】レコード構造入力部11にはレコード構造定義情報2が入力される。
【0020】レコード構造定義情報2は、チェック対象データレコードの属性チェックを行なう際に基準とする基準データレコードの構造を示す情報であり、COBOLに於けるCOPY原文等がこれに相当する。図2はレコード構造定義情報2の内容例を示した図であり、この例は、データレコードがPKEY,店番,顧客番号,カナ顧客名,電話番号,預金残高の項目から構成され、店番,顧客番号,預金残高の項目の属性が数字で、カナ顧客名,電話番号の項目の属性が英数字であることを示している。また、この例は、基本項目である店番,顧客番号,カナ顧客名,電話番号,預金残高の項目長がそれぞれ3,8,20,12,11であることを示し、PKEYが店番,顧客番号の集団項目になっていることを示している。
【0021】レコード構造解析部12は、レコード構造入力部11が入力したレコード構造定義情報2を解析してレコード構造定義展開情報を生成し、それをレコード構造定義展開テーブル13に展開する機能を有する。レコード構造定義展開情報は、レコード構造定義情報2によって構造が定義されている基準データレコードの各項目の項目名,属性,開始位置,項目長を示すものであり、図3に示すように、1つの項目について情報が、レコード構造定義展開テーブル13の1つのテーブル番号に対応する領域に格納される。
【0022】パラメータ入力部14にはチェック動作指定パラメータ記述3が入力される。
【0023】チェック動作指定パラメータ記述3には、チェック対象属性や、出力装置5,出力データファイル6にどのような情報を出力するか等が記述される。図4はチェック動作指定パラメータ記述3の内容例を示した図である。
【0024】図4の例は、チェック対象にする属性を数字にし、チェック対象データレコード中に属性エラーがあった場合は、概要情報(先頭のデータレコードから数えて何番目のデータレコードであるのかを示す相対番号,属性エラーがあった部分に対応する基準データレコードの項目名,属性エラーがあった部分の内容)を出力すると共に、データレコード中の属性エラーのあった部分の内容を初期化(オール0)にして、そのデータレコードを出力することを指示している。尚、図4の例は、データレコード中の属性エラーのあった部分の内容を初期化した後、そのデータレコードを出力することを指示しているが、属性エラーのあった部分の内容を初期化する必要がない場合には、図4中のCLEAR文を削除すれば良い。また、図4の例は、属性エラーのあった部分を含むデータレコードのみを出力することを指示しているが、チェックしたデータレコードを全て出力する場合には、図4中のSELECT文を削除すれば良い。更に、概要情報を出力する必要がない場合は、図4中の第1番目の文〜第3番目の文を削除すれば良い。
【0025】パラメータ解析部15は、パラメータ入力部14が入力したチェック動作指定パラメータ記述3とレコード構造定義展開テーブル13に展開されているレコード構造定義展開情報とに基づいてチェック動作パラメータ展開情報を生成し、それをパラメータ展開テーブル16に展開する機能を有する。
【0026】チェック動作パラメータ展開情報は、レコード構造定義情報2で構造が定義されている基準データレコードの項目の内の、属性がチェック動作指定パラメータ記述3によって指定されているチェック属性と一致している項目それぞれについて、その項目についての情報が格納されているレコード構造定義展開テーブル13中の領域を示すテーブル番号と、その項目に対する比較対象とを有している。また、チェック動作パラメータ展開情報は、属性チェック部19,結果出力制御部20にどのような動作を行なわせるかを示す動作フラグ及び概要情報を出力するか否かを示す概要情報フラグも含んでいる。図5はチェック動作パラメータ展開情報をパラメータ展開テーブル16に展開した時のパラメータ展開テーブル16の内容を示した図である。
【0027】データ読み込み部17は、チェック対象とするデータレコードが格納されているチェック対象レコード格納ファイル4からデータレコードを1レコードずつ読み込む機能を有する。
【0028】チェック対象部分取得部18は、データ読み込み部17が読み込んだデータレコードの内容の内、チェック対象とする部分の内容を取得する機能を有する。
【0029】属性チェック部19は、チェック対象部分取得部18が取得した内容に対して、パラメータ展開テーブル16に格納されている比較対象に従ったチェックを行なう。
【0030】結果出力制御部20は、パラメータ展開テーブル16に格納されている概要情報フラグ,動作フラグの内容に従って、チェック結果等を出力する機能を有する。
【0031】次に、本実施例の動作を説明する。
【0032】今、例えば、システムBのデータレコード処理に関する機能のテストを、システムBで作成したデータレコードが存在しないことからシステムAで既に作成されているデータレコードを利用して行なうことができるか否かを調べるために、データチェック装置1を用いてシステムAで作成されたデータレコードの属性チェックを行なう場合を考えてみる。
【0033】この場合、オペレータは、先ず、システムBで認識している基準データレコードの構造を示すレコード構造定義情報2をレコード構造入力部11に入力する。
【0034】レコード構造解析部12は、レコード構造入力部11にレコード構造定義情報2が入力されると、図6の流れ図に示すように、入力されたレコード構造定義情報2中の文を1つ読み込み (ステップS1)、その文の構文解析を行なう (ステップS3)。
【0035】そして、読み込んだ文に構文エラーがある場合 (ステップS4がYES)は、表示装置7にエラー表示を行なった後 (ステップS6)、その処理を終了する。また、構文エラーがない場合 (ステップS4がNO)は、読み込んだ文によって定義されている項目についてのレコード構造定義展開情報を生成してそれをレコード構造定義展開テーブル13に展開する (ステップS5)。
【0036】このステップS5の処理を詳細に説明すると、次のようになる。即ち、読み込んだ文が基本項目を定義するものである場合は、その文が定義している項目の項目名,属性,開始位置及び項目長から構成されるレコード構造定義展開情報を生成し、生成したレコード構造定義展開情報をレコード構造定義展開テーブル13中の1つのテーブル番号に対応する領域に展開する。ここで、項目の開始位置は、読み込んだ文が最初の項目についてのものである場合は「0」にし、そうでない場合は、レコード構造定義展開テーブル13に前回展開したレコード構造定義展開情報中の、項目の開始位置と項目長とを加算した値にする。
【0037】また、読み込んだ文が集団項目を定義するものである場合は、その集団項目の項目長は、集団項目中の全ての項目の項目長が判らないと、求めることができないので、集団項目を定義する文を読み込んだ時点に於いては、その集団項目のレコード構造定義展開情報の内、項目名,属性(必ず英数字Xとする),開始位置のみ生成してそれらをレコード構造定義展開テーブル13中の1つのテーブル番号に対応する領域に展開しておき、項目長は、その集団項目に含まれている項目の項目長が全て判った時点に於いて、それらを全て加算することにより求め、レコード構造定義展開テーブル13の上記領域に展開する。
【0038】その後、レコード構造解析部12は、レコード構造定義情報2中の次の文を1つ読み込み (ステップS1)、その文について前述したと同様の処理を行なう。レコード構造解析部12は、上述した処理をレコード構造定義情報2中の全ての文について行なうと (ステップS2がYES)と、表示装置7に正常終了表示を行なった後 (ステップS7)、その処理を終了する。
【0039】従って、今、例えば、レコード構造定義情報2の内容が図2に示すものであるとすると、次のような処理が行なわれることになる。
【0040】レコード構造解析部12は、レコード構造定義情報2の先頭の文「02 PKEY.」を読み込むと (ステップS1)、構文解析を行なう (ステップS3)。この文の構文は正しいので、ステップS4の判断結果はNOとなり、ステップS5の処理が行なわれる。
【0041】この文は集団項目を定義するものであるので、レコード構造解析部12は、図3に示すように、項目名「PKEY」,属性「X」,開始位置「0」をレコード構造定義展開テーブル13のテーブル番号1の領域に格納する (ステップS5)。
【0042】次いで、レコード構造解析部12は、第2番目の文「03 店番 PIC 9(3).」を読み込む (ステップS1)。第2番目の文は、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、項目名「店番」,属性「9」,開始位置「0」,項目長「3」をレコード構造定義展開テーブル13のテーブル番号2の領域に展開する (ステップS5)。
【0043】その後、レコード構造解析部12は第3番目の文「03 顧客番号 PIC9(8).」を読み込む (ステップS1)。第3番目の文も、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、レコード構造定義展開テーブル13のテーブル番号3の領域に、項目名「顧客番号」,属性「9」,開始位置「3」,項目長「8」を展開する (ステップS5)。
【0044】次いで、レコード構造解析部12は、第4番目の文「02 カナ顧客名 PIC X(20).」を読み込む (ステップS1)。第4番目の文も、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、レコード構造定義展開テーブル13のテーブル番号4の領域に、項目名「カナ顧客名」,属性「X」,開始位置「11」,項目長「20」を設定し、また、第4番目の文を読み込んだ時点に於いて、集団項目を定義する第1番目の文が閉じたことが判るので、レコード構造解析部12は、第2番目,第3番目の文によって示される項目の項目長「3」,「8」を加算し、加算結果「11」を集団項目の項目長としてレコード構造定義展開テーブル13のテーブル番号1の領域に展開する(ステップS5)。
【0045】その後、レコード構造解析部12は、レコード構造定義情報2中の第5番目,第6番目の文を順次読み込み、前述した処理を行なう。そして、第6番目の文「02 預金残高 PIC 9(11).」についての処理が終了すると (ステップS2がYES)、表示装置7に正常終了表示を行なった後 (ステップS7)、その処理を終了する。
【0046】オペレータは、表示装置7に正常終了表示が行なわれると、次にチェック動作指定パラメータ記述3をパラメータ入力部14に入力する。尚、表示装置7にエラー表示が行なわれた場合は、オペレータは、レコード構造定義情報2中の誤りを修正し、修正後のレコード構造定義情報2を再度入力する。
【0047】パラメータ解析部15は、パラメータ入力部14に、チェック動作指定パラメータ記述3が入力されると、図7の流れ図に示すように、チェック動作指定パラメータ記述3中の文を1つ読み込み (ステップS11)、読み込んだ文の構文を解析する (ステップS13)。
【0048】そして、読み込んだ文に構文エラーがある場合 (ステップS14がYES)は、表示装置7にエラー表示を行なった後 (ステップS15)、その処理を終了する。また、読み込んだ文に構文エラーがない場合 (ステップS14がNO)は、チェック動作指定パラメータ記述3中の次の文を読み込み (ステップS11)、前述したと同様の処理を行なう。
【0049】そして、チェック動作指定パラメータ記述3中の全ての文について前述した処理を行なうと、パラメータ解析部15は、読み込んだチェック動作指定パラメータ記述3とレコード構造定義展開テーブル13の内容とに基づいてチェック動作指定パラメータ展開情報を生成してそれをパラメータ展開テーブル16に展開し(ステップS16)、その後、表示装置7に正常終了表示を行なう (ステップS17)。
【0050】図8は、図7のステップS16の処理の詳細を示した流れ図であり、同図を参照してステップS16の処理を説明すると次のようになる。
【0051】先ず、パラメータ解析部15は、レコード構造定義展開テーブル13を参照し、チェック動作指定パラメータ記述3によって指定されているチェック属性と同じ属性が格納されているレコード構造定義展開テーブル13の領域のテーブル番号を全て取得し、取得したテーブル番号をパラメータ展開テーブル16に設定する (ステップS21)。
【0052】次いで、パラメータ解析部15は、パラメータ展開テーブル16に比較対象を設定する。例えば、チェック対象とする項目の属性として数字が指定されている場合は、比較対象として不正十進を設定する (ステップS22)。
【0053】その後、パラメータ解析部15は、チェック動作指定パラメータ記述3中に概要情報の出力が指定されているか否かを判断し、概要情報の出力が指定されている場合は概要情報フラグに「1」を設定し、指定されていない場合は「0」を設定する (ステップS23)。
【0054】更に、パラメータ解析部15は、チェック動作指定パラメータ記述3中のCLEAR文,SELECT文の有無に基づいて動作フラグを設定する (ステップS24)。即ち、CLEAR文,SELECT文が両方とも存在する場合は、動作フラグとしてCSを設定し、CLEAR文のみが存在する場合はCを設定し、SELECT文のみが存在する場合はSを設定し、両方とも存在しない場合は「0」を設定する。
【0055】従って、今、例えば、チェック動作指定パラメータ記述3の内容が図4に示すものであり、レコード構造定義展開テーブル13の内容が図3に示すものであるる場合、以下の処理が行なわれることになる。
【0056】図4に示したチェック動作指定パラメータ記述3は、第5番目の文「IF:DATA−ERR」によって、チェック対象の属性を数字にすることを指定しているので、パラメータ解析部15は、図3に示すレコード構造定義展開テーブル13を参照し、数字を示す属性「9」が格納されている領域のテーブル番号「2」,「3」,「6」を、図5に示すように、パラメータ展開テーブル16に設定する (ステップS21)。
【0057】次いで、パラメータ解析部15は、第5番目の文「IF: DATA−ERR」によって、チェック対象の属性を数字にすることを指定しているので、図5R>5に示すように、比較対象として不正十進(NUME)を設定する (ステップS22)。
【0058】その後、パラメータ解析部15は、第1番目の文〜第3番目の文によって概要情報の出力が指定されているので、図5に示すように、概要情報フラグに「1」を設定する (ステップS23)。
【0059】更に、パラメータ解析部15は、第6番目,第7番目にCLEAR文,SELECT文が存在することから、図5に示すように、動作フラグとして「CS」を設定する。
【0060】オペレータは、チェック動作指定パラメータ記述3を入力した後、表示装置7に正常終了表示が行なわれると、入力装置8を用いてデータ読み込み部17に対して、システムAで作成されたチェック対象データレコードが格納されているチェック対象レコード格納ファイル4の読み込みを指示する。尚、表示装置7にエラー表示が行なわれた場合は、オペレータは、チェック動作指定パラメータ記述3中の誤りを修正し、修正後のチェック動作指定パラメータ記述3を再度入力する。
【0061】データ読み込み部17は、データレコードの読み込みが指示されると、図9の流れ図に示すように、チェック対象レコード格納ファイル4からデータレコードを1つ読み込み (ステップS31)、それをチェック対象部分取得部18に渡す(ステップS33)。その後、データ読み込み部17は、待ち状態となり、チェック対象部分取得部18から次のデータレコードの読み込みが要求されるのを待つ (ステップS34)。
【0062】チェック対象部分取得部18は、データ読み込み部17からチェック対象データレコードが渡されると、図10の流れ図に示すように、送られてきたデータレコードと、レコード構造定義展開テーブル13の内容と、パラメータ展開テーブル16の内容とに基づいて、送られてきたデータレコードの内、基準データレコード中の、チェック動作指定パラメータ記述3によって指定されたチェック対象の属性の項目部分と対応する部分の内容を取得する (ステップS41)。
【0063】このステップS41の処理を詳細に説明すると、チェック対象部分取得部18は、先ず、パラメータ展開テーブル16に格納されているテーブル番号を取得する。例えば、パラメータ展開テーブル16の内容が図5に示すものであるとすると、チェック対象部分取得部18は、テーブル番号「2」,「3」,「6」を取得することになる。
【0064】次に、チェック対象部分取得部18は、取得したテーブル番号「2」,「3」,「6」に基づいてレコード構造定義展開テーブル13を参照し、上記テーブル番号の領域に格納されている項目名,開始位置,項目長を取得する。例えば、レコード構造定義展開テーブル13の内容が図3に示すものであるとすると、チェック対象部分取得部18は、テーブル番号「2」の領域に展開されている項目名「店番」,開始位置「0」,項目長「3」と、テーブル番号「3」の領域に展開されている項目名「顧客番号」,開始位置「3」,項目長「8」と、テーブル番号「6」の領域に展開されている項目名「預金残高」,開始位置「43」,項目長「11」とを取得することになる。
【0065】その後、チェック対象部分取得部18は、データ読み込み部17から渡されたチェック対象データレコードの内の、上記取得した項目の開始位置,項目長によって示される部分の内容を取得することにより、チェック対象部分の内容を取得する。
【0066】ステップS41でチェック対象部分の内容を取得すると、チェック対象部分取得部18は、取得したチェック対象部分の内容,チェック対象部分に対応する基準データレコードに於ける項目名及び現在処理対象にしているチェック対象データレコードを属性チェック部19に渡す (ステップS42)。その後、チェック対象部分取得部18は、待ち状態となり、属性チェック部19から次のデータレコードについての情報が要求されるのを待つ (ステップS43)。
【0067】属性チェック部19は、チェック対象部分取得部18からチェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡されると、図1111の流れ図に示すように、現在処理対象にしているデータレコードがチェック対象レコード格納ファイル4に格納されているデータレコードの内の先頭から何番目のデータレコードであるのかを示す変数iの値を「1」にする (ステップS51)。
【0068】その後、属性チェック部19は、パラメータ展開テーブル16から比較対象を取得し、それに基づいてチェック対象部分取得部18から渡されたチェック対象部分の内容の内の1つをチェックする (ステップS52)。例えば、パラメータ展開テーブル16中の比較対象の内容が図5に示すようにNUMEである場合は、属性チェック部19は、チェック対象部分の内容に不正十進が存在するか否かをチェックする。
【0069】そして、チェック対象データレコード中のチェック対象部分の内容にエラーがあると判断した場合 (ステップS53がYES)は、属性チェック部19は、その内容とその部分に対応する基準データレコードの項目名とを内部に保持した後(ステップS54)、チェック対象部分取得部18から渡された内容の内の次の内容についてのチェックを行なう (ステップS52)。また、内容にエラーがない場合 (ステップS53がNO)は、チェック対象部分取得部18から渡された内容の内の次の内容についてチェックを行なう (ステップS52)。
【0070】そして、チェック対象部分取得部18から渡されたチェック対象部分の内容全てについて上記した処理を行なうと (ステップS55がYES)、属性チェック部19は、エラーのあった部分に対応する基準データレコードの内容,項目名を保持しているか否かを判断する (ステップS56)。
【0071】そして、保持していないと判断した場合 (ステップS56がNO)は、パラメータ展開テーブル16から渡された現在処理対象にしているデータレコードを結果出力制御部20に渡す (ステップS61)。
【0072】また、保持していると判断した場合 (ステップS56がYES)は、保持している内容,項目名及び変数iの値(エラーのあったデータレコードの相対番号)を概要情報として結果出力制御部20に渡し (ステップS57)、次いで、保持している内容,項目名をクリアする (ステップS58)。更に、属性チェック部19は、パラメータ展開テーブル16の動作フラグを参照し、エラーのあった内容の初期化が指示されているか否かを判断する (ステップS59)。即ち、動作フラグがC或いはCSの場合は、初期化が指示されていると判断する。
【0073】そして、初期化が指示されていないと判断した場合 (ステップS59がNO)は、エラーのあったデータレコードをそのまま結果出力制御部20に渡し (ステップS61)、初期化が指示されていると判断した場合は、現在処理対象にしているデータレコード中のエラーのあった部分の内容を属性エラーのない内容に初期化(例えば、オール0)して初期化後のデータレコードを結果出力制御部20に渡す (ステップS60)。
【0074】その後、属性チェック部19は、待ち状態となり、結果出力制御部20から次のチェック結果が要求されるのを待つ (ステップS62)。
【0075】結果出力制御部20は、概要情報或いはデータレコードが渡されると、図12の流れ図に示すように、概要情報が渡されたのか、データレコードが渡されたのかを判断する (ステップS71)。
【0076】そして、概要情報が渡されたと判断した場合は、結果出力制御部20は、パラメータ展開テーブル16を参照して概要情報フラグが「1」になっているか否かを判断し (ステップS72)、「0」になっていると判断した場合は属性チェック部19からデータレコードが渡されるのを待ち (ステップS74)、「1」になっていると判断した場合は概要情報を出力装置5に出力した後 (ステップS73)、属性チェック部19からデータレコードが渡されるのを待つ (ステップS74)。
【0077】そして、属性チェック部19からデータレコードが渡されると、結果出力制御部20は、そのデータレコードを出力データファイル6に出力した後 (ステップS75)、属性チェック部19に次のチェック結果を要求する (ステップS76)。
【0078】また、ステップS71に於いてデータレコードが渡されたと判断した場合は、結果出力制御部20は、パラメータ展開テーブル16の動作フラグを参照し、エラーの無いデータレコードも出力することが指示されているか否かを判断する (ステップS78)。即ち、動作フラグが「C」か「0」の場合は、エラーの無いデータレコードも出力することが指示されていると判断する。そして、エラーの無いデータレコードも出力することが指示されていると判断した場合は、ステップS75の処理を行ない、そうでない場合はステップS76の処理を行なう。
【0079】属性チェック部19は、結果出力制御部20から次のチェック結果が要求されると(図11,ステップS62)、チェック対象部分取得部18に対して次のデータレコードについての情報を要求する (ステップS63)。
【0080】チェック対象部分取得部18は、属性チェック部19から次のデータレコードについての情報が要求されると(図10,ステップS43)、データ読み込み部17に対して次データレコードの読み込みを要求する (ステップS44)。
【0081】データ読み込み部17は、チェック対象部分取得部18から次データレコードの読み込み要求があると(図9,ステップS34)、前述したと同様の処理を行なう(ステップS31〜S34)。
【0082】データ読み込み部17で上記した処理が行なわれることにより、チェック対象部分取得部18には、データ読み込み部17からデータレコードが1つ渡される。チェック対象部分取得部18は、データ読み込み部17からデータレコードが渡されると (図10,ステップS45)、前述したと同様の処理を行なう (ステップS41〜S44)。
【0083】チェック対象部分取得部18で上記した処理が行なわれることにより、属性チェック部19には、チェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡される。属性チェック部19は、チェック対象部分取得部18からチェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡されると(図11,ステップS64)、現在処理対象にしているデータレコードの相対番号を示す変数iの値を+1した後 (ステップS65)、前述したと同様の処理を行なう (ステップS52〜S63)。
【0084】属性チェック部19で上記した処理が行なわれることにより、現在処理対象にしているデータレコードにエラーがある場合は、チェック結果として概要情報とデータレコードとが結果出力制御部20に渡され、エラーがない場合はチェック結果としてデータレコードが結果出力制御部20に渡される。結果出力制御部20は、属性チェック部19からチェック結果が渡されると(図12,ステップS77)、前述したと同様の処理 (ステップS71〜S76)を行なう。
【0085】以下、データ読み込み部17,チェック対象部分取得部18,属性チェック部19,結果出力制御部20は、前述したと同様の処理を繰り返し行なう。
【0086】そして、データ読み込み部17がチェック対象レコード格納ファイル4の終わりを検出すると (図9R>9,ステップS32がYES)、データ読み込み部17からチェック対象部分取得部18に対して終了通知が行なわれ(図9,ステップS35)、データ読み込み部17はその処理を終了する。
【0087】また、チェック対象部分取得部18は、データ読み込み部17から終了通知を受けると(図10,ステップS45)、属性チェック部19に対して終了通知を行なった後 (ステップS46)、その処理を終了し、属性チェック部19は、チェック対象部分取得部18から終了通知を受けると(図11,ステップS64)、結果出力制御部20に対して終了通知を行なった後 (ステップS66)、その処理を終了する。また、結果出力制御部20は、属性チェック部19から終了通知を受けると(図12,ステップS77)、その処理を終了する。
【0088】尚、チェック動作指定パラメータ記述3の内容によってデータチェック装置1に種々の動作を行なわせることができるが、例えば、システムAで作成されたデータレコードの内、属性エラーの無かったデータレコードはそのまま、属性エラーのあったデータレコードは属性エラーが検出された部分の内容を初期化した後、チェック対象レコード格納ファイル4に出力させるようにすることにより、システムAで作成されたデータレコードに、システムBに於いてデータ例外を発生させる部分があって、システムAで作成されたデータレコードのままでは、システムBのデータレコード処理に関する機能のテスト等を行なうことができない場合であっても、チェック対象レコード格納ファイル4を利用してシステムBのデータレコード処理に関する機能のテスト等を行なうことが可能になる。
【0089】
【発明の効果】以上説明したように本発明は、基準データレコードの構造を示すレコード構造定義情報と、チェックする項目の属性を指定するチェック動作指定パラメータ記述3に基づいて、チェック対象データレコード中の、属性チェックを行なうレコード内位置を求め、そのレコード内位置に基づいてチェック対象データレコードの属性チェックを行なうようにしたものであるので、利用者に負担をかけることなく、データレコード中の特定の属性についてのみ属性チェックを行なうことができる効果がある。
【0090】また、本発明は、属性エラーがないチェック対象データレコードはそのまま出力データファイルに出力し、属性エラーがあるデータレコードは属性エラーのあった部分の内容を属性エラーの無い内容に変更したデータレコードを出力データファイルに出力するようにしたものであるので、或るシステムで作成されたデータレコードが、他のシステムに於いて属性エラーとなる部分を含んでいる場合に於いても、上記或るシステムで作成されたデータレコードから上記他のシステムでテスト等に於いて利用可能なデータレコードを作成することが可能になるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】レコード構造定義情報2の一例を示す図である。
【図3】レコード構造定義展開テーブル13の内容例を示す図である。
【図4】チェック動作指定パラメータ記述3の一例を示す図である。
【図5】パラメータ展開テーブル16の内容例を示す図である。
【図6】レコード構造解析部12の処理例を示す流れ図である。
【図7】パラメータ解析部15の処理例を示す流れ図である。
【図8】パラメータ解析部15の処理例を示す流れ図である。
【図9】データ読み込み部17の処理例を示す流れ図である。
【図10】チェック対象部分取得部18の処理例を示す流れ図である。
【図11】属性チェック部19の処理例を示す流れ図である。
【図12】結果出力制御部20の処理例を示す流れ図である。
【符号の説明】
1…データチェック装置
11…レコード構造入力部
12…レコード構造解析部
13…レコード構造定義展開テーブル
14…パラメータ入力部
15…パラメータ解析部
16…パラメータ展開テーブル
17…データ読み込み部
18…チェック対象部分取得部
19…属性チェック部
20…結果出力制御部
2…レコード構造定義情報
3…チェック動作指定パラメータ記述
4…チェック対象レコード格納ファイル
5…出力装置
6…出力データファイル
7…表示装置
8…入力装置
【0001】
【産業上の利用分野】本発明は、或るシステムで作成されたデータレコードに、そのデータレコードを他のシステムで利用した場合、属性エラーによりデータ例外を発生させる部分が存在するか否かをチェックするデータチェック装置に関する。
【0002】
【従来の技術】或るシステムAで作成されたデータレコードを他のシステムBで利用する場合、システムBで認識している基準データレコードの構造(データレコード中の各項目の属性,項目長等)に基づいて、システムAで作成されたチェック対象データレコードに、基準データレコードに対して属性エラーとなる部分が存在するか否かを事前にチェックしておくことが必要になる。
【0003】チェック対象データレコード中に、基準データレコードに対して属性エラーとなる部分が存在するか否かをチェックする技術としては、従来、基準データレコードの各項目の項目属性,項目長を含む項目定義情報を外部記憶装置に格納しておき、データレコードのチェック時、チェック対象データレコードを読み込むと共に項目定義情報を主記憶装置上に展開し、この項目定義情報に基づいて読み込んだチェック対象データレコードに属性エラーとなる部分が存在するか否かをチェックする技術(例えば、特開昭59−148921号公報)が知られており、この技術を利用することにより、システムAで作成されたデータレコードが、基準データレコードに対して属性エラーとなる部分を有しているか否かをチェックすることができる。即ち、システムBが認識している基準データレコードの各項目の項目属性,項目長を項目定義情報として外部記憶装置に格納しておけば良い。
【0004】
【発明が解決しようとする課題】ところで、データレコードの属性チェックを行なう場合、特定の属性についてのみ、属性チェックを行なえば十分な場合がある。例えば、システムBのデータレコード処理に関する機能のテストを、システムBで作成したデータレコードが存在しないことからシステムAで既に作成されているデータレコードを利用して行なう場合であって、システムBでは、上記データレコードには、属性が数字の項目と属性が英数字の項目の2種類しか含まれていないと認識している場合は、システムAで作成されたデータレコード(このデータレコード中の項目は、数字,英数字,ゼロサプレスの内の何れかの属性であることが保証されているとする)中の、システムBで属性が数字であると認識している部分についてのみ属性チェックを行なえば十分である。
【0005】即ち、システムBで属性が数字であると認識している部分を、システムAでは属性が英数字,ゼロサプレスと認識している場合は、システムAで作成されたデータレコードの上記部分には、数字以外のコードが格納されていることがあり、そのようなデータレコードを使用してシステムBのテストを行なうと、データ例外の発生によりテストが中断してしまうが、システムBで属性が英数字であると認識している部分を、システムAでは属性が数字,ゼロサプレスであると認識していてもデータ例外は発生しないからである。
【0006】このように、データレコードの特定の属性についてのみ、属性チェックを行なえば十分な場合であっても、上記した従来の技術は、基準データレコードの全ての項目の項目属性,項目長を外部記憶装置に格納するようにしているので、全ての項目について属性チェックが行なわれてしまう。即ち、不必要な項目についても属性チェックが行なわれるため、無駄な処理時間が多くなるという問題がある。また、このような問題をなくすため、属性チェックを行なうことが必要な項目の項目属性,項目開始位置,項目長のみを外部記憶装置に格納することも考えられるが、この場合は、利用者が、チェックを行なうことが必要になる項目の属性,開始位置,項目長をレコード構造定義情報を解析することにより取得しなければならないため、利用者に負担がかかるという問題があった。
【0007】そこで、本発明の目的は、利用者に負担をかけることなく、データレコード中の特定の属性についてのみ属性チェックを行なうことができるデータチェック装置を提供することにある。
【0008】
【課題を解決するための手段】本発明は上記目的を達成するため、基準データレコードの構造を示すレコード構造定義情報に基づいて前記基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成するレコード構造解析部と、チェック動作指定パラメータ記述で指定されたチェック属性と前記レコード構造解析部で作成したレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求めるパラメータ解析部と、前記チェック対象データレコードが格納されているファイルからデータレコードを1レコードずつ読み込むデータ読み込み部と、該データ読み込み部が読み込んだデータレコードの内容の内、前記パラメータ解析部が求めたレコード内位置の内容を取得するチェック対象部分取得部と、該チェック対象部分取得部が取得した内容に対して属性チェックを行なう属性チェック部とを備えたものである。
【0009】また、属性エラーがあったチェック対象データレコード,属性エラー部分に対応する基準データレコードの項目名,属性エラー部分の内容を利用者に認識させるという目的を達成するため、前記属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する前記基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する結果出力制御部を備えたものである。
【0010】また、本発明は、或るシステムで作成されたデータレコードに、それを他のシステムで利用した場合、属性エラーによりデータ例外を発生させる部分が含まれていても、上記或るシステムで作成されたデータレコードから上記他のシステムでのテスト等に於いて利用可能なデータレコードを作成できるようにするという目的を達成するため、前記結果出力制御部は、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、前記出力データファイルに出力するものである。
【0011】
【作用】レコード構造解析部は、基準データレコードの構造を示すレコード構造定義情報に基づいて基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成し、パラメータ解析部は、チェック動作指定パラメータ記述で指定されたチェック属性とレコード構造解析部が作成したレコード構造定義展開情報とに基づいてチェック対象データレコード中のチェックを行なうレコード内位置を求める。
【0012】データレコードのチェック時、データ読み込み部がファイルからチェック対象データレコードを1レコードずつ読み込む。
【0013】データ読み込み部がチェック対象データレコードを1つ読み込むと、チェック対象部分取得部が、そのデータレコードの内容の内、パラメータ解析部が求めたレコード内位置の内容を取得する。
【0014】チェック対象部分取得部がチェック対象とする項目の内容を取得すると、属性チェック部が、その項目の内容に対して属性チェックを行なう。また、結果出力制御部は、属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する。
【0015】また、他の構成に於いては、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、出力データファイルに出力する。
【0016】
【実施例】次に本発明の実施例について図面を参照して詳細に説明する。
【0017】図1は本発明の実施例のブロック図であり、データチェック装置1と、レコード構造定義情報2と、チェック動作指定パラメータ記述3と、チェック対象レコード格納ファイル4と、プリンタ等の出力装置5と、出力データファイル6と、表示装置7と、入力装置8とから構成されている。
【0018】データチェック装置1は、レコード構造入力部11と、レコード構造解析部12と、レコード構造定義展開テーブル13と、パラメータ入力部14と、パラメータ解析部15と、パラメータ展開テーブル16と、データ読み込み部17と、チェック対象部分取得部18と、属性チェック部19と、結果出力制御部20とから構成されている。
【0019】レコード構造入力部11にはレコード構造定義情報2が入力される。
【0020】レコード構造定義情報2は、チェック対象データレコードの属性チェックを行なう際に基準とする基準データレコードの構造を示す情報であり、COBOLに於けるCOPY原文等がこれに相当する。図2はレコード構造定義情報2の内容例を示した図であり、この例は、データレコードがPKEY,店番,顧客番号,カナ顧客名,電話番号,預金残高の項目から構成され、店番,顧客番号,預金残高の項目の属性が数字で、カナ顧客名,電話番号の項目の属性が英数字であることを示している。また、この例は、基本項目である店番,顧客番号,カナ顧客名,電話番号,預金残高の項目長がそれぞれ3,8,20,12,11であることを示し、PKEYが店番,顧客番号の集団項目になっていることを示している。
【0021】レコード構造解析部12は、レコード構造入力部11が入力したレコード構造定義情報2を解析してレコード構造定義展開情報を生成し、それをレコード構造定義展開テーブル13に展開する機能を有する。レコード構造定義展開情報は、レコード構造定義情報2によって構造が定義されている基準データレコードの各項目の項目名,属性,開始位置,項目長を示すものであり、図3に示すように、1つの項目について情報が、レコード構造定義展開テーブル13の1つのテーブル番号に対応する領域に格納される。
【0022】パラメータ入力部14にはチェック動作指定パラメータ記述3が入力される。
【0023】チェック動作指定パラメータ記述3には、チェック対象属性や、出力装置5,出力データファイル6にどのような情報を出力するか等が記述される。図4はチェック動作指定パラメータ記述3の内容例を示した図である。
【0024】図4の例は、チェック対象にする属性を数字にし、チェック対象データレコード中に属性エラーがあった場合は、概要情報(先頭のデータレコードから数えて何番目のデータレコードであるのかを示す相対番号,属性エラーがあった部分に対応する基準データレコードの項目名,属性エラーがあった部分の内容)を出力すると共に、データレコード中の属性エラーのあった部分の内容を初期化(オール0)にして、そのデータレコードを出力することを指示している。尚、図4の例は、データレコード中の属性エラーのあった部分の内容を初期化した後、そのデータレコードを出力することを指示しているが、属性エラーのあった部分の内容を初期化する必要がない場合には、図4中のCLEAR文を削除すれば良い。また、図4の例は、属性エラーのあった部分を含むデータレコードのみを出力することを指示しているが、チェックしたデータレコードを全て出力する場合には、図4中のSELECT文を削除すれば良い。更に、概要情報を出力する必要がない場合は、図4中の第1番目の文〜第3番目の文を削除すれば良い。
【0025】パラメータ解析部15は、パラメータ入力部14が入力したチェック動作指定パラメータ記述3とレコード構造定義展開テーブル13に展開されているレコード構造定義展開情報とに基づいてチェック動作パラメータ展開情報を生成し、それをパラメータ展開テーブル16に展開する機能を有する。
【0026】チェック動作パラメータ展開情報は、レコード構造定義情報2で構造が定義されている基準データレコードの項目の内の、属性がチェック動作指定パラメータ記述3によって指定されているチェック属性と一致している項目それぞれについて、その項目についての情報が格納されているレコード構造定義展開テーブル13中の領域を示すテーブル番号と、その項目に対する比較対象とを有している。また、チェック動作パラメータ展開情報は、属性チェック部19,結果出力制御部20にどのような動作を行なわせるかを示す動作フラグ及び概要情報を出力するか否かを示す概要情報フラグも含んでいる。図5はチェック動作パラメータ展開情報をパラメータ展開テーブル16に展開した時のパラメータ展開テーブル16の内容を示した図である。
【0027】データ読み込み部17は、チェック対象とするデータレコードが格納されているチェック対象レコード格納ファイル4からデータレコードを1レコードずつ読み込む機能を有する。
【0028】チェック対象部分取得部18は、データ読み込み部17が読み込んだデータレコードの内容の内、チェック対象とする部分の内容を取得する機能を有する。
【0029】属性チェック部19は、チェック対象部分取得部18が取得した内容に対して、パラメータ展開テーブル16に格納されている比較対象に従ったチェックを行なう。
【0030】結果出力制御部20は、パラメータ展開テーブル16に格納されている概要情報フラグ,動作フラグの内容に従って、チェック結果等を出力する機能を有する。
【0031】次に、本実施例の動作を説明する。
【0032】今、例えば、システムBのデータレコード処理に関する機能のテストを、システムBで作成したデータレコードが存在しないことからシステムAで既に作成されているデータレコードを利用して行なうことができるか否かを調べるために、データチェック装置1を用いてシステムAで作成されたデータレコードの属性チェックを行なう場合を考えてみる。
【0033】この場合、オペレータは、先ず、システムBで認識している基準データレコードの構造を示すレコード構造定義情報2をレコード構造入力部11に入力する。
【0034】レコード構造解析部12は、レコード構造入力部11にレコード構造定義情報2が入力されると、図6の流れ図に示すように、入力されたレコード構造定義情報2中の文を1つ読み込み (ステップS1)、その文の構文解析を行なう (ステップS3)。
【0035】そして、読み込んだ文に構文エラーがある場合 (ステップS4がYES)は、表示装置7にエラー表示を行なった後 (ステップS6)、その処理を終了する。また、構文エラーがない場合 (ステップS4がNO)は、読み込んだ文によって定義されている項目についてのレコード構造定義展開情報を生成してそれをレコード構造定義展開テーブル13に展開する (ステップS5)。
【0036】このステップS5の処理を詳細に説明すると、次のようになる。即ち、読み込んだ文が基本項目を定義するものである場合は、その文が定義している項目の項目名,属性,開始位置及び項目長から構成されるレコード構造定義展開情報を生成し、生成したレコード構造定義展開情報をレコード構造定義展開テーブル13中の1つのテーブル番号に対応する領域に展開する。ここで、項目の開始位置は、読み込んだ文が最初の項目についてのものである場合は「0」にし、そうでない場合は、レコード構造定義展開テーブル13に前回展開したレコード構造定義展開情報中の、項目の開始位置と項目長とを加算した値にする。
【0037】また、読み込んだ文が集団項目を定義するものである場合は、その集団項目の項目長は、集団項目中の全ての項目の項目長が判らないと、求めることができないので、集団項目を定義する文を読み込んだ時点に於いては、その集団項目のレコード構造定義展開情報の内、項目名,属性(必ず英数字Xとする),開始位置のみ生成してそれらをレコード構造定義展開テーブル13中の1つのテーブル番号に対応する領域に展開しておき、項目長は、その集団項目に含まれている項目の項目長が全て判った時点に於いて、それらを全て加算することにより求め、レコード構造定義展開テーブル13の上記領域に展開する。
【0038】その後、レコード構造解析部12は、レコード構造定義情報2中の次の文を1つ読み込み (ステップS1)、その文について前述したと同様の処理を行なう。レコード構造解析部12は、上述した処理をレコード構造定義情報2中の全ての文について行なうと (ステップS2がYES)と、表示装置7に正常終了表示を行なった後 (ステップS7)、その処理を終了する。
【0039】従って、今、例えば、レコード構造定義情報2の内容が図2に示すものであるとすると、次のような処理が行なわれることになる。
【0040】レコード構造解析部12は、レコード構造定義情報2の先頭の文「02 PKEY.」を読み込むと (ステップS1)、構文解析を行なう (ステップS3)。この文の構文は正しいので、ステップS4の判断結果はNOとなり、ステップS5の処理が行なわれる。
【0041】この文は集団項目を定義するものであるので、レコード構造解析部12は、図3に示すように、項目名「PKEY」,属性「X」,開始位置「0」をレコード構造定義展開テーブル13のテーブル番号1の領域に格納する (ステップS5)。
【0042】次いで、レコード構造解析部12は、第2番目の文「03 店番 PIC 9(3).」を読み込む (ステップS1)。第2番目の文は、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、項目名「店番」,属性「9」,開始位置「0」,項目長「3」をレコード構造定義展開テーブル13のテーブル番号2の領域に展開する (ステップS5)。
【0043】その後、レコード構造解析部12は第3番目の文「03 顧客番号 PIC9(8).」を読み込む (ステップS1)。第3番目の文も、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、レコード構造定義展開テーブル13のテーブル番号3の領域に、項目名「顧客番号」,属性「9」,開始位置「3」,項目長「8」を展開する (ステップS5)。
【0044】次いで、レコード構造解析部12は、第4番目の文「02 カナ顧客名 PIC X(20).」を読み込む (ステップS1)。第4番目の文も、基本項目を定義するものであるので、レコード構造解析部12は、図3に示すように、レコード構造定義展開テーブル13のテーブル番号4の領域に、項目名「カナ顧客名」,属性「X」,開始位置「11」,項目長「20」を設定し、また、第4番目の文を読み込んだ時点に於いて、集団項目を定義する第1番目の文が閉じたことが判るので、レコード構造解析部12は、第2番目,第3番目の文によって示される項目の項目長「3」,「8」を加算し、加算結果「11」を集団項目の項目長としてレコード構造定義展開テーブル13のテーブル番号1の領域に展開する(ステップS5)。
【0045】その後、レコード構造解析部12は、レコード構造定義情報2中の第5番目,第6番目の文を順次読み込み、前述した処理を行なう。そして、第6番目の文「02 預金残高 PIC 9(11).」についての処理が終了すると (ステップS2がYES)、表示装置7に正常終了表示を行なった後 (ステップS7)、その処理を終了する。
【0046】オペレータは、表示装置7に正常終了表示が行なわれると、次にチェック動作指定パラメータ記述3をパラメータ入力部14に入力する。尚、表示装置7にエラー表示が行なわれた場合は、オペレータは、レコード構造定義情報2中の誤りを修正し、修正後のレコード構造定義情報2を再度入力する。
【0047】パラメータ解析部15は、パラメータ入力部14に、チェック動作指定パラメータ記述3が入力されると、図7の流れ図に示すように、チェック動作指定パラメータ記述3中の文を1つ読み込み (ステップS11)、読み込んだ文の構文を解析する (ステップS13)。
【0048】そして、読み込んだ文に構文エラーがある場合 (ステップS14がYES)は、表示装置7にエラー表示を行なった後 (ステップS15)、その処理を終了する。また、読み込んだ文に構文エラーがない場合 (ステップS14がNO)は、チェック動作指定パラメータ記述3中の次の文を読み込み (ステップS11)、前述したと同様の処理を行なう。
【0049】そして、チェック動作指定パラメータ記述3中の全ての文について前述した処理を行なうと、パラメータ解析部15は、読み込んだチェック動作指定パラメータ記述3とレコード構造定義展開テーブル13の内容とに基づいてチェック動作指定パラメータ展開情報を生成してそれをパラメータ展開テーブル16に展開し(ステップS16)、その後、表示装置7に正常終了表示を行なう (ステップS17)。
【0050】図8は、図7のステップS16の処理の詳細を示した流れ図であり、同図を参照してステップS16の処理を説明すると次のようになる。
【0051】先ず、パラメータ解析部15は、レコード構造定義展開テーブル13を参照し、チェック動作指定パラメータ記述3によって指定されているチェック属性と同じ属性が格納されているレコード構造定義展開テーブル13の領域のテーブル番号を全て取得し、取得したテーブル番号をパラメータ展開テーブル16に設定する (ステップS21)。
【0052】次いで、パラメータ解析部15は、パラメータ展開テーブル16に比較対象を設定する。例えば、チェック対象とする項目の属性として数字が指定されている場合は、比較対象として不正十進を設定する (ステップS22)。
【0053】その後、パラメータ解析部15は、チェック動作指定パラメータ記述3中に概要情報の出力が指定されているか否かを判断し、概要情報の出力が指定されている場合は概要情報フラグに「1」を設定し、指定されていない場合は「0」を設定する (ステップS23)。
【0054】更に、パラメータ解析部15は、チェック動作指定パラメータ記述3中のCLEAR文,SELECT文の有無に基づいて動作フラグを設定する (ステップS24)。即ち、CLEAR文,SELECT文が両方とも存在する場合は、動作フラグとしてCSを設定し、CLEAR文のみが存在する場合はCを設定し、SELECT文のみが存在する場合はSを設定し、両方とも存在しない場合は「0」を設定する。
【0055】従って、今、例えば、チェック動作指定パラメータ記述3の内容が図4に示すものであり、レコード構造定義展開テーブル13の内容が図3に示すものであるる場合、以下の処理が行なわれることになる。
【0056】図4に示したチェック動作指定パラメータ記述3は、第5番目の文「IF:DATA−ERR」によって、チェック対象の属性を数字にすることを指定しているので、パラメータ解析部15は、図3に示すレコード構造定義展開テーブル13を参照し、数字を示す属性「9」が格納されている領域のテーブル番号「2」,「3」,「6」を、図5に示すように、パラメータ展開テーブル16に設定する (ステップS21)。
【0057】次いで、パラメータ解析部15は、第5番目の文「IF: DATA−ERR」によって、チェック対象の属性を数字にすることを指定しているので、図5R>5に示すように、比較対象として不正十進(NUME)を設定する (ステップS22)。
【0058】その後、パラメータ解析部15は、第1番目の文〜第3番目の文によって概要情報の出力が指定されているので、図5に示すように、概要情報フラグに「1」を設定する (ステップS23)。
【0059】更に、パラメータ解析部15は、第6番目,第7番目にCLEAR文,SELECT文が存在することから、図5に示すように、動作フラグとして「CS」を設定する。
【0060】オペレータは、チェック動作指定パラメータ記述3を入力した後、表示装置7に正常終了表示が行なわれると、入力装置8を用いてデータ読み込み部17に対して、システムAで作成されたチェック対象データレコードが格納されているチェック対象レコード格納ファイル4の読み込みを指示する。尚、表示装置7にエラー表示が行なわれた場合は、オペレータは、チェック動作指定パラメータ記述3中の誤りを修正し、修正後のチェック動作指定パラメータ記述3を再度入力する。
【0061】データ読み込み部17は、データレコードの読み込みが指示されると、図9の流れ図に示すように、チェック対象レコード格納ファイル4からデータレコードを1つ読み込み (ステップS31)、それをチェック対象部分取得部18に渡す(ステップS33)。その後、データ読み込み部17は、待ち状態となり、チェック対象部分取得部18から次のデータレコードの読み込みが要求されるのを待つ (ステップS34)。
【0062】チェック対象部分取得部18は、データ読み込み部17からチェック対象データレコードが渡されると、図10の流れ図に示すように、送られてきたデータレコードと、レコード構造定義展開テーブル13の内容と、パラメータ展開テーブル16の内容とに基づいて、送られてきたデータレコードの内、基準データレコード中の、チェック動作指定パラメータ記述3によって指定されたチェック対象の属性の項目部分と対応する部分の内容を取得する (ステップS41)。
【0063】このステップS41の処理を詳細に説明すると、チェック対象部分取得部18は、先ず、パラメータ展開テーブル16に格納されているテーブル番号を取得する。例えば、パラメータ展開テーブル16の内容が図5に示すものであるとすると、チェック対象部分取得部18は、テーブル番号「2」,「3」,「6」を取得することになる。
【0064】次に、チェック対象部分取得部18は、取得したテーブル番号「2」,「3」,「6」に基づいてレコード構造定義展開テーブル13を参照し、上記テーブル番号の領域に格納されている項目名,開始位置,項目長を取得する。例えば、レコード構造定義展開テーブル13の内容が図3に示すものであるとすると、チェック対象部分取得部18は、テーブル番号「2」の領域に展開されている項目名「店番」,開始位置「0」,項目長「3」と、テーブル番号「3」の領域に展開されている項目名「顧客番号」,開始位置「3」,項目長「8」と、テーブル番号「6」の領域に展開されている項目名「預金残高」,開始位置「43」,項目長「11」とを取得することになる。
【0065】その後、チェック対象部分取得部18は、データ読み込み部17から渡されたチェック対象データレコードの内の、上記取得した項目の開始位置,項目長によって示される部分の内容を取得することにより、チェック対象部分の内容を取得する。
【0066】ステップS41でチェック対象部分の内容を取得すると、チェック対象部分取得部18は、取得したチェック対象部分の内容,チェック対象部分に対応する基準データレコードに於ける項目名及び現在処理対象にしているチェック対象データレコードを属性チェック部19に渡す (ステップS42)。その後、チェック対象部分取得部18は、待ち状態となり、属性チェック部19から次のデータレコードについての情報が要求されるのを待つ (ステップS43)。
【0067】属性チェック部19は、チェック対象部分取得部18からチェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡されると、図1111の流れ図に示すように、現在処理対象にしているデータレコードがチェック対象レコード格納ファイル4に格納されているデータレコードの内の先頭から何番目のデータレコードであるのかを示す変数iの値を「1」にする (ステップS51)。
【0068】その後、属性チェック部19は、パラメータ展開テーブル16から比較対象を取得し、それに基づいてチェック対象部分取得部18から渡されたチェック対象部分の内容の内の1つをチェックする (ステップS52)。例えば、パラメータ展開テーブル16中の比較対象の内容が図5に示すようにNUMEである場合は、属性チェック部19は、チェック対象部分の内容に不正十進が存在するか否かをチェックする。
【0069】そして、チェック対象データレコード中のチェック対象部分の内容にエラーがあると判断した場合 (ステップS53がYES)は、属性チェック部19は、その内容とその部分に対応する基準データレコードの項目名とを内部に保持した後(ステップS54)、チェック対象部分取得部18から渡された内容の内の次の内容についてのチェックを行なう (ステップS52)。また、内容にエラーがない場合 (ステップS53がNO)は、チェック対象部分取得部18から渡された内容の内の次の内容についてチェックを行なう (ステップS52)。
【0070】そして、チェック対象部分取得部18から渡されたチェック対象部分の内容全てについて上記した処理を行なうと (ステップS55がYES)、属性チェック部19は、エラーのあった部分に対応する基準データレコードの内容,項目名を保持しているか否かを判断する (ステップS56)。
【0071】そして、保持していないと判断した場合 (ステップS56がNO)は、パラメータ展開テーブル16から渡された現在処理対象にしているデータレコードを結果出力制御部20に渡す (ステップS61)。
【0072】また、保持していると判断した場合 (ステップS56がYES)は、保持している内容,項目名及び変数iの値(エラーのあったデータレコードの相対番号)を概要情報として結果出力制御部20に渡し (ステップS57)、次いで、保持している内容,項目名をクリアする (ステップS58)。更に、属性チェック部19は、パラメータ展開テーブル16の動作フラグを参照し、エラーのあった内容の初期化が指示されているか否かを判断する (ステップS59)。即ち、動作フラグがC或いはCSの場合は、初期化が指示されていると判断する。
【0073】そして、初期化が指示されていないと判断した場合 (ステップS59がNO)は、エラーのあったデータレコードをそのまま結果出力制御部20に渡し (ステップS61)、初期化が指示されていると判断した場合は、現在処理対象にしているデータレコード中のエラーのあった部分の内容を属性エラーのない内容に初期化(例えば、オール0)して初期化後のデータレコードを結果出力制御部20に渡す (ステップS60)。
【0074】その後、属性チェック部19は、待ち状態となり、結果出力制御部20から次のチェック結果が要求されるのを待つ (ステップS62)。
【0075】結果出力制御部20は、概要情報或いはデータレコードが渡されると、図12の流れ図に示すように、概要情報が渡されたのか、データレコードが渡されたのかを判断する (ステップS71)。
【0076】そして、概要情報が渡されたと判断した場合は、結果出力制御部20は、パラメータ展開テーブル16を参照して概要情報フラグが「1」になっているか否かを判断し (ステップS72)、「0」になっていると判断した場合は属性チェック部19からデータレコードが渡されるのを待ち (ステップS74)、「1」になっていると判断した場合は概要情報を出力装置5に出力した後 (ステップS73)、属性チェック部19からデータレコードが渡されるのを待つ (ステップS74)。
【0077】そして、属性チェック部19からデータレコードが渡されると、結果出力制御部20は、そのデータレコードを出力データファイル6に出力した後 (ステップS75)、属性チェック部19に次のチェック結果を要求する (ステップS76)。
【0078】また、ステップS71に於いてデータレコードが渡されたと判断した場合は、結果出力制御部20は、パラメータ展開テーブル16の動作フラグを参照し、エラーの無いデータレコードも出力することが指示されているか否かを判断する (ステップS78)。即ち、動作フラグが「C」か「0」の場合は、エラーの無いデータレコードも出力することが指示されていると判断する。そして、エラーの無いデータレコードも出力することが指示されていると判断した場合は、ステップS75の処理を行ない、そうでない場合はステップS76の処理を行なう。
【0079】属性チェック部19は、結果出力制御部20から次のチェック結果が要求されると(図11,ステップS62)、チェック対象部分取得部18に対して次のデータレコードについての情報を要求する (ステップS63)。
【0080】チェック対象部分取得部18は、属性チェック部19から次のデータレコードについての情報が要求されると(図10,ステップS43)、データ読み込み部17に対して次データレコードの読み込みを要求する (ステップS44)。
【0081】データ読み込み部17は、チェック対象部分取得部18から次データレコードの読み込み要求があると(図9,ステップS34)、前述したと同様の処理を行なう(ステップS31〜S34)。
【0082】データ読み込み部17で上記した処理が行なわれることにより、チェック対象部分取得部18には、データ読み込み部17からデータレコードが1つ渡される。チェック対象部分取得部18は、データ読み込み部17からデータレコードが渡されると (図10,ステップS45)、前述したと同様の処理を行なう (ステップS41〜S44)。
【0083】チェック対象部分取得部18で上記した処理が行なわれることにより、属性チェック部19には、チェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡される。属性チェック部19は、チェック対象部分取得部18からチェック対象部分の内容,項目名及び現在処理対象にしているデータレコードが渡されると(図11,ステップS64)、現在処理対象にしているデータレコードの相対番号を示す変数iの値を+1した後 (ステップS65)、前述したと同様の処理を行なう (ステップS52〜S63)。
【0084】属性チェック部19で上記した処理が行なわれることにより、現在処理対象にしているデータレコードにエラーがある場合は、チェック結果として概要情報とデータレコードとが結果出力制御部20に渡され、エラーがない場合はチェック結果としてデータレコードが結果出力制御部20に渡される。結果出力制御部20は、属性チェック部19からチェック結果が渡されると(図12,ステップS77)、前述したと同様の処理 (ステップS71〜S76)を行なう。
【0085】以下、データ読み込み部17,チェック対象部分取得部18,属性チェック部19,結果出力制御部20は、前述したと同様の処理を繰り返し行なう。
【0086】そして、データ読み込み部17がチェック対象レコード格納ファイル4の終わりを検出すると (図9R>9,ステップS32がYES)、データ読み込み部17からチェック対象部分取得部18に対して終了通知が行なわれ(図9,ステップS35)、データ読み込み部17はその処理を終了する。
【0087】また、チェック対象部分取得部18は、データ読み込み部17から終了通知を受けると(図10,ステップS45)、属性チェック部19に対して終了通知を行なった後 (ステップS46)、その処理を終了し、属性チェック部19は、チェック対象部分取得部18から終了通知を受けると(図11,ステップS64)、結果出力制御部20に対して終了通知を行なった後 (ステップS66)、その処理を終了する。また、結果出力制御部20は、属性チェック部19から終了通知を受けると(図12,ステップS77)、その処理を終了する。
【0088】尚、チェック動作指定パラメータ記述3の内容によってデータチェック装置1に種々の動作を行なわせることができるが、例えば、システムAで作成されたデータレコードの内、属性エラーの無かったデータレコードはそのまま、属性エラーのあったデータレコードは属性エラーが検出された部分の内容を初期化した後、チェック対象レコード格納ファイル4に出力させるようにすることにより、システムAで作成されたデータレコードに、システムBに於いてデータ例外を発生させる部分があって、システムAで作成されたデータレコードのままでは、システムBのデータレコード処理に関する機能のテスト等を行なうことができない場合であっても、チェック対象レコード格納ファイル4を利用してシステムBのデータレコード処理に関する機能のテスト等を行なうことが可能になる。
【0089】
【発明の効果】以上説明したように本発明は、基準データレコードの構造を示すレコード構造定義情報と、チェックする項目の属性を指定するチェック動作指定パラメータ記述3に基づいて、チェック対象データレコード中の、属性チェックを行なうレコード内位置を求め、そのレコード内位置に基づいてチェック対象データレコードの属性チェックを行なうようにしたものであるので、利用者に負担をかけることなく、データレコード中の特定の属性についてのみ属性チェックを行なうことができる効果がある。
【0090】また、本発明は、属性エラーがないチェック対象データレコードはそのまま出力データファイルに出力し、属性エラーがあるデータレコードは属性エラーのあった部分の内容を属性エラーの無い内容に変更したデータレコードを出力データファイルに出力するようにしたものであるので、或るシステムで作成されたデータレコードが、他のシステムに於いて属性エラーとなる部分を含んでいる場合に於いても、上記或るシステムで作成されたデータレコードから上記他のシステムでテスト等に於いて利用可能なデータレコードを作成することが可能になるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】レコード構造定義情報2の一例を示す図である。
【図3】レコード構造定義展開テーブル13の内容例を示す図である。
【図4】チェック動作指定パラメータ記述3の一例を示す図である。
【図5】パラメータ展開テーブル16の内容例を示す図である。
【図6】レコード構造解析部12の処理例を示す流れ図である。
【図7】パラメータ解析部15の処理例を示す流れ図である。
【図8】パラメータ解析部15の処理例を示す流れ図である。
【図9】データ読み込み部17の処理例を示す流れ図である。
【図10】チェック対象部分取得部18の処理例を示す流れ図である。
【図11】属性チェック部19の処理例を示す流れ図である。
【図12】結果出力制御部20の処理例を示す流れ図である。
【符号の説明】
1…データチェック装置
11…レコード構造入力部
12…レコード構造解析部
13…レコード構造定義展開テーブル
14…パラメータ入力部
15…パラメータ解析部
16…パラメータ展開テーブル
17…データ読み込み部
18…チェック対象部分取得部
19…属性チェック部
20…結果出力制御部
2…レコード構造定義情報
3…チェック動作指定パラメータ記述
4…チェック対象レコード格納ファイル
5…出力装置
6…出力データファイル
7…表示装置
8…入力装置
【特許請求の範囲】
【請求項1】 基準データレコードの構造を示すレコード構造定義情報に基づいて前記基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成するレコード構造解析部と、チェック動作パラメータ記述で指定されたチェック属性と前記レコード構造解析部で作成したレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求めるパラメータ解析部と、前記チェック対象データレコードが格納されているファイルからデータレコードを1レコードずつ読み込むデータ読み込み部と、該データ読み込み部が読み込んだデータレコードの内容の内、前記パラメータ解析部が求めたレコード内位置の内容を取得するチェック対象部分取得部と、該チェック対象部分取得部が取得した内容に対して属性チェックを行なう属性チェック部とを備えたことを特徴とするデータチェック装置。
【請求項2】 前記属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する前記基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する結果出力制御部を備えたことを特徴とする請求項1記載のデータチェック装置。
【請求項3】 前記結果出力制御部は、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、前記出力データファイルに出力することを特徴とする請求項2記載のデータチェック装置。
【請求項1】 基準データレコードの構造を示すレコード構造定義情報に基づいて前記基準データレコード中の各項目の属性,開始位置及び項目長を示すレコード構造定義展開情報を作成するレコード構造解析部と、チェック動作パラメータ記述で指定されたチェック属性と前記レコード構造解析部で作成したレコード構造定義展開情報とに基づいて、チェック対象データレコード中のチェックを行なうレコード内位置を求めるパラメータ解析部と、前記チェック対象データレコードが格納されているファイルからデータレコードを1レコードずつ読み込むデータ読み込み部と、該データ読み込み部が読み込んだデータレコードの内容の内、前記パラメータ解析部が求めたレコード内位置の内容を取得するチェック対象部分取得部と、該チェック対象部分取得部が取得した内容に対して属性チェックを行なう属性チェック部とを備えたことを特徴とするデータチェック装置。
【請求項2】 前記属性チェック部で属性エラーが検出された部分を含むチェック対象データレコードの相対番号,前記属性エラーが検出された部分に対応する前記基準データレコードの項目名及び前記属性エラーが検出された部分の内容を出力する結果出力制御部を備えたことを特徴とする請求項1記載のデータチェック装置。
【請求項3】 前記結果出力制御部は、前記属性チェック部で属性エラーが検出されなかったチェック対象データレコードについては該データレコードをそのまま出力データファイルに出力し、前記属性チェック部で属性エラーが検出されたチェック対象データレコードについては属性エラーが検出された部分の内容を属性エラーのない内容に変更した後、前記出力データファイルに出力することを特徴とする請求項2記載のデータチェック装置。
【図2】
【図3】
【図4】
【図1】
【図5】
【図8】
【図6】
【図7】
【図9】
【図10】
【図11】
【図12】
【図3】
【図4】
【図1】
【図5】
【図8】
【図6】
【図7】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開平8−44605
【公開日】平成8年(1996)2月16日
【国際特許分類】
【出願番号】特願平6−193733
【出願日】平成6年(1994)7月26日
【出願人】(000004237)日本電気株式会社 (19,353)
【公開日】平成8年(1996)2月16日
【国際特許分類】
【出願日】平成6年(1994)7月26日
【出願人】(000004237)日本電気株式会社 (19,353)
[ Back to top ]