(57)【要約】【課題】  処理対象ファイルに含まれるレコード群を複数の分割ファイルに振分ける際に、前記レコード群のレコード件数に応じた振り分け設定を可能とするファイル分割プログラムを提供する。【解決手段】  ファイル分割プログラム１０１は、ＴＳＳ端末１４０により指定されたパラメータファイル１１２から、分割ファイル１３１の分割数を取得する。次に、後述するレコード加工処理により、入力ファイル１１１の各レコードについて、主キーのキー値が重複しているレコード数をキー重複数情報として付加する。キー重複数情報を付加した後、後述する出力先ファイル決定処理により、各レコードに出力先を割り当て、その出力先情報を作業用ファイル１２１に付加する。最後に、ファイル出力処理として、作業用ファイル１２１の各レコードを該当する分割ファイル１３１に出力する。【選択図】      図１
2007086951.tif 000002
【特許請求の範囲】
【請求項１】
複数のレコードを有する入力ファイルについて、ファイル分割手段が、キー値により識別されるレコード群毎に複数ファイルに分割するファイル分割処理方法であって、
前記ファイル分割手段は、
前記入力ファイルに含まれる各レコードのキー値に基づき、キー重複数を検出して、検出結果をキー重複数情報として前記各レコードに付加するレコード加工処理ステップと、
前記キー重複数情報に基づき、任意に設定された分割数に応じて、各レコード群毎の出力先となる分割ファイルを示す出力先情報を各レコードに設定する出力先ファイル決定処理ステップと、
前記出力先情報に基づき、各分割ファイルに各レコードを出力するレコード出力処理ステップと
からなるファイル分割処理方法。
【請求項２】
前記出力先ファイル決定処理ステップは、
前記キー重複数情報の値が大きいレコード群から順に、レコードの出力設定件数が小さい分割ファイルに割り当てることを特徴とする請求項１に記載のファイル分割処理方法。
【請求項３】
複数のレコードを有する入力ファイルについて、キー値により識別されるレコード群毎に複数ファイルに分割する処理をコンピュータに実行させるファイル分割プログラムであって、
前記入力ファイルに含まれる各レコードの主キーのキー値に基づき、キー重複数を検出して、検出結果をキー重複数情報として前記各レコードに付加するレコード加工処理と、
前記キー重複数情報に基づき、任意に設定された分割数に応じて、各レコード群毎の出力先となる分割ファイルを示す出力先情報を各レコードに設定する出力先ファイル決定処理と、
前記出力先情報に基づき、各分割ファイルに各レコードを出力するレコード出力処理と
をコンピュータに実行させるファイル分割プログラム。
【請求項４】
前記出力先ファイル決定処理は、
前記キー重複数情報の値が大きいレコード群から順に、レコードの出力設定件数が小さい分割ファイルに割り当てることを特徴とする請求項３に記載のファイル分割プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるファイル分割プログラムに係り、特に、メインフレーム等で大量のファイルを扱う際に、並列処理の処理効率を向上するために平準化された分割ファイルを生成するための構成に関する。
【背景技術】
【０００２】
従来より、メインフレームのような汎用コンピュータで大量のファイルに対するバッチ処理を行う場合には、処理対象となるファイルに含まれるレコードをいくつかのファイルに分割し、並列して実行することで処理効率を上げていた。
その際のファイル分割方法としては、キー値により識別されるレコード群について、ファイル分割数に応じて予め設定したキー範囲に応じて、各分割ファイルに振分ける処理が一般的に行われている。
また、従来公知となっているファイル分割処理としては、データの先頭位置及び最終位置を含む管理情報によって管理されるファイルの分割方法において、分割元ファイルの管理情報を分割後のファイルの複数の管理情報に分割する処理を行うものがある（例えば、特許文献１参照。）。また、ファイルの再配置システムとして、各ボリュームに対するファイルの配置状態情報に基づき、ファイルの再配置を行うこととしたものが公知となっている（例えば、特許文献２参照。）。
【特許文献１】特開平０６−２３１０１６号公報
【特許文献２】特開２００３−２９６１４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、前記従来のファイル分割方法では、予め設定されたキー範囲に応じて各ファイルにレコード群を振分けることとしているので、レコード群を構成するレコード件数にばらつきがある場合には、分割ファイルに含まれるレコード件数に偏りが生じる恐れがあった。
また、前記特許文献１に記載の構成は、ファイルの分割処理そのものを如何に効率よく行うかを目的としたものであり、ファイルに含まれる複数のレコード群を各分割ファイルに対して適切に割り当てるための構成については考慮されていなかった。
また、前記特許文献２に記載の構成は、複数ボリュームにおけるファイルの配置状態に応じたファイルの再配置を行うものであり、各レコード群のレコード数に応じた振分けを考慮したものではなかった。
【０００４】
本発明は前記課題を解決するためのものであり、処理対象ファイルに含まれるレコード群を複数の分割ファイルに振分ける際に、前記レコード群のレコード件数に応じた振り分け設定を可能とするファイル分割プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
前記課題を解決するため本発明のファイル分割処理方法は、複数のレコードを有する入力ファイルについて、ファイル分割手段が、キー値により識別されるレコード群毎に複数ファイルに分割するファイル分割処理方法であって、前記ファイル分割手段は、前記入力ファイルに含まれる各レコードのキー値に基づき、キー重複数を検出して、検出結果をキー重複数情報として前記各レコードに付加するレコード加工処理ステップと、前記キー重複数情報に基づき、任意に設定された分割数に応じて、各レコード群毎の出力先となる分割ファイルを示す出力先情報を各レコードに設定する出力先ファイル決定処理ステップと、前記出力先情報に基づき、各分割ファイルに各レコードを出力するレコード出力処理ステップとからなることを特徴とする。
また、前記出力先ファイル決定処理ステップは、前記キー重複数情報の値が大きいレコード群から順に、レコードの出力設定件数が小さい分割ファイルに割り当てることを特徴とする。
【０００６】
また、本発明のファイル分割プログラムは、複数のレコードを有する入力ファイルについて、キー値により識別されるレコード群毎に複数ファイルに分割する処理をコンピュータに実行させるファイル分割プログラムであって、前記入力ファイルに含まれる各レコードの主キーのキー値に基づき、キー重複数を検出して、検出結果をキー重複数情報として前記各レコードに付加するレコード加工処理と、前記キー重複数情報に基づき、任意に設定された分割数に応じて、各レコード群毎の出力先となる分割ファイルを示す出力先情報を各レコードに設定する出力先ファイル決定処理と、前記出力先情報に基づき、各分割ファイルに各レコードを出力するレコード出力処理とをコンピュータに実行させることを特徴とする。
また、前記出力先ファイル決定処理は、前記キー重複数情報の値が大きいレコード群から順に、レコードの出力設定件数が小さい分割ファイルに割り当てることを特徴とする。
【発明の効果】
【０００７】
以上の構成により本発明では、ノンユニークな主キーにより識別される複数のレコード群を、複数の分割ファイルに分割するファイル分割プログラムであって、主キーに基づきキー重複数情報を各レコードに付加し、キー重複数情報に基づき、予め設定された分割数に応じて、レコードの出力先を設定することとしたので、各レコード群を構成するレコードの数に偏りがあるファイルについても、レコード数を平準化した分割ファイルの生成が可能となる。また、分割処理毎に動的に出力先を設定することとしたため、キー値の分布が異なる複数のファイルや、処理毎にキー値の分布が変化するファイルについても、均等にファイル分割を行うことが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の一実施の形態に係るファイル分割プログラムについて、図面に基づき説明する。
図１は、本実施の形態に係るファイル分割プログラムを備えたメインフレームの概略構成を示すブロック図である。
メインフレーム１００は、ファイル分割プログラム１０１と入力情報格納領域１１０、作業領域１２０、出力情報格納領域１３０とを備える。メインフレーム１００に対しては、作業指示を行うＴＳＳ端末１４０が接続されている。
入力情報格納領域１１０には、ファイル分割プログラム１０１の処理対象となる入力ファイル１１１と、ファイル分割プログラム１０１が出力する分割ファイル１３１の分割数が設定されたパラメータファイル１１２とが格納されている。
作業領域１２０には、ファイル分割プログラム１０１が、入力ファイル１１１に対しキー重複数情報及び出力先情報を付加した作業用ファイル１２１を一時格納する。
出力情報格納領域１３０には、ファイル分割プログラム１０１が、入力ファイル１１１に基づき生成した分割ファイル１３１を格納する。
【０００９】
図２は、本実施の形態に係るファイル分割プログラム１０１の行う分割ファイル出力処理手順の概要を示すフローチャートである。
まず、ファイル分割プログラム１０１は、ＴＳＳ端末１４０からの作業指示を受付け、ＴＳＳ端末１４０により指定されたパラメータファイル１１２から、分割ファイル１３１の分割数を取得する（ステップ２０１）。
次に、後述するレコード加工処理により、入力ファイル１１１の各レコードについて、主キーのキー値が重複しているレコード数をキー重複数情報として付加する（ステップ２０２）。
キー重複数情報を付加した後、後述する出力先ファイル決定処理により、キー重複数情報がキー重複数情報が最も大きいものから順に、出力先の割り当て件数が最も少ない分割ファイル１３１に出力先を割り当て、その出力先情報を作業用ファイル１２１に付加する（ステップ２０３）。
最後に、ファイル出力処理として、ステップ２０３において付加した出力先情報に従い、作業用ファイル１２１の各レコードを該当する分割ファイル１３１に出力する（ステップ２０４）。
【００１０】
図３は、図２のステップ２０２に示すレコード加工処理の詳細を示すフローチャートである。
レコード加工処理では、まず、キー重複数情報を「０」に初期化し（ステップ３０１）、入力ファイル１１１よりレコードを１件読み込み（ステップ３０２）、レコードが正しく読込めたか否かを判定する（ステップ３０３）。
レコードが正しく読込めた場合には、読み込んだレコードを作業用ファイル１２１に追加する（ステップ３０４）。
追加したレコードの主キーのキー値と、前回追加したレコードの主キーのキー値とを比較し（ステップ３０５）、双方のキー値が同値の場合には、キー重複数情報を１加算して（ステップ３０６）して、次のレコードの読み込みを行う（ステップ３０２）。
一方、双方のキー値が異なる場合には、キー値が同値である全てのレコードに対して、キー重複数情報を付加し（ステップ３０７）、キー重複数情報を再度初期化した後（ステップ３０１）、次のレコードの読み込みを行う（ステップ３０２）。
以上の処理により、入力ファイル１１１に含まれるレコードにキー重複数情報を付加したレコードを作業用ファイル１２１に出力する。
【００１１】
以上説明したレコード加工処理について具体例を用いて説明する。
図４は、レコード加工処理の処理対象としての入力ファイルのデータ構造の一例を示す図である。
本例に示す入力ファイル４００は、各レコード４０１〜４０６のそれぞれについて、主キー４１１，副キー４１２，データ部４１３を有している。
主キー４１１は、入力ファイル４００内で、レコード群を識別するノンユニークな値を示す。本実施の形態では、主キー４１１のキー値が共通のレコード群毎に各分割ファイルに格納する。
副キー４１２は、入力ファイル４００内で、各レコードを識別するユニークな値を示す。
【００１２】
図５は、図４に示す入力ファイル４００に基づき、各レコードの出力された作業用ファイルのデータ構造の一例を示す図である。
本例に示す作業用ファイル５００は、入力ファイル４００に含まれる各レコード４０１〜４０６に対応するレコード５０１〜５０６が格納されている。各レコード５０１〜５０６は、入力ファイル４００のデータ構造に対応する主キー５１１，副キー５１２，データ部５１３と、レコード加工処理により付加されたキー重複数情報５１４とを有している。
キー重複数情報５１４は、主キーのキー値が同値のレコード数を示すものである。
本例では、レコード５０１，５０２の主キー５１１のキー値が共に「１００００００００１」であるため、キー重複数情報５１４の値が「２」となっている。同様にレコード５０３〜５０５は、主キー５１１のキー値が共に「２００００００００１」であるため、キー重複数情報５１４の値が「３」となっている。レコード５０６は、主キーのキー値が「３００００００００１」となるレコードが他に無いため、キー重複数情報５１４の値が「１」となっている。
【００１３】
以上の処理により、キー重複数情報の付加された作業用ファイル１２１に対し、以下の出力先ファイル決定処理を行う。
図６は、図２のステップ２０３に示す出力先ファイル決定処理の詳細を示すフローチャートである。
本処理では、まず、分割ファイル毎の出力件数情報を「０」に初期化し（ステップ６０１）、最大キー重複数情報を設定し（ステップ６０２）、処理カウンタを「０」に初期化する（ステップ６０３）。
次に、作業用ファイルからレコードを１件読み込み（ステップ６０４）、処理カウンタを「１」加算する（ステップ６０５）。
加算した結果、処理カウンタの値が作業用ファイル１２１のレコード件数を超えたか否かを判定し（ステップ６０６）、作業用ファイル１２１のレコード件数以下の場合には、処理対象レコードに含まれるキー重複数情報と、ステップ６０２で設定した最大キー重複数情報とを比較し(ステップ６０７)、双方が同値であれば、さらに前回読み込んだレコードの主キーのキー値と、今回読み込んだレコードの主キーのキー値を比較する（ステップ６０８）。
比較の結果、双方が同値であれば、前回の処理対象レコードに対して設定した出力先情報を、今回の処理対象レコードの出力先情報に設定する（ステップ６０９）。一方、双方のキー値が異なる場合には、レコードの出力件数が最小となっている分割ファイル１３１を、今回の処理対象レコードの出力先情報に設定する（ステップ６１０）。
処理対象レコードに対して出力先情報を設定した後、設定した出力先情報に示す分割ファイル１３１の出力件数を「１」加算して（ステップ６１１）、次のレコードを読み込む（ステップ６０４）。ステップ６０７において、双方のキー重複数情報の値が異なる場合にも、次のレコードを読み込む（ステップ６０４）。
一方、ステップ６０６において、処理カウンタの値が作業用ファイル１２１のレコード件数を超えた場合には、最大キー重複数情報を「１」減算し（ステップ６１２）、最大キー重複情報の値が「０」となったか否かを判定し（ステップ６１３）、「０」となった場合には処理を終了する。一方、最大キー重複情報の値が「０」以外の場合には、処理カウンタを「０」に初期化して（ステップ６０３）、次のレコードを読み込む（ステップ６０４）。
以上の処理により、作業用ファイル１２１に含まれるレコードに出力先情報を設定する。
【００１４】
以上説明した出力先ファイル決定処理について具体例を用いて説明する。
なお、以下の具体例では、パラメータファイル１１２に設定された分割数を「２」と仮定する。
図７は、図５に示す作業用ファイル５００に対し、出力先情報を設定した例を示す図である。
本例に示す作業用ファイル７００に含まれる各レコード７０１〜７０２には、主キー７１１，副キー７１２，データ部７１３，キー重複数情報７１４と、出力先ファイル決定処理により付加された出力先情報７１５とを有している。
出力先情報７１５は、各レコード７０１〜７０６の出力先となる分割ファイルの識別情報が格納されており、本例では、パラメータファイル１１２に設定された分割数が「２」であることから、「１」又は「２」の値が設定されている。
本例の場合、最大キー重複数情報が「３」であるため、キー重複数情報に「３」が設定されているレコード７０３〜７０５の出力先情報に「１」が設定され、分割ファイル１の出力件数が「３」、分割ファイル２の出力件数が「０」となる。
次に、キー重複数情報に「２」が設定されているレコード７０１，７０２については、分割ファイル１の出力件数が「３」で、分割ファイル２の出力件数が「０」で、分割ファイル２の出力件数が小さいため、出力先情報に「２」が設定され、分割ファイル２の出力件数が「２」となる。
最後にキー重複数情報に「１」が設定されているレコード７０６については、分割ファイル１の出力件数が「３」で、分割ファイル２の出力件数が「２」で、分割ファイル２の出力件数が小さいため、出力先情報に「２」が設定され、分割ファイル２の出力件数が「３」となる。
【００１５】
図８は、図７の作業用ファイル７００に設定された出力先情報に基づき、各分割ファイルにレコードを出力した結果を示す図である。
分割ファイル８１０，８２０には、それぞれのレコード８１１〜８１３，８２１〜８２３について、図４に示す入力ファイル４００と同様に、主キー８０１，副キー８０２，データ部８０３を有する。
分割ファイル８１０は、図７に示す出力先情報７１５に「１」が設定されたレコード７０３〜７０５に対応するレコード８１１〜８１３を有する。
分割ファイル８２０は、図７に示す出力先情報７１５に「２」が設定されたレコード７０１，７０２，７０６に対応するレコード８１１〜８１３を有する。
各分割ファイル８１０，８２０は、それぞれ主キーの共通するレコードが含まれている。
【００１６】
以上のように、本実施の形態に係るファイル分割プログラムは、主キーの共通するレコード群毎に、予め設定された数のファイルに分割する場合に、各レコード群のレコード件数に応じて出力先となるファイルを決定することとしたので、各レコード群にレコード件数の偏りがある場合であっても、各分割ファイルに対しレコード件数を平準化することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態に係るファイル分割プログラムを備えたメインフレームの概略構成を示すブロック図である。
【図２】本発明の一実施の形態に係るファイル分割プログラムによる分割ファイル出力処理手順を示すフローチャートである。
【図３】レコード格納処理の詳細を示すフローチャートである。
【図４】入力ファイルのデータ構造の一例を示す図である。
【図５】図４の入力ファイルの各レコードに対してキー重複数情報を付加した作業用ファイルのデータ構造の一例を示す図である。
【図６】出力先決定処理の詳細を示すフローチャートである。
【図７】図５の作業用ファイルに対して出力先情報を付加した作業用ファイルのデータ構造の一例を示す図である。
【図８】図７に示す作業用ファイルの出力先情報に基づき各レコードを出力した分割ファイルの一例を示す図である。
【符号の説明】
【００１８】
１００  メインフレーム、１０１  ファイル分割プログラム、１１０  入力情報格納領域、１１１  入力ファイル、１２０  作業領域、１２１  作業用ファイル、１３０  出力情報格納領域、１３１  分割ファイル、１４０  ＴＳＳ端末。
【図１】
2007086951.tif 000003
【図２】
2007086951.tif 000004
【図３】
2007086951.tif 000005
【図４】
2007086951.tif 000006
【図５】
2007086951.tif 000007
【図６】
2007086951.tif 000008
【図７】
2007086951.tif 000009
【図８】
2007086951.tif 000010