(57)【特許請求の範囲】
【請求項１】
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを格納する入力ファイル格納部と、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、一つのレコードに戻して分離レコード用バッファに格納する格納処理部と
を備えた入力ファイル処理装置。
【請求項２】
前記格納処理部は、
前記連続レコードにおけるレコードの連続性を保持したままで、それぞれの前記格納用バッファにレコードを格納する請求項１に記載の入力ファイル処理装置。
【請求項３】
前記入力ファイル処理装置は、さらに、
複数の変換処理部を備え、
前記複数の変換処理部は、並列処理によって、
レコードが格納された複数の前記格納用バッファと、前記一つのレコードが格納された前記分離レコード用バッファとを対象として、レコードのデータ形式を変換する請求項２に記載の入力ファイル処理装置。
【請求項４】
前記格納処理部は、
レコードが格納された複数の前記格納用バッファと、前記一つのレコードが格納された前記分離レコード用バッファとに、前記連続レコードにおけるレコードの連続性を保持する通番を設定し、
前記入力ファイル処理装置は、さらに、
複数の変換処理部の各変換処理部によってデータ形式が変換されたレコードを、前記格納処理部によって設定された前記通番に従って出力する出力処理部を備えた請求項３に記載の入力ファイル処理装置。
【請求項５】
前記入力ファイル処理装置は、さらに、
前記複数の項目値ごとに変換すべきデータ形式が定義された出力先定義情報を格納する出力先定義情報格納部を備え、
それぞれの前記変換処理部は、
前記出力先定義情報を参照して、レコードのデータ形式を変換する請求項４に記載の入力ファイル処理装置。
【請求項６】
コンピュータに、
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを記憶装置に格納する処理と、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファに格納する処理と
を実行させるための入力ファイル処理プログラム。
【請求項７】
コンピュータが、
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを記憶装置に格納し、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファに格納する入力ファイル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力ファイル処理装置、入力ファイル処理プログラム及び入力ファイル処理方法に関する。
【背景技術】
【０００２】
特許文献１では、可変長の入力ファイルを読み出して、出力先のデータ形式に変換する変換処理を実行する。そして、この変換処理において各項目値の出現位置を事前に探索して「項目情報テーブル」として格納し、この項目値の出現位置情報を用いて、列単位又は行単位にデータ変換処理を複数並列に実行することで処理の並列度を向上し、変換処理の高速実行を実現する。特許文献１では、項目値の出現位置を特定した後のデータ変換処理の並列実行を可能とするものであるが、出現位置探索処理は並列に処理できないため、この出現位置探索処理が処理のネックとなる場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１６３９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この発明は、項目値の出現位置の特定を必要としない方式の提供を目的とする。
【課題を解決するための手段】
【０００５】
この発明の入力ファイル処理装置は、
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを格納する入力ファイル格納部と、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、一つのレコードに戻して分離レコード用バッファに格納する格納処理部とを備える。
【０００６】
前記格納処理部は、
前記連続レコードにおけるレコードの連続性を保持したままで、それぞれの前記格納用バッファにレコードを格納する。
【０００７】
前記入力ファイル処理装置は、さらに、
複数の変換処理部を備え、
前記複数の前記変換処理部は、並列処理によって、
レコードが格納された複数の前記格納用バッファと、前記一つのレコードが格納された前記分離レコード用バッファとを対象として、レコードのデータ形式を変換する。
【０００８】
前記格納処理部は、
レコードが格納された複数の前記格納用バッファと、前記一つのレコードが格納された前記分離レコード用バッファとに、前記連続レコードにおけるレコードの連続性を保持する通番を設定し、
前記入力ファイル処理装置は、さらに、
複数の変換処理部の各変換処理部によってデータ形式が変換されたレコードを、前記格納処理部によって設定された前記通番に従って出力する出力処理部を備えた。
【０００９】
前記入力ファイル処理装置は、さらに、
前記複数の項目値ごとに変換すべきデータ形式が定義された出力先定義情報を格納する出力先定義情報格納部を備え、
それぞれの前記変換処理部は、
前記出力先定義情報を参照して、レコードのデータ形式を変換する。
【００１０】
この発明の入力ファイル処理プログラムは、
コンピュータに、
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを記憶装置に格納する処理と、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファに格納する処理と
を実行させる。
【００１１】
この発明の入力ファイル処理方法は、
コンピュータが、
区切られて連続する複数の項目値からなるレコードを要素とするとともに、このレコードごとに区切られて連続する連続レコードが記載された入力ファイルを記憶装置に格納し、
前記連続レコードを複数の格納用バッファに格納すると共に、二つの格納用バッファにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファに格納する。
【発明の効果】
【００１２】
この発明により、項目値の出現位置の特定を必要としない方式を提供できる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１の図で、入力ファイル処理装置１００のブロック図。
【図２】実施の形態１の図で、入力ファイル１１１を示す図。
【図３】実施の形態１の図で、レコードテーブル１０を示す図。
【図４】実施の形態１の図で、出力先定義情報１６１を示す図。
【図５】実施の形態１の図で、バッファへのデータ格納を示す図。
【図６】実施の形態１の図で、入力ファイル処理装置１００の動作概要を示すフローチャート。
【図７】実施の形態１の図で、図２の入力ファイル１１１のレコードをバッファへ格納することを示す図。
【図８】実施の形態１の図で、入力ファイル処理装置１００の動作詳細を示すフローチャート。
【図９】実施の形態１の図で、分離レコードを示す図。
【図１０】実施の形態２の図で、入力ファイル処理装置１００のハードウェア構成を示す図。
【図１１】実施の形態２の図で、入力ファイル処理プログラムのフローチャート。
【図１２】実施の形態２の図で、入力ファイル処理方法のフローチャート。
【発明を実施するための形態】
【００１４】
実施の形態１．
【００１５】
＊＊＊構成の説明＊＊＊
図１を参照して、入力ファイル１１１から読み出した連続レコード１１２を、出力先のデータ形式に変換して書き込むファイル変換方式を実行する入力ファイル処理装置１００の構成を説明する。図１において、入力ファイル処理装置１００は、入力ファイル格納部１１０、格納処理部１２０、バッファ管理部１３０、入力用キュー１４０、変換処理部１５０ａ〜１５０ｃ、出力先定義情報格納部１６０、出力用キュー１７０、出力処理部１８０を備えている。出力処理部１８０はデータ書込み装置２００に結果を出力する。
【００１６】
＜入力ファイル格納部１１０＞
入力ファイル格納部１１０は、連続レコード１１２が記載された入力ファイル１１１を格納する。
図２は入力ファイル１１１を示す図である。図２に示すように、連続レコード１１２とは、区切られて連続する複数の項目値からなるレコード１１を要素とするとともに、このレコード１１ごとに区切られて連続する情報である。入力ファイル１１１ではレコードの区切りは改行コードであり、レコードは複数の項目値で区切られる。各項目値の長さは可変長である。
図３は入力ファイル１１１のもとになるレコードテーブル１０を示すが、入力ファイル１１１はレコードテーブル１０から作成されたデータである。レコードテーブル１０は、行番号で示される各行がレコード１１である。各列の項目１〜項目３に対応して、１行目のレコードではＡＤＣＤＥ，１２３，ＺＹＸＷＶの各項目値が記載されている。他のレコードも同様である。入力ファイル１１１は、レコードテーブル１０の１行目のレコード、２行目のレコード・・・が改行コードで区切られ、レコードテーブル１０のレコード順にレコードが連続している。
【００１７】
＜格納処理部１２０＞
格納処理部１２０は、連続レコード１１２を複数の格納用バッファ１３１ａに格納する。格納処理部１２０は、後述するが、二つの格納用バッファ１３１ａにまたがって格納される一つのレコード１１である分離レコード１１３を、一つのレコード１１に戻して分離レコード用バッファ１３１ｂに格納する。格納用バッファ１３１ａにレコード１１を格納する際には、格納処理部１２０は、連続レコード１１２におけるレコード１１の連続性を保持したままで、それぞれの格納用バッファ１３１ａにレコード１１を格納する。また格納処理部１２０は、レコード１１が格納された複数の格納用バッファ１３１ａと、一つのレコードに戻された分離レコード１１３が格納された分離レコード用バッファ１３１ｂとに、連続レコード１１２におけるレコード１１の連続性を保持する通し番号である通番１３１−１を設定する。
【００１８】
＜バッファ管理部１３０＞
バッファ管理部１３０は、格納処理部１２０及び変換処理部１５０ａ，１５０ｂ、１５０ｃの要求に応じて、バッファ１３１を提供する。ここで「バッファ」とは、複数のレコード１１を格納できるメモリ領域を意味する。この実施の形態では、バッファ１３１には格納用バッファ１３１ａ，分離レコード用バッファ１３１ｂ，変換結果用バッファ１３１ｃの３種類が登場する。
（１）格納用バッファ１３１ａは、複数のレコード１１が格納されるバッファである。
（２）分離レコード用バッファ１３１ｂは、２つの格納用バッファ１３１ａに分離して格納される一レコードを、分離していない一つのレコードとして格納するバッファである。（３）変換結果用バッファ１３１ｃは、変換処理部１５０ａ，１５０ｂ等がデータ形式を変換したレコードを格納するバッファである。
【００１９】
＜入力用キュー１４０＞
入力用キュー１４０は、格納処理部１２０から格納用バッファ１３１ａ，分離レコード用バッファ１３１ｂが入力されるキューである。
【００２０】
＜変換処理部１５０ａ，１５０ｂ等＞
変換処理部１５０ａ，１５０ｂ、１５０ｃのそれぞれは、互いの並列処理により、レコード１１が格納された複数の格納用バッファ１３１ａと、一つのレコードが格納された分離レコード用バッファ１３１ｂとを対象として、レコード１１のデータ形式を変換する。なお本実施の形態では変換処理部１５０ａ，１５０ｂ、１５０ｃの３つを示しているが例示である。変換処理部は２つでもよいし、４つ以上でもよい。
【００２１】
＜出力先定義情報格納部１６０＞
出力先定義情報格納部１６０は、複数の項目値ごとに変換すべきデータ形式が定義された出力先定義情報１６１を格納する。変換処理部１５０ａ，１５０ｂ、１５０ｃは、出力先定義情報１６１を参照して、レコード１１のデータ形式を変換する。
図４に出力先定義情報１６１を示す。項目番号１６１ａの１，２，３は、それぞれ図３のレコードテーブル１０における項目１、項目２、項目３に対応する。項目番号１６１ｂのデータ型は、項目値の変換すべきデータ型を示す。項目１はデータが文字型、項目２はデータが数値型、項目３はデータが文字型のデータ形式に変換すべきことを示している。データ長１６１ｃは、文字型のデータ長を示す。精度は数値型の精度を示す。
【００２２】
＜出力用キュー１７０＞
出力用キュー１７０は、各変換処理部によってデータ形式が変換されたデータが格納された変換結果用バッファ１３１ｃが入力されるキューである。
【００２３】
＜出力処理部１８０＞
出力処理部１８０は、複数の変換処理部１５０ａ等の各変換処理部によってデータ形式が変換されたレコードを、格納処理部１２０によって設定された通番１３１−１に従って出力する。
【００２４】
＜データ書込み装置２００＞
データ書込み装置２００は、出力処理部１８０から渡されたデータを記憶装置に書き込む。
【００２５】
＊＊＊動作の説明＊＊＊
次に図５、図６を参照して、入力ファイル処理装置１００の動作の概要を説明する。
【００２６】
Ｓ１１において、格納処理部１２０はバッファ管理部１３０に要求を送り、バッファ管理部１３０から格納用バッファ１３１ａであるバッファＡを取得する。バッファＡは「先バッファ」とも呼ぶ。なおバッファ１３１はヘッダ部とデータ部とを有する。格納処理部１２０はバッファＡのデータ部に、入力ファイル１１１の先頭から順にレコード１１を格納する。
【００２７】
Ｓ１２において、格納処理部１２０は、バッファＡのデータ部の末尾から「最後の改行コード」を探索し、バッファＡの先頭から「最後の改行コード」までを有効データ長としてバッファＡのヘッダ部に設定する。図７（ａ）は図２の入力ファイル１１１からデータを読み込んだバッファＡを示す。図７（ａ）の例では、格納処理部１２０は、バッファＡの先頭である「Ａ」から「最後の改行コード」までを有効データ長としてバッファＡのヘッダ部に設定する。
【００２８】
Ｓ１３において、格納処理部１２０は、バッファ管理部１３０から格納用バッファ１３１ａであるバッファＢを取得し、データ部にデータを書き込む。バッファＢは「後バッファ」とも呼ぶ。つまり、分離レコードの前半を持つバッファを先バッファ、分離レコードの後半を持つバッファを後バッファと呼ぶ。図７（ｂ）は図２の入力ファイル１１１からデータを読み込んだバッファＢを示す。図７（ｂ）の例では、格納処理部１２０は、バッファＢの最初の改行コードの直後の「ＯＰＱＲＳ」の「Ｏ」から「最後の改行コード」までを有効データ長としてバッファＢのヘッダ部に設定する。最初のバッファＡ以外の他の格納用バッファ１３１ａでは、有効データ長の最初のデータは最初の改行コードの直後のデータである。
【００２９】
Ｓ１４において、格納処理部１２０は、分離レコード用バッファ１３１ｂであるバッファＣを新たに取得すると共に、バッファＡ（先バッファ）の最後の改行コード以降、バッファＢ（後バッファ）の先頭の改行コードまでを、新たに取得したバッファＣのデータ部に書き込む。図７（ｃ）は、格納処理部１２０が、図７（ａ）（ｂ）における分離レコード「ＭＮ、９０１２、ＮＭ」を、一つのレコードに戻してバッファｃに格納した状態を示す。「ＭＮ、９０１２、ＮＭ」は図３の４行目のレコードである。
【００３０】
Ｓ１５において、格納処理部１２０は、バッファＡ、バッファＣをエンキューする。格納処理部１２０は以下同様の処理を行う。つまりバッファＢが先バッファになり、新たに後バッファとしてバッファＤを取得し、同様の処理を繰り返す。
【００３１】
図８を参照して、入力ファイル処理装置１００の詳しい動作を説明する。以下の図８の説明では、最初の格納用バッファ１３１ａはバッファＡである。ヘッダ部には、１：通番、２：データ開始位置、３：有効データ長、４：エンキューフラグ、が設定され、データ部にはデータが設定される。
（１）ヘッダ部に「１：通番」等が設定されておらず、データ部にデータが設定された格納用バッファ１３１ａであるバッファＡをバッファＡ（：ｄ）と表記する。
（２）データ部にデータが設定されており、ヘッダ部に「２．データ開始位置」が設定された場合をバッファＡ（２：ｄ）と表記し、「１．通番」及び「３：有効データ長」が設定された場合をバッファＡ（１３：ｄ）のように表記する。
（３）また以下に述べる分離レコード用バッファ１３１ｂであるバッファＣ及びバッファＥではデータ部に他のバッファのデータ部に設定されたデータの一部をコピーしたコピーデータ（分離レコードが一レコードに戻されたもの）が設定される。バッファＣのデータ部にコピーデータが設定されたバッファＣをバッファＣ（：ｃｄ）のように表記する。
【００３２】
＜Ｓ１００＞
Ｓ１００において、入力処理が開始する。
【００３３】
Ｓ１０１において、格納処理部１２０は、処理待ちバッファ数ＮをＮ＝０にセットする。
【００３４】
（１回目のＳ１０２）
Ｓ１０２において、格納処理部１２０は、最初のバッファであるバッファＡをバッファ管理部１３０から取得する。
Ｓ１０３において、Ｎ＝０なので処理はＳ１０９に進む。
Ｓ１０９において、格納処理部１２０は入力ファイル１１１からバッファＡのデータ部にデータを読み込む。バッファＡはバッファＡ（：ｄ）となる。
Ｓ１１０において、格納処理部１２０は処理待ちバッファ数をインクリメントしてＮ＝１にする。
Ｓ１１１において、格納処理部１２０はＥＯＦかどうか判定する。この例ではＳ１１１はＮＯとする。処理はＳ１１４に進む。
Ｓ１１４において、格納処理部１２０は処理待ちバッファ数Ｎ＝２かどうか判定するがＮ＝１なので処理はＳ１０２に戻る。
【００３５】
（２回目のＳ１０２）
Ｓ１０２において、格納処理部１２０は、バッファ管理部１３０から二つ目のバッファであるバッファＢを取得する。
Ｓ１０３において、Ｎ＝１なので処理はＳ１０９に進む。
Ｓ１０９において、格納処理部１２０は入力ファイル１１１からバッファＢのデータ部にデータを読み込む。バッファＢはバッファＢ（：ｄ）となる。
Ｓ１１０において、格納処理部１２０は処理待ちバッファ数をインクリメントしてＮ＝２にする。
Ｓ１１１において、格納処理部１２０はＥＯＦかどうか判定する。この例ではＳ１１１はＮＯとする。処理はＳ１１４に進む。
Ｓ１１４において、格納処理部１２０は処理待ちバッファ数Ｎ＝２かどうか判定する。現在Ｎ＝２なので処理はＳ１１３に進む。
【００３６】
（先バッファのヘッダ処理）
Ｓ１１３において、格納処理部１２０は先バッファであるバッファＡの末尾から改行コードを探索し、「１．通番」、「３．有効サイズ」をバッファＡのヘッダ部に設定する。バッファＡはバッファＡ（１３：ｄ）となる。処理はＳ１０２に戻る。
【００３７】
（３回目のＳ１０２）
Ｓ１０２において、格納処理部１２０は、バッファ管理部１３０から分離レコード用バッファ１３１ｂであるバッファＣを取得する。
Ｓ１０３において、Ｎ＝２なので処理はＳ１０４に進む。
【００３８】
（エンキュー処理；バッファ＝Ａ，Ｂ，Ｃ、Ｎ＝２）
Ｓ１０４において、格納処理部１２０は先バッファであるバッファＡ（１３：ｄ）の最終改行コード以降、次の後バッファＢ（：ｄ）の先頭改行コードまでをバッファＣにコピーする。そして、バッファＣ（：ｃｄ）と、先バッファであるバッファＡ（１３：ｄ）のヘッダ部に「４．エンキューフラグ」を設定する。また格納処理部１２０はバッファＣに通番１３１−１とデータ有効長を設定する。バッファＡ、バッファＣは、バッファＡ（１３４：ｄ）、バッファＣ（１３４：ｃｄ）となる。
【００３９】
Ｓ１０５において、格納処理部１２０は、後バッファであるバッファＢ（：ｄ）の「２．開始位置」をバッファＢのヘッダ部に設定する。バッファＢはバッファＢ（２：ｄ）となる。
Ｓ１０６において、格納処理部１２０は、ＥＯＦを検出したバッファがあれば「４．エンキューフラグ」を設定する。
Ｓ１０７において、格納処理部１２０は、エンキューフラグを設定済のバッファを入力用キュー１４０にエンキューし、処理待ちバッファ数Ｎを１だけデクリメントしてＮ＝１にする。この場合、バッファＡ（１３４：ｄ）、バッファＣ（１３４：ｃｄ）が入力用キュー１４０にエンキューされる。Ｓ１０８において、ＥＯＦかどうかを判定する。この例では検出しないとし処理は１０２に戻る。
【００４０】
（４回目のＳ１０２）＜現在Ｎ＝１、現在のバッファはＢのみ＞
Ｓ１０２において、格納処理部１２０は、バッファ管理部１３０から四つ目のバッファＤを取得する。なおバッファＢはバッファＢ（２：ｄ）である。
Ｓ１０３において、Ｎ＝１なので処理はＳ１０９に進む。
Ｓ１０９において、格納処理部１２０は入力ファイル１１１からバッファＤのデータ部にデータを読み込む。バッファＤはバッファＤ（：ｄ）となる。
Ｓ１１０において、格納処理部１２０は処理待ちバッファ数をインクリメントしてＮ＝２にする。
Ｓ１１１において、格納処理部１２０はＥＯＦかどうか判定する。この例ではＳ１１１はＮＯとする。処理はＳ１１４に進む。
Ｓ１１４において、格納処理部１２０は処理待ちバッファ数Ｎ＝２かどうか判定する。現在Ｎ＝２なので処理はＳ１１３に進む。
【００４１】
（先バッファのヘッダ処理）
Ｓ１１３において、格納処理部１２０は先バッファであるバッファＢ（２：ｄ）の末尾から改行コードを探索し、「１通番」、「３．有効サイズ」をバッファＢのヘッダ部に設定する。バッファＢはバッファＢ（１２３：ｄ）となる。処理はＳ１０２に戻る。
【００４２】
（５回目のＳ１０２）＜現在、Ｎ＝２、バッファはＢ、Ｄ＞
Ｓ１０２において、格納処理部１２０は、バッファ管理部１３０から五つ目のバッファＥを取得する。
Ｓ１０３において、Ｎ＝２なので処理はＳ１０４に進む。
【００４３】
Ｓ１０４において、格納処理部１２０は先バッファＢ（１２３：ｄ）の最終改行コード以降、後バッファであるバッファＤの先頭改行コードまでを分離レコード用バッファ１３１ｂであるバッファＥにコピーし、バッファＥと、先バッファＢのヘッダ部に、「４．エンキューフラグ」を設定する。また格納処理部１２０はバッファＥに通番１３１−１とデータ有効長を設定する。バッファＢはバッファＢ（１２３４：ｄ）、バッファＥはバッファＥ（１３４：ｄ）となる。
【００４４】
Ｓ１０５において、格納処理部１２０は、バッファＤの「２．開始位置」をバッファＤのヘッダ部に設定する。バッファＤはバッファＤ（２：ｄ）となる。
Ｓ１０６において、格納処理部１２０は、ＥＯＦを検出したバッファがあれば「４．エンキューフラグ」を設定する。
Ｓ１０７において、格納処理部１２０は、「４．エンキューフラグ」を設定済のバッファを入力用キュー１４０にエンキューし、処理待ちバッファ数Ｎを１だけデクリメントしてＮ＝１にする。この場合、バッファＢ（１２３４：ｄ）、バッファＥ（１３４：ｃｄ）が入力用キュー１４０にエンキューされ、バッファＤ（２：ｄ）が処理待ちバッファ（Ｎ＝１）として残っている。
Ｓ１０８において、ＥＯＦかどうかを判定する。この例では検出しないとし処理は１０２に戻る。
【００４５】
（６回目のＳ１０２）＜現在、Ｎ＝１、バッファはＤのみ＞
Ｓ１０２において、格納処理部１２０は、バッファ管理部１３０から六つ目のバッファＦを取得する。以下の同様の処理が続く。以下の処理ではバッファＤが先バッファとなりバッファＦが後バッファとなる。
【００４６】
次に、図１を参照して、変換処理部１５０ａ等によるデータ変換処理を説明する。変換処理部１５０ａ、１５０ｂ、１５０ｃは、入力用キュー１４０からデータ（レコード）が格納されたバッファ１３１を取得する。バッファ１３１は格納用バッファ１３１ａ，分離レコード用バッファ１３１ｂである。後述のように変換処理部１５０ａ等は、格納用バッファ１３１ａか分離レコード用バッファ１３１ｂかの区別は行わずにこれらの変換処理を行う。格納用バッファ１３１ａや分離レコード用バッファ１３１ｂは互いに独立であり、個別に処理することができる。つまり図５に示すバッファＡ、Ｂ、Ｃはいずれも独立であり、個別に処理できる。よって変換処理部１５０ａ，１５０ｂ、１５０ｃはバッファＡ，Ｂ，Ｃを並列に処理できる。
【００４７】
変換処理部１５０ａ，１５０ｂ、１５０ｃは変換処理において、図４に示す出力先定義情報１６１を用いる。変換処理部１５０ａが図２のレコード「ＡＢＣＤ，１２３，ＺＹＸＷＶ」を変換する場合、例えば、ＡＢＣＤを文字型、１２３を数値型、ＺＹＸＷＶを文字型に変換する。変換処理部はバッファにおけるデータ変換すべきデータ範囲を、データ開始位置及び有効データ長から知ることができる。したがって、変換処理部１５０ａ等は、格納用バッファ１３１ａか分離レコード用バッファ１３１ｂかの区別は行わずに、これら格納用バッファ１３１ａ，分離レコード用バッファ１３１ｂの変換処理を行う。なお図８では格納用バッファ１３１ａ及び分離レコード用バッファ１３１ｂ（バッファＣ、Ｅ等）には「データ開始位置」を設定していないが、変換処理部１５０ａ等は「データ開始位置」の設定のないバッファはデータ部の先頭をデータ開始位置と判断して処理する。よってこれらのバッファには「データ開始位置」の設定がなくても変換処理部は変換できる。
【００４８】
各変換処理部はバッファのデータ変換を終了した場合、バッファ管理部１３０に変換結果用バッファ１３１ｃを要求し、変換したデータ（レコード）を変換結果用バッファ１３１ｃに格納する。なお、一つの変換結果用バッファ１３１ｃは、この変換結果用バッファ１３１ｃに格納しようとする一つの格納用バッファ１３１ａ、分離レコード用バッファ１３１ｂのデータ部の変換後のデータが格納できる容量である。変換結果用バッファ１３１ｃは格納用バッファ１３１ａまたは分離レコード用バッファ１３１ｂに一対一に対応する。各変換処理部は変換結果用バッファ１３１ｃに、対応する格納用バッファ１３１ａまたは分離レコード用バッファ１３１ｂの通番１３１−１を設定する。各変換処理部は、データを格納した変換結果用バッファ１３１ｃを出力用キュー１７０に入力する。
【００４９】
出力処理部１８０は、変換結果用バッファ１３１ｃに設定された通番１３１−１に従ってデータ書込み装置２００に出力する。出力処理部１８０は、通番１３１−１の連続しない変換結果用バッファ１３１ｃを、待機バッファ１８１として待機させる。つまり出力処理部１８０は通番１、通番２、通番４と変換結果用バッファ１３１ｃを受け取った場合、通番４の変換結果用バッファ１３１ｃを待機バッファ１８１として待機させる。通番３のバッファを受け取った場合、通番３のバッファをデータ書込み装置２００に出力後に、待機バッファ１８１である通番４のバッファをデータ書込み装置２００に出力する。このように、入力ファイル１１１のレコード順にデータ書込み装置２００にバッファを渡すために、早く処理が終わったバッファは待機バッファ１８１として待機させる。
なお、レコードの連続性を必要としない場合、つまり図３の各行のレコードテーブル１０において、行を任意に並べ替えても構わない場合、通番１３１−１は不要である。
【００５０】
図９は分離レコードを示す図である。図９（ａ）は通常の分離レコードであり、両側矢印で示す範囲が分離レコード用バッファ１３１ｂに格納される。図９（ｂ）はバッファＡがちょうど改行コードで終了した場合である。図９（ｂ）では両側矢印で示す範囲が分離レコード用バッファ１３１ｂに格納される。図９（Ｃ）はバッファＡがちょうどレコードの最後で終了し、改行コードがバッファＢの先頭となった場合である。図９（ｃ）では両側矢印で示す範囲が分離レコード用バッファ１３１ｂに格納される。なお、格納処理部１２０は、図９（ｂ）（ｃ）のようにレコードが２つのバッファまたがらない場合でも分離レコード用バッファ１３１ｂを用意して格納してもよい。あるいは、一つのレコードが２つのバッファにまたがらない場合、つまり、図９（ｂ）のように改行コードが先バッファの最後に存在する場合、あるいは図９（ｃ）のように改行コードが後バッファの最初に存在する場合は、分離レコード用バッファ１３１ｂを使用しなくてもよい。
【００５１】
＊＊＊効果の説明＊＊＊
（１）入力ファイル処理装置１００では、入力ファイル処理装置１００が２つのバッファにまたがるレコードを、一レコードに戻して分離レコード用バッファ１３１ｂに格納する。よって、必ずレコード単位に処理できるので項目値の出現位置を探索する必要がなくなる。このため処理の高速化を図ることができる。
（２）格納処理部１２０は、格納用バッファ１３１ａ，分離レコード用バッファ１３１ｂに通番を設定するので、レコードの順序保持が必要なファイルもレコードの順序を保持した上でデータ形式を変換できる。
（３）格納処理部１２０は、レコードが２つのバッファにまたがらない場合は、分離レコード用バッファ１３１ｂを用意しなくともよいので処理すべきバッファが減り、処理をより迅速化できる。
【００５２】
実施の形態２．
入力ファイル処理装置１００のハードウェア構成例を図１０を参照して説明する。入力ファイル処理装置１００はコンピュータである。入力ファイル処理装置１００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース９０５は、入力装置９０７に接続されている。ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００５３】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００５４】
補助記憶装置９０２には、図１０に示す入力ファイル格納部１１０、格納処理部１２０、バッファ管理部１３０、入力用キュー１４０、変換処理部１５０ａ，１５０ｂ、１５０ｃ、出力先定義情報格納部１６０、出力用キュー１７０、出力処理部１８０（以下、入力ファイル格納部１１０〜出力処理部１８０をまとめて「部」と表記する）の機能を実現するプログラムが記憶されている。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。図１０では、１つのプロセッサ９０１が図示されているが、入力ファイル処理装置１００が複数のプロセッサ９０１を備えていてもよい。そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００５５】
「部」を「サーキットリー」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【００５６】
なお実施の形態１に示した入力ファイル処理装置１００の各部の動作は、入力ファイル処理プログラム、あるいは入力ファイル処理方法として把握することもできる。
図１１、図１２はそれぞれ入力ファイル処理プログラム、入力ファイル処理方法のフローチャートである。図１１に示すように、入力ファイル処理プログラムは、コンピュータである入力ファイル処理装置１００に、連続レコードが記載された入力ファイル１１１を記憶装置に格納する処理と、連続レコードを複数の格納用バッファ１３１ａに格納すると共に、二つの格納用バッファ１３１ａにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファ１３１ｂに格納する処理とを実行させる。図１２に示すように、入力ファイル処理方法は、コンピュータが、連続レコードが記載された入力ファイル１１１を記憶装置に格納し、連続レコードを複数の格納用バッファ１３１ａに格納すると共に、二つの格納用バッファ１３１ａにまたがって格納される一つのレコードである分離レコードを、分離レコード用バッファ１３１ｂに格納する。
【符号の説明】
【００５７】
１００  入力ファイル処理装置、１１０  入力ファイル格納部、１１１  入力ファイル、１２０  格納処理部、１３０  バッファ管理部、１３１  バッファ、１３１−１  通番、１３１ａ  格納用バッファ、１３１ｂ  分離レコード用バッファ、１３１ｃ  変換結果用バッファ、１４０  入力用キュー、１５０ａ，１５０ｂ，１５０ｃ  変換処理部、１６０  出力先定義情報格納部、１６１  出力先定義情報、１７０  出力用キュー、１８０  出力処理部、１８１  待機バッファ、２００  データ書込み装置。
【図１】
0006383289.tif 000002
【図２】
0006383289.tif 000003
【図３】
0006383289.tif 000004
【図４】
0006383289.tif 000005
【図５】
0006383289.tif 000006
【図６】
0006383289.tif 000007
【図７】
0006383289.tif 000008
【図８】
0006383289.tif 000009
【図９】
0006383289.tif 000010
【図１０】
0006383289.tif 000011
【図１１】
0006383289.tif 000012
【図１２】
0006383289.tif 000013