(57)【要約】【課題】複数のHEX形式ファイルをマージ処理するマージ処理方法およびその方法を用いたマージ処理装置を提供。【解決手段】マージ処理を実施するソフトウェア18を備えたマージ処理装置14は、HEX形式でデータを格納した複数の入力ファイルからデータを順次読み出してメモリ16上の内部バッファ24に格納するもので、さらに属性用バッファ26をメモリ16に確保して、内部バッファ24におけるデータを格納したアドレスに対応する、属性用バッファ26のアドレスに、データ格納を示す属性フラグを格納して、ギャップデータを容易に格納することができる。【選択図】図１
2005284932.tif 000002
【特許請求の範囲】
【請求項１】
HEX形式でデータを格納した複数の入力ファイルから前記データを有するデータレコードを順次読み出す読み出し工程と、
前記読み出したデータを、メモリ上の内部バッファに格納するデータ格納工程とを含み、
前記内部バッファから前記データを順次取り出して出力ファイルを作成するHEX形式ファイルマージ処理方法において、該方法は、
前記内部バッファの各アドレスに対応したアドレスを有する属性用バッファをメモリに確保する属性用バッファ確保工程と、
前記内部バッファの所定のアドレスに前記データが格納されたか否かを示す属性フラグを、前記所定のアドレスに対応する前記属性用バッファのアドレスに格納する属性フラグ格納工程とを含むことを特徴とするHEX形式ファイルマージ処理方法。
【請求項２】
請求項１に記載のHEX形式ファイルマージ処理方法において、前記属性フラグ格納工程は、前記所定のアドレスに前記データを格納する場合には、前記対応する属性用バッファのアドレスに属性フラグとしてオンフラグを格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項３】
請求項２に記載のHEX形式ファイルマージ処理方法において、前記属性フラグ格納工程は、前記所定のアドレスに前記データを格納しない場合には、前記対応する属性用バッファのアドレスに属性フラグとしてオフフラグを格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項４】
請求項２に記載のHEX形式ファイルマージ処理方法において、該方法は、前記属性フラグ格納工程の開始時に、前記属性用バッファをリセットして、すべてのアドレスに属性フラグとしてオフフラグを格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項５】
HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、該入力ファイルから前記データおよび絶対アドレスを有するデータレコードを順次読み出す読み出し工程を含むHEX形式ファイルマージ処理方法において、該方法は、
前記読み出し工程で取り出した前記入力ファイルのそれぞれに対して、該入力ファイルが有するデータレコードのすべてに基づいてファイル情報を取り出してファイル情報構造体を作成してメモリ上の構造体用バッファに格納するファイル情報構造体格納工程と、
前記構造体用バッファにおける複数の前記ファイル情報構造体を、それぞれの前記ファイル情報に応じて並べ替えてメモリ上の構造体ソート用バッファにソートして格納する構造体ソート工程とを含み、
前記構造体ソート用バッファから前記ファイル情報構造体を順次取り出し、該ファイル情報構造体の前記ファイル情報に応じて、前記複数の入力ファイルから前記データを読み出して出力ファイルを作成することを特徴とするHEX形式ファイルマージ処理方法。
【請求項６】
請求項５に記載のHEX形式ファイルマージ処理方法において、前記ファイル情報構造体格納工程は、前記入力ファイルにおけるデータレコードのすべてについて、それぞれの絶対アドレスを互いに比較して、最小の絶対アドレスを検出して開始アドレスとし、最大の絶対アドレスを検出して終了アドレスとして、前記開始アドレスおよび前記終了アドレスを含む前記ファイル情報構造体を作成することを特徴とするHEX形式ファイルマージ処理方法。
【請求項７】
請求項６に記載のHEX形式ファイルマージ処理方法において、前記構造体ソート工程は、前記構造体用バッファから前記ファイル情報構造体を順次取り出し、該ファイル情報構造体をその前記開始アドレスの昇順に並べ替えて前記構造体ソート用バッファにソートして格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項８】
請求項７に記載のHEX形式ファイルマージ処理方法において、前記構造体ソート工程は、すでに前記構造体ソート用バッファに格納されている第１のファイル情報構造体を順次取り出して、第１のファイル情報構造体の前記開始アドレスおよび前記終了アドレスで示される第１のアドレス範囲と、今回格納する第２のファイル情報構造体の前記開始アドレスおよび前記終了アドレスで示される第２のアドレス範囲とを比較するアドレス範囲比較工程を含み、
該アドレス範囲比較工程は、第２のアドレス範囲が第１のアドレス範囲の全範囲と重複する場合、第１のファイル情報構造体を前記構造体ソート用バッファから削除する削除工程と、
第２のアドレス範囲が第１のアドレス範囲の一部と重複する場合、第１のファイル情報構造体の前記開始アドレスおよび前記終了アドレスを、重複するアドレス範囲を除くように変更する変更工程とを含み、
第２のアドレス範囲の前記開始アドレスが、取り出した第１のアドレス範囲の前記終了アドレスを超えたとき、次の第１のファイル情報構造体を取り出さずに終了することを特徴とするHEX形式ファイルマージ処理方法。
【請求項９】
請求項８に記載のHEX形式ファイルマージ処理方法において、該方法は、
前記構造体ソート工程が終了した後、前記構造体ソート用バッファから前記ファイル情報構造体を順次取り出し、一つ前に取り出した第５のファイル情報構造体と今回取り出した第６のファイル情報構造体とを比較して第５のファイル情報構造体と第６のファイル情報構造体との間のギャップを検出するギャップ検出工程を含み、
該ギャップ検出工程は、ギャップを検出した場合、ギャップデータ構造体を作成して前記構造体ソート用バッファにおける第５のファイル情報構造体と第６のファイル情報構造体との間に挿入して格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項１０】
請求項９に記載のHEX形式ファイルマージ処理方法において、前記ギャップ検出工程は、第５のファイル情報構造体における第５の終了アドレスと第６のファイル情報構造体における第６の開始アドレスとが連続でないギャップを検出した場合、第５の終了アドレスの一つ後の絶対アドレスをギャップ開始アドレスとし、第６の開始アドレスの一つ前の絶対アドレスをギャップ終了アドレスとして、前記ギャップ開始アドレスおよび前記ギャップ終了アドレスからギャップデータ構造体を作成することを特徴とするHEX形式ファイルマージ処理方法。
【請求項１１】
HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、前記データおよび絶対アドレスを有するデータレコードを順次読み出す読み出し工程を含むHEX形式ファイルマージ処理方法において、該方法は、
前記データレコードからデータ情報を取り出して、前記絶対アドレスが連続するような配列で前記データを格納する連続データバッファ、および該連続データバッファの先頭の絶対アドレスを示す開始アドレスを含むデータ情報構造体をメモリ上に格納するデータ情報構造体格納工程と、
前記メモリにリンクトリストを確保し、前記データ情報構造体のポインタを取り出して前記リンクトリストに前記開始アドレスの昇順に登録する登録工程とを含み、
前記リンクトリストから前記データ情報構造体のポインタを順次取り出して、該ポインタに応じたデータ情報構造体の連続データバッファおよび開始アドレスに応じて出力ファイルを作成することを特徴とするHEX形式ファイルマージ処理方法。
【請求項１２】
請求項１１に記載のHEX形式ファイルマージ処理方法において、前記データ情報構造体格納工程は、すでに前記メモリに格納されている第７のデータ情報構造体を順次取り出して、第７のデータ情報構造体の第７の開始アドレスおよび第７の連続データバッファのバッファサイズで示される第７のアドレス範囲を取り出し、今回格納する第８のデータレコードから第８の絶対アドレスおよび第８のデータを取り出して、第７のアドレス範囲と第８の絶対アドレスとを比較するデータ情報比較工程を含み、
該データ情報比較工程は、第７のアドレス範囲において第８の絶対アドレスが重複するか否かを判定する重複判定工程と、
第７のアドレス範囲の前後に第８の絶対アドレスが連続するか否かを判定する連続判定工程とを含み、
前記データ情報構造体格納工程は、前記重複判定工程の結果、第７のアドレス範囲に第８の絶対アドレスが重複する場合、第７の連続データバッファにおける重複するアドレスに第８のデータを格納する第９の格納工程と、
前記連続判定工程の結果、第７のアドレス範囲の先頭の絶対アドレスに第８の絶対アドレスが連続する場合、第７の連続データバッファの先頭の絶対アドレスの一つ前のアドレスに第８のデータを挿入して格納し、かつ第７の開始アドレスを第８の絶対アドレスに置き換えて格納する第１０の格納工程と、
前記連続判定工程の結果、第７のアドレス範囲の最後尾の絶対アドレスに第８の絶対アドレスが連続する場合、第７の連続データバッファの最後尾の絶対アドレスの一つ後のアドレスに第８のデータを追加して格納し、第７のアドレス範囲を第８の終了アドレスまでとする第１１の格納工程と、
最初のデータレコードからデータ情報を取り出す場合、または、前記重複判定工程の結果、重複せず、かつ前記連続判定工程の結果、連続しない場合、第８のデータを含む新たな連続データバッファを作成し、かつ第８の絶対アドレスを開始アドレスとして新たなデータ情報構造体を作成して前記メモリに格納する第１２の格納工程とを含むことを特徴とするHEX形式ファイルマージ処理方法。
【請求項１３】
請求項１２に記載のHEX形式ファイルマージ処理方法において、該方法は、
前記リンクトリストから順次ポインタを取り出して、一つ前に取り出した第１３のポインタに応じた第１３のデータ情報構造体と、今回取り出した第１４のポインタに応じた第１４のデータ情報構造体とを比較するギャップ比較工程を含み、
該ギャップ比較工程は、第１３のデータ情報構造体の開始アドレスおよび連続データバッファのサイズで示されるアドレス範囲の最後尾の第１３の絶対アドレスと、第１４のデータ情報構造体の第１４の開始アドレスとが連続でない場合、第１３の絶対アドレスの一つ後の絶対アドレスをギャップ開始アドレスとし、第１４の開始アドレスの一つ前の絶対アドレスをギャップ終了アドレスとして、前記ギャップ開始アドレスから前記ギャップ終了アドレスまでのサイズを有するギャップデータバッファを作成し、該ギャップデータバッファの各アドレスにギャップデータを格納し、前記ギャップ開始アドレスおよび前記ギャップデータバッファを含むギャップデータ構造体を作成して前記メモリに格納し、前記ギャップデータ構造体のポインタを前記リンクトリストにおける第１３のポインタおよび第１４のポインタの間に挿入して格納することを特徴とするHEX形式ファイルマージ処理方法。
【請求項１４】
HEX形式でデータを格納した複数の入力ファイルから前記データを有するデータレコードを順次読み出す読み出し手段と、
前記読み出したデータを、メモリ上の内部バッファに格納するデータ格納手段とを含み、
前記内部バッファから前記データを順次取り出して出力ファイルを作成するHEX形式ファイルマージ処理装置において、該装置は、
前記内部バッファの各アドレスに対応したアドレスを有する属性用バッファをメモリに確保する属性用バッファ確保手段と、
前記内部バッファの所定のアドレスに前記データが格納されたか否かを示す属性フラグを、前記所定のアドレスに対応する前記属性用バッファのアドレスに格納する属性フラグ格納手段とを含むことを特徴とするHEX形式ファイルマージ処理装置。
【請求項１５】
請求項１４に記載のHEX形式ファイルマージ処理装置において、前記属性フラグ格納手段は、前記所定のアドレスに前記データを格納する場合には、前記対応する属性用バッファのアドレスに属性フラグとしてオンフラグを格納することを特徴とするHEX形式ファイルマージ処理装置。
【請求項１６】
請求項１５に記載のHEX形式ファイルマージ処理装置において、前記属性フラグ格納手段は、前記所定のアドレスに前記データを格納しない場合には、前記対応する属性用バッファのアドレスに属性フラグとしてオフフラグを格納することを特徴とするHEX形式ファイルマージ処理装置。
【請求項１７】
請求項１５に記載のHEX形式ファイルマージ処理装置において、該装置は、前記属性フラグ格納手段の開始時に、前記属性用バッファをリセットして、すべてのアドレスに属性フラグとしてオフフラグを格納することを特徴とするHEX形式ファイルマージ処理装置。
【請求項１８】
HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、該入力ファイルから前記データおよび絶対アドレスを有するデータレコードを順次読み出す読み出し手段を含むHEX形式ファイルマージ処理装置において、該装置は、
前記読み出し手段で取り出した前記入力ファイルのそれぞれに対して、該入力ファイルが有するデータレコードのすべてに基づいてファイル情報を取り出してファイル情報構造体を作成してメモリ上の構造体用バッファに格納するファイル情報構造体格納手段と、
前記構造体用バッファにおける複数の前記ファイル情報構造体を、それぞれの前記ファイル情報に応じて並べ替えてメモリ上の構造体ソート用バッファにソートして格納する構造体ソート手段とを含み、
前記構造体ソート用バッファから前記ファイル情報構造体を順次取り出し、該ファイル情報構造体の前記ファイル情報に応じて、前記複数の入力ファイルから前記データを読み出して出力ファイルを作成することを特徴とするHEX形式ファイルマージ処理装置。
【請求項１９】
請求項１８に記載のHEX形式ファイルマージ処理装置において、前記ファイル情報構造体格納手段は、前記入力ファイルにおけるデータレコードのすべてについて、それぞれの絶対アドレスを互いに比較して、最小の絶対アドレスを検出して開始アドレスとし、最大の絶対アドレスを検出して終了アドレスとして、前記開始アドレスおよび前記終了アドレスを含む前記ファイル情報構造体を作成することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２０】
請求項１９に記載のHEX形式ファイルマージ処理装置において、前記構造体ソート手段は、前記構造体用バッファから前記ファイル情報構造体を順次取り出し、該ファイル情報構造体をその前記開始アドレスの昇順に並べ替えて前記構造体ソート用バッファにソートして格納することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２１】
請求項２０に記載のHEX形式ファイルマージ処理装置において、前記構造体ソート手段は、すでに前記構造体ソート用バッファに格納されている第１のファイル情報構造体を順次取り出して、第１のファイル情報構造体の前記開始アドレスおよび前記終了アドレスで示される第１のアドレス範囲と、今回格納する第２のファイル情報構造体の前記開始アドレスおよび前記終了アドレスで示される第２のアドレス範囲とを比較するアドレス範囲比較手段を含み、
該アドレス範囲比較手段は、第２のアドレス範囲が第１のアドレス範囲の全範囲と重複する場合、第１のファイル情報構造体を前記構造体ソート用バッファから削除する削除手段と、
第２のアドレス範囲が第１のアドレス範囲の一部と重複する場合、第１のファイル情報構造体の前記開始アドレスおよび前記終了アドレスを、重複するアドレス範囲を除くように変更する変更手段とを含み、
第２のアドレス範囲の前記開始アドレスが、取り出した第１のアドレス範囲の前記終了アドレスを超えたとき、次の第１のファイル情報構造体を取り出さずに終了することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２２】
請求項２１に記載のHEX形式ファイルマージ処理装置において、該装置は、
前記構造体ソート手段が終了した後、前記構造体ソート用バッファから前記ファイル情報構造体を順次取り出し、一つ前に取り出した第５のファイル情報構造体と今回取り出した第６のファイル情報構造体とを比較して第５のファイル情報構造体と第６のファイル情報構造体との間のギャップを検出するギャップ検出手段を含み、
該ギャップ検出手段は、ギャップを検出した場合、ギャップデータ構造体を作成して前記構造体ソート用バッファにおける第５のファイル情報構造体と第６のファイル情報構造体との間に挿入して格納することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２３】
請求項２２に記載のHEX形式ファイルマージ処理装置において、前記ギャップ検出手段は、第５のファイル情報構造体における第５の終了アドレスと第６のファイル情報構造体における第６の開始アドレスとが連続でないギャップを検出した場合、第５の終了アドレスの一つ後の絶対アドレスをギャップ開始アドレスとし、第６の開始アドレスの一つ前の絶対アドレスをギャップ終了アドレスとして、前記ギャップ開始アドレスおよび前記ギャップ終了アドレスからギャップデータ構造体を作成することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２４】
HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、前記データおよび絶対アドレスを有するデータレコードを順次読み出す読み出し手段を含むHEX形式ファイルマージ処理装置において、該装置は、
前記データレコードからデータ情報を取り出して、前記絶対アドレスが連続するような配列で前記データを格納する連続データバッファ、および該連続データバッファの先頭の絶対アドレスを示す開始アドレスを含むデータ情報構造体をメモリ上に格納するデータ情報構造体格納手段と、
前記メモリにリンクトリストを確保し、前記データ情報構造体のポインタを取り出して前記リンクトリストに前記開始アドレスの昇順に登録する登録手段とを含み、
前記リンクトリストから前記データ情報構造体のポインタを順次取り出して、該ポインタに応じたデータ情報構造体の連続データバッファおよび開始アドレスに応じて出力ファイルを作成することを特徴とするHEX形式ファイルマージ処理装置。
【請求項２５】
請求項２４に記載のHEX形式ファイルマージ処理装置において、前記データ情報構造体格納手段は、すでに前記メモリに格納されている第７のデータ情報構造体を順次取り出して、第７のデータ情報構造体の第７の開始アドレスおよび第７の連続データバッファのバッファサイズで示される第７のアドレス範囲を取り出し、今回格納する第８のデータレコードから第８の絶対アドレスおよび第８のデータを取り出して、第７のアドレス範囲と第８の絶対アドレスとを比較するデータ情報比較手段を含み、
該データ情報比較手段は、第７のアドレス範囲において第８の絶対アドレスが重複するか否かを判定する重複判定手段と、
第７のアドレス範囲の前後に第８の絶対アドレスが連続するか否かを判定する連続判定手段とを含み、
前記データ情報構造体格納手段は、前記重複判定手段の結果、第７のアドレス範囲に第８の絶対アドレスが重複する場合、第７の連続データバッファにおける重複するアドレスに第８のデータを格納する第９の格納手段と、
前記連続判定手段の結果、第７のアドレス範囲の先頭の絶対アドレスに第８の絶対アドレスが連続する場合、第７の連続データバッファの先頭の絶対アドレスの一つ前のアドレスに第８のデータを挿入して格納し、かつ第７の開始アドレスを第８の絶対アドレスに置き換えて格納する第１０の格納手段と、
前記連続判定手段の結果、第７のアドレス範囲の最後尾の絶対アドレスに第８の絶対アドレスが連続する場合、第７の連続データバッファの最後尾の絶対アドレスの一つ後のアドレスに第８のデータを追加して格納する第１１の格納手段と、
最初のデータレコードからデータ情報を取り出す場合、または、前記重複判定手段の結果、重複せず、かつ前記連続判定手段の結果、連続しない場合、第８のデータを含む新たな連続データバッファを作成し、かつ第８の絶対アドレスを開始アドレスとして新たなデータ情報構造体を作成して前記メモリに格納する第１２の格納手段とを含むことを特徴とするHEX形式ファイルマージ処理装置。
【請求項２６】
請求項２５に記載のHEX形式ファイルマージ処理装置において、該装置は、
前記リンクトリストから順次ポインタを取り出して、一つ前に取り出した第１３のポインタに応じた第１３のデータ情報構造体と、今回取り出した第１４のポインタに応じた第１４のデータ情報構造体とを比較するギャップ比較手段を含み、
該ギャップ比較手段は、第１３のデータ情報構造体の開始アドレスおよび連続データバッファのサイズで示されるアドレス範囲の最後尾の第１３の絶対アドレスと、第１４のデータ情報構造体の第１４の開始アドレスとが連続でない場合、第１３の最後尾の絶対アドレスの一つ後の絶対アドレスをギャップ開始アドレスとし、第１４の開始アドレスの一つ前の絶対アドレスをギャップ終了アドレスとして、前記ギャップ開始アドレスから前記ギャップ終了アドレスまでのサイズを有するギャップデータバッファを作成し、該ギャップデータバッファの各アドレスにギャップデータを格納し、前記ギャップ開始アドレスおよび前記ギャップデータバッファを含むギャップデータ構造体を作成して前記メモリに格納し、前記ギャップデータ構造体のポインタを前記リンクトリストにおける第１３のポインタおよび第１４のポインタの間に挿入して格納することを特徴とするHEX形式ファイルマージ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のHEX（Hexadecimal）形式ファイルをマージ処理するマージ処理方法およびその方法を用いたマージ処理装置に関するものである。
【背景技術】
【０００２】
従来から、特許文献１に記載のPC（プログラマブル・コントローラ）のデータ編集方式では、HEX形式ファイルなどのデータを編集する際に、データ格納手段によりデータを格納しておき、データ表示指令手段により、複数のデータの表示形態を画面上で入力指令すると、表示手段が、指令されたデータをデータ格納手段から読み出して指令どおりに画面上で表示することができる。
【０００３】
また、複数のHEX形式ファイルをマージ処理して１つのファイルに出力する場合、たとえば、このマージ処理を行うソフトウェアにより、メモリなどの記憶装置にバッファを前もって確保してオフセットアドレスなどの絶対アドレスを割り当て、HEX形式ファイルの内容を順次読み出してこのバッファへ格納していた。
【０００４】
このとき、図４に示すように、HEX形式でデータを格納した複数の入力ファイル１、２〜ｎをマージ処理するソフトウェアでは、マージ処理開始時に内部バッファ３が確保される。このマージ処理では、まず入力ファイル１における１行目のデータレコードを読み出し、このデータレコードが示すデータを、データレコードが示す絶対アドレスに対応する内部バッファ３のアドレスに格納する。同様にして、入力ファイル１が有するすべてのデータを内部バッファ３に格納する。このような格納処理を、入力ファイル２から入力ファイルｎまで繰り返すことにより、複数の入力ファイルが有するすべてのデータを内部バッファ３に格納することができる。また、このようなソフトウェアでは、内部バッファ３に格納されるすべてのデータを１つの出力ファイルに出力することもできる。
【０００５】
【特許文献１】特開平6−301407号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記のように、図４に示すマージ処理を行うソフトウェアでは、24ビット長または32ビット長のアドレスを有するHEX形式ファイルに対応するためには、メモリなどの記憶装置において内部バッファを膨大に確保する必要がある。しかし、このソフトウェアが動作するパソコンなどの装置では搭載されるメモリのサイズが制限されるため、マージ処理において膨大なバッファを確保することは困難である。
【０００７】
また、このソフトウェアにより複数のHEX形式ファイルをマージする場合、入力ファイル間などのデータが存在しないアドレスを示すギャップ５に対して、特定のデータ（ギャップデータ）を内部バッファに埋め込むことがある。しかし、図４に示すマージ処理を行うソフトウェアでは、このようなギャップデータを内部バッファに格納するとき、どのアドレスがギャップを示すか判断することができない。また、ギャップデータを格納した内部バッファから出力ファイルにデータを書き込むときには、それがギャップデータであるのか、もしくはファイルから読み出したデータであるのかを識別することができない。
【０００８】
本発明はこのような従来技術の欠点を解消し、入力ファイルから読み出した情報をメモリなどの記憶装置に最適に格納するHEX形式ファイルマージ処理方法および装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は上述の課題を解決するために、HEX形式でデータを格納した複数の入力ファイルからこのデータを有するデータレコードを順次読み出す読み出し工程と、この読み出したデータを、メモリ上の内部バッファに格納するデータ格納工程とを含み、この内部バッファからこのデータを順次取り出して出力ファイルを作成するHEX形式ファイルマージ処理方法は、この内部バッファの各アドレスに対応したアドレスを有する属性用バッファをメモリに確保する属性用バッファ確保工程と、この内部バッファの所定のアドレスにこのデータが格納されたか否かに応じて、この所定のアドレスに対応するこの属性用バッファのアドレスにこのデータが格納されたか否かを示す属性フラグを格納する属性フラグ格納工程とを含むことを特徴とする。
【００１０】
また、HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、この入力ファイルからこのデータおよび絶対アドレスを有するデータレコードを順次読み出す読み出し工程を含むHEX形式ファイルマージ処理方法は、この読み出し工程で取り出したこの入力ファイルのそれぞれに対して、この入力ファイルが有するデータレコードのすべてに基づいてファイル情報を取り出してファイル情報構造体を作成してメモリ上の構造体用バッファに格納するファイル情報構造体格納工程と、この構造体用バッファにおける複数のこのファイル情報構造体を、それぞれのこのファイル情報に応じて並べ替えてメモリ上の構造体ソート用バッファにソートして格納する構造体ソート工程とを含み、この構造体ソート用バッファからこのファイル情報構造体を順次取り出し、このファイル情報構造体のこのファイル情報に応じて、この複数の入力ファイルからこのデータを読み出して出力ファイルを作成することを特徴とする。
【００１１】
また、HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、このデータおよび絶対アドレスを有するデータレコードを順次読み出す読み出し工程を含むHEX形式ファイルマージ処理装置は、このデータレコードからデータ情報を取り出して、この絶対アドレスが連続するような配列でこのデータを格納する連続データバッファ、およびこの連続データバッファの先頭の絶対アドレスを示す開始アドレスを含むデータ情報構造体をメモリ上に格納するデータ情報構造体格納工程と、このメモリにリンクトリストを確保し、このデータ情報構造体のポインタを取り出してこのリンクトリストにこの開始アドレスの昇順に登録する登録工程とを含み、このリンクトリストからこのデータ情報構造体のポインタを順次取り出して、このポインタに応じたデータ情報構造体の連続データバッファおよび開始アドレスに応じて出力ファイルを作成することを特徴とする。
【００１２】
また、HEX形式でデータを格納した複数の入力ファイルからこのデータを有するデータレコードを順次読み出す読み出し手段と、この読み出したデータを、メモリ上の内部バッファに格納するデータ格納手段とを含み、この内部バッファからこのデータを順次取り出して出力ファイルを作成するHEX形式ファイルマージ処理装置は、この内部バッファの各アドレスに対応したアドレスを有する属性用バッファをメモリに確保する属性用バッファ確保手段と、この内部バッファの所定のアドレスにこのデータが格納されたか否かに応じて、この所定のアドレスに対応するこの属性用バッファのアドレスにこのデータが格納されたか否かを示す属性フラグを格納する属性フラグ格納手段とを含むことを特徴とする。
【００１３】
また、HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、この入力ファイルから前記データおよび絶対アドレスを有するデータレコードを順次読み出す読み出し手段を含むHEX形式ファイルマージ処理装置は、この読み出し手段で取り出したこの入力ファイルのそれぞれに対して、この入力ファイルが有するデータレコードのすべてに基づいてファイル情報を取り出してファイル情報構造体を作成してメモリ上の構造体用バッファに格納するファイル情報構造体格納手段と、この構造体用バッファにおける複数のこのファイル情報構造体を、それぞれのこのファイル情報に応じて並べ替えてメモリ上の構造体ソート用バッファにソートして格納する構造体ソート手段とを含み、この構造体ソート用バッファからこのファイル情報構造体を順次取り出し、このファイル情報構造体のこのファイル情報に応じて、この複数の入力ファイルからこのデータを読み出して出力ファイルを作成することを特徴とする。
【００１４】
また、HEX形式でデータを格納した複数の入力ファイルから入力ファイルを順次取り出して、このデータおよび絶対アドレスを有するデータレコードを順次読み出す読み出し手段を含むHEX形式ファイルマージ処理装置は、このデータレコードからデータ情報を取り出して、この絶対アドレスが連続するような配列でこのデータを格納する連続データバッファ、およびこの連続データバッファの先頭の絶対アドレスを示す開始アドレスを含むデータ情報構造体をメモリ上に格納するデータ情報構造体格納手段と、このメモリにリンクトリストを確保し、このデータ情報構造体のポインタを取り出してこのリンクトリストにこの開始アドレスの昇順に登録する登録手段とを含み、このリンクトリストからこのデータ情報構造体のポインタを順次取り出して、このポインタに応じたデータ情報構造体の連続データバッファおよび開始アドレスに応じて出力ファイルを作成することを特徴とする。
【発明の効果】
【００１５】
本発明のHEX形式ファイルマージ処理方法および装置によれば、内部バッファに加えて属性用バッファを備え、これらのバッファにおける各アドレスを対応付けることにより、入力ファイルから読み出したHEXデータを内部バッファに格納する際に、格納するアドレスがギャップであるか否かを示すフラグを属性用バッファに設定して、内部バッファの各アドレスがギャップを示すか否かを識別することができ、ギャップデータを容易に埋め込むことができる。また、本発明によれば、内部バッファに格納されたデータがギャップデータであるか否かを識別することもできる。
【００１６】
また、本発明によれば、メモリにデータ格納用のバッファを確保せずに、構造体用バッファにファイル情報構造体を格納し、このファイル情報構造体をソートして構造体ソート用バッファに格納することにより、メモリの使用を最小限に抑えることができる。また、このとき、ギャップデータ構造体を構造体ソート用バッファに格納することにより、ギャップデータを容易に埋め込むことができる。
【００１７】
また、本発明によれば、内部バッファを前もってメモリに確保せずに、データ情報構造体をメモリに格納し、入力ファイルから読み出したデータのみをデータ情報構造体の連続データバッファに格納するため、メモリの使用領域を最小限に抑えることができる。このとき、連続データバッファが入力ファイルのデータに応じて大きく確保されても、対応するデータ情報構造体へのポインタをリンクトリストに保存しているため、連続データバッファは、データ情報構造体に応じて空きメモリのどこに配置されてもよく、効率的にメモリを使用することができる。さらに、入力ファイルを開くのは１度だけであるため、マージ処理の高速化を図ることもできる。
【発明を実施するための最良の形態】
【００１８】
次に添付図面を参照して、本発明によるソフトウェアを適用したHEX形式ファイルマージシステムの実施例を詳細に説明する。図１を参照すると、HEX形式ファイルマージシステム10の実施例は、複数の入力ファイル12を、マージ処理装置14に備わるソフトウェア18によりマージ処理して、出力ファイル20を出力する装置である。なお、本発明の理解に直接関係のない部分は、図示を省略し、冗長な説明を避ける。
【００１９】
複数の入力ファイル12は、インテルHEXフォーマット、モトローラSレコードフォーマット、およびバイナリフォーマットなどのいずれかのHEX形式で電子データを格納したファイルである。本実施例では、複数の入力ファイル12は、インテルHEXフォーマットで電子データが格納され、たとえば、FD（Flexible Disk：フレキシブルディスク、すなわちFloppy Disk：フロッピーディスク）、CD-ROM（Compact Disk-Read Only Memory）、DVD-ROM（DVD-Read Only Memory）、DVD-RAM（DVD-Random Access Memory）またはMO（Magneto Optic）などの記憶媒体に記録されているものでよい。
【００２０】
マージ処理装置14は、たとえば、パソコン（Personal Computer）などの装置で、メモリ16およびソフトウェア18を備えて、供給される複数の入力ファイル12に対してマージ処理する装置である。
【００２１】
ソフトウェア18は、複数の入力ファイル12をマージ処理して、出力ファイル20を作成するものである。このとき、ソフトウェア18は、所望の複数の入力ファイル12を操作者に選択させてもよく、また操作者に所望の出力先を選択させて出力ファイル18を出力してもよい。
【００２２】
本実施例におけるソフトウェア18は、たとえば、図２に示すように、メモリ16に８ビット幅の内部バッファ24を確保して、複数の入力ファイル12から入力ファイル22を順次取り出し、入力ファイル22からHEXデータを順次読み出してこの内部バッファ24に書き込んでマージ処理する機能を有する。
【００２３】
本実施例では特に、ソフトウェア18は、図２に示すように、メモリ16に１ビット幅の属性用バッファ26を確保して、属性用バッファ26における各アドレスを内部バッファ24の各アドレスに対応付ける。このとき、属性用バッファ26の各アドレスは、内部バッファ24で対応するアドレスにHEXデータが格納されるか否かを示すフラグを格納する。たとえば、属性用バッファ26の各アドレスは、内部バッファでHEXデータが格納されたアドレスに対応してオンフラグ（１）を設定し、HEXデータが格納されないアドレスに対応して、オフフラグ（０）を設定する。また、ソフトウェア18は、マージ処理開始時に属性用バッファ26をリセットしてすべてのアドレスにオフフラグ（０）を設定し、内部バッファにおいてHEXデータが格納されないアドレスに対応する属性用バッファ26のアドレスがフラグの設定を行わないようにしてもよい。
【００２４】
また、ソフトウェア18は、このようにマージ処理された内部バッファ24および属性用バッファ26から出力ファイル20を作成して出力する。たとえば、属性用バッファ26の各アドレスを順次判定して、オンフラグである場合内部バッファで対応するアドレスからHEXデータを読み出し、オフフラグである場合ギャップデータを取り出して、出力ファイルに書き込んでよい。また、ソフトウェア18は、属性用バッファ26の各アドレスを判定する際に、オフフラグであるアドレスに対応する内部バッファ24のアドレスにギャップデータを埋め込み、内部バッファ24からデータを順次読み出して出力ファイルに書き込んでもよい。
【００２５】
次に、本実施例におけるソフトウェア18を適用したHEX形式ファイルマージシステム10の動作について、図３のフローチャートを参照しながら説明する。
【００２６】
本実施例では、まず、操作者がマージ処理装置14を操作してソフトウェア18によるマージ処理が開始すると、メモリ16に内部バッファ24および属性用バッファ26が確保される。このとき、属性用バッファ26がリセットされ、すべてのアドレスにオフフラグが設定される（ステップ102）。属性用バッファ26のリセットは、ソフトウェア18によるマージ処理が新たに開始されるごとに行われてよい。
【００２７】
次に、ソフトウェア18により、入力ファイル22が開かれて、HEXデータが順次取り出される（ステップ104）。本実施例において、HEXデータは、たとえば、入力ファイル22に格納されている順に取り出される。
【００２８】
このようにステップ104で取り出されたHEXデータは、たとえば、各HEXデータに固有の絶対アドレス（オフセットアドレス）に応じて、内部バッファ24に格納される（ステップ106）。このHEXデータは、ステップ104で取り出された順に、内部バッファ24に格納されてもよい。
【００２９】
次に、本実施例のソフトウェア18では、HEXデータを格納した内部バッファ24の絶対アドレスに対応する属性用バッファ26のアドレスにオンフラグ（１）を設定する（ステップ108）。
【００３０】
これらのステップ104、106および108のマージ処理が、入力ファイル22に含まれるすべてのHEXデータに対して行われたかを判定し（ステップ110）、マージ処理されていないHEXデータがある場合、ステップ104に戻ってマージ処理が繰り返され、すべてのHEXデータがマージ処理されている場合、終了する（ステップ112）。
【００３１】
また、本実施例では、複雑化を避けるため、入力ファイル22に対するマージ処理についてのみ記述したが、実際は、複数の入力ファイル12をマージ処理することができ、このとき、ステップ104、106、108および110のマージ処理が入力ファイルの数だけ繰り返される。
【００３２】
このようにして、複数の入力ファイル12に基づいて内部バッファ24へHEXデータ格納が完了すると、ソフトウェア18により、この内部バッファ24内のすべてのHEXデータが出力ファイルに書き込まれる。このとき、本実施例のソフトウェア18は、属性用バッファ26から順にフラグを検出して、オンフラグを検出した場合、内部バッファ24で対応するアドレスからHEXデータを読み出し、オフフラグを検出した場合、ギャップデータを取り出して、出力ファイルに書き込む。また、ソフトウェア18は、出力ファイルのファイル形式やファイル名などを操作者に指示させてもよい。
【００３３】
また、ソフトウェア18は、出力ファイル書き込みにおいて、属性用バッファ26の各アドレスからフラグを検出して判定し、オフフラグのアドレスに対応する内部バッファ24のアドレスにギャップデータを格納してもよい。このとき、属性用バッファ26のすべてのアドレスを判定すると、内部バッファ24におけるすべてのデータを、判定処理などを行うことなく、出力ファイルに順次書き込むことができる。
【００３４】
また、他の実施例として、ソフトウェア18は、図５に示すように、メモリ16に構造体用バッファ36を確保し、入力ファイル情報を格納するファイル情報構造体40を定義して、各入力ファイルのファイル情報構造体40を構造体用バッファ36に作成する。本実施例において、ファイル情報格納用構造体40は、開始アドレス、終了アドレスおよび入力ファイル名を含んで構成される。
【００３５】
また、本実施例のソフトウェア18では、このファイル情報構造体40を開始アドレスの小さい順に、すなわち昇順にソート処理して、メモリ16における構造体ソート用バッファ38に格納する。
【００３６】
次に、本実施例のソフトウェア18によるマージ処理において、ファイル情報構造体40の作成動作について、図８のフローチャートを参照しながら説明する。
【００３７】
本実施例では、まず、ソフトウェア18によるマージ処理が開始すると、構造体用バッファ36および構造体ソート用バッファ38がメモリ16に確保される。
【００３８】
次に、ソフトウェア18により、複数の入力ファイル12が順に開かれ、各入力ファイルにおける開始アドレス、終了アドレスおよび入力ファイル名などのファイル情報が取り出される（ステップ202）。このとき、たとえば、入力ファイルが有するすべてデータレコードの絶対アドレスを比較して、最も小さいアドレスが開始アドレスとして検出され、同様に、最も大きいアドレスが終了アドレスとして検出される。また、入力ファイル名は、ファイルを開く際に検出される文字列などで示されるファイル名でよい。
【００３９】
本実施例のソフトウェア18では、このように取り出したファイル情報から作成されたファイル情報構造体が構造体用バッファ36に格納される（ステップ204）。
【００４０】
これらのステップ202および204におけるファイル情報構造体の格納処理が、複数の入力ファイル12のすべての入力ファイルに対して行われたかを判定し（ステップ206）、格納処理されていない入力ファイルがある場合、ステップ202に戻って格納処理が繰り返される。
【００４１】
本実施例では、たとえば、図５に示すように、入力ファイル30から開始アドレス（0x1000番地）、終了アドレス（0x15FF番地）および入力ファイル名（30）などのファイル情報を取り出してファイル情報構造体40を作成し、構造体用バッファ36に格納する。同様に、入力ファイル32から開始アドレス（0x2000番地）、終了アドレス（0x2FFF番地）および入力ファイル名（32）を取り出してファイル情報構造体42を作成し、また、入力ファイル34から開始アドレス（0x2500番地）、終了アドレス（0x27FF番地）および入力ファイル名（34）を取り出してファイル情報構造体44を作成して、構造体用バッファ36に格納する。
【００４２】
このとき、複数の入力ファイル12は、多数の入力ファイルを含んでもよいが、図５においては、複雑化を避けるため、少数の入力ファイル30、32および34しか図示しない。また、構造体用バッファ36も同様に、多数のファイル情報構造体を含んでもよいが、複数の入力ファイル12に応じたファイル情報構造体を格納するため、図５においては、入力ファイル30、32および34にそれぞれ対応したファイル情報構造体40、42および44しか図示しない。
【００４３】
このようにして、すべての入力ファイルに対してファイル情報構造体が格納処理されると、ステップ206から接続子Ａを介して、ファイル情報構造体をソート処理する図９に示すフローチャートに進む。次に、本実施例のソフトウェア18によるマージ処理において、ファイル情報構造体のソート処理動作について、図９のフローチャートを参照しながら説明する。
【００４４】
まず、ソフトウェア18により、構造体用バッファ36における各ファイル情報構造体からファイル情報が順次取り出される（ステップ212）。本実施例では、たとえば、図５に示すような構造体用バッファ36に、格納順に並べられたファイル情報構造体40、42および44に対して、ファイル情報である開始アドレス、終了アドレスおよび入力ファイル名を格納順に取り出し、まず、最初に格納されたファイル情報構造体40から開始アドレス（0x1000番地）、終了アドレス（0x15FF番地）および入力ファイル名（40）を取り出す。
【００４５】
次に、構造体ソート用バッファ38にファイル情報構造体が格納されているか否かを判定し（ステップ214）、すなわち、１回目のソート処理であるか否かを判定する。ここで、ファイル情報構造体40のファイル情報は、構造体用バッファ36から最初に取り出されるファイル情報であり、構造体ソート用バッファ38にファイル情報が格納されていないと判定される。
【００４６】
ステップ214における判定の結果、構造体ソート用バッファ38にファイル情報構造体が格納されていない場合、ステップ216に進んで、取り出したファイル情報からファイル情報構造体が作成されて構造体ソート用バッファ38に格納される。本実施例では、ファイル情報構造体40のファイル情報である開始アドレス（0x1000番地）および終了アドレス（0x15FF番地）などを含むファイル情報構造体50が作成されて構造体ソート用バッファ38に格納される。
【００４７】
次に、ソフトウェア18では、構造体用バッファ36におけるすべてのファイル情報構造体に対してソート処理が終了したか否かを判定し（ステップ218）、処理されていないファイル情報構造体がある場合、ステップ212に戻ってソート処理が繰り返される。本実施例では、ファイル情報構造体42および44がまだ処理されていないため、終了判定されず、次のファイル情報構造体を処理するためにステップ212に戻る。
【００４８】
このとき、ステップ212では、構造体用バッファ36に２番目に格納されたファイル情報構造体42からファイル情報である開始アドレス（0x2000番地）、終了アドレス（0x2FFF番地）および入力ファイル名（42）が取り出される。次にステップ214において、構造体ソート用バッファ38にファイル情報構造体が格納されているか否かが判定され、本実施例では、既にファイル情報構造体50が格納されていると判定される。
【００４９】
このステップ214における判定の結果、ファイル情報構造体が格納されている場合、ステップ220に進んで、ステップ212で取り出したファイル情報を、構造体ソート用バッファ38に格納されているファイル情報構造体のファイル情報と順次比較する。ここでは、ファイル情報構造体42のファイル情報を、ファイル情報構造体50のファイル情報と比較する。
【００５０】
このとき、本実施例のソフトウェア18では、構造体用バッファ36と構造体ソート用バッファ38とでファイル情報から求まるアドレス範囲が重複しているか否かを検出する（ステップ222）。
【００５１】
たとえば、本実施例では、ファイル情報構造体42のファイル情報を、ファイル情報構造体50のファイル情報と比較してアドレス範囲の重複を検出する。このとき、ファイル情報構造体42における開始アドレス（0x2000番地）および終了アドレス（0x2FFF番地）で示されるアドレス範囲は、ファイル情報構造体50における開始アドレス（0x1000番地）および終了アドレス（0x15FF番地）で示されるアドレス範囲と重複しないため、アドレス範囲が重複していないことが検出される。
【００５２】
このように、ステップ222において、アドレス範囲の重複が検出されない場合、ステップ216に進んで、ステップ212で取り出したファイル情報からファイル情報構造体が作成されて、ファイル情報の開始アドレスの昇順に並ぶように構造体ソート用バッファ38に格納される。本実施例では、図５に示すように、ファイル情報構造体42のファイル情報である開始アドレス（0x2000番地）および終了アドレス（0x2FFF番地）などを含むファイル情報構造体52が作成されて、構造体ソート用バッファ38において、ファイル情報構造体50の後に格納される。
【００５３】
また、ステップ222において、ステップ212で取り出したファイル情報構造体の開始アドレスが、構造体ソート用バッファ38にすでに格納されているファイル情報構造体の終了アドレスを超えた場合、接続子Ｂに進んでファイル情報構造体のソート処理動作を終了してもよい。
【００５４】
次に、ステップ218において、すべてのファイル情報構造体に対してソート処理が終了したか否かが判定され、本実施例では、ファイル情報構造体44がまだ処理されていないため、終了判定されず、ステップ212に戻る。
【００５５】
このとき、ステップ212では、構造体用バッファ36に３番目に格納されたファイル情報構造体44からファイル情報である開始アドレス（0x2500番地）、終了アドレス（0x27FF番地）および入力ファイル名（44）が取り出される。次にステップ214において、構造体ソート用バッファ38にファイル情報構造体が格納されているか否かが判定され、本実施例では、既にファイル情報構造体50が格納されていると判定されてステップ220に進む。
【００５６】
ステップ220では、ファイル情報構造体44のファイル情報が、ファイル情報構造体50および52のファイル情報と比較される。さらに、ステップ222において、ファイル情報構造体44のファイル情報で示されるアドレス範囲が、ファイル情報構造体50および52のファイル情報で示されるアドレス範囲と重複するか否かが検出される。
【００５７】
たとえば、本実施例では、ファイル情報構造体44における開始アドレス（0x2500番地）および終了アドレス（0x27FF番地）で示されるアドレス範囲は、ファイル情報構造体50における開始アドレス（0x1000番地）および終了アドレス（0x15FF番地）で示されるアドレス範囲とは重複しないが、ファイル情報構造体52における開始アドレス（0x2000番地）および終了アドレス（0x2FFF番地）で示されるアドレス範囲と重複することが検出される。
【００５８】
このように、各入力ファイルのファイル情報構造体におけるアドレス範囲が重複する場合、その重複するアドレス範囲では、後から入力した入力ファイルのデータが有効になるようにする。すなわち、後から格納するファイル情報は、すべて有効なファイル情報であるため、そのまま構造体ソート用バッファ38に格納され、既に格納されているファイル情報は、その重複するアドレス範囲を削除するように変更される。
【００５９】
たとえば、本実施例の構造体ソート用バッファ38において、重複する0x2500番地〜0x27FF番地のアドレス範囲では、ファイル情報構造体44が示すデータ、すなわち、入力ファイル34におけるデータが有効となり、ファイル情報構造体44のファイル情報である開始アドレス（0x2500番地）および終了アドレス（0x27FF番地）などを含むファイル情報構造体54が作成されて、構造体ソート用バッファ38において、開始アドレスの昇順、すなわち、ファイル情報構造体52の後に格納される（ステップ224）。
【００６０】
さらに、構造体ソート用バッファ38に既に格納されていたファイル情報構造体は、重複するアドレス範囲を削除するように変更される（ステップ226）。
【００６１】
たとえば、本実施例では、ファイル情報構造体52に重複するアドレス範囲（0x2500番地〜0x27FF番地）が含まれるが、ファイル情報構造体54の作成および格納に伴って、ファイル情報構造体52の有効なアドレス範囲は、0x2000番地〜0x24FF番地および0x2800番地〜0x2FFF番地となる。したがって、ステップ222では、図６に示すように、構造体ソート用バッファ38において、ファイル情報構造体52の終了アドレスを0x2000番地〜0x24FF番地のアドレス範囲を示すように変更して0x24FF番地とし、開始アドレス（0x2800番地）、終了アドレス（0x2FFF番地）および入力ファイル名（42）を含んで0x2800番地〜0x2FFF番地のアドレス範囲を示すファイル情報構造体56を作成する。このファイル情報構造体56は、構造体ソート用バッファ38において、開始アドレスの昇順、すなわち、ファイル情報構造体54の後に格納される。
【００６２】
次に、ステップ218に進んで、すべてのファイル情報構造体に対してソート処理が終了したか否かが判定され、本実施例では、ファイル情報構造体40、42および44のソート処理が終了したことが判定される。
【００６３】
このようにして、ファイル情報構造体は、構造体ソート用バッファ38において、データが絶対アドレスの順に並ぶように格納される。
【００６４】
すべてのファイル情報構造体がソート処理されると、ステップ218から接続子Ｂを介して、ギャップデータを埋め込む図10に示すフローチャートに進む。次に、本実施例のソフトウェア18によるマージ処理において、ギャップデータ構造体の埋め込み動作について、図10のフローチャートを参照しながら説明する。
【００６５】
まず、ソフトウェア18は、構造体ソート用バッファ38におけるファイル情報構造体を順次取り出し、ファイル情報構造体からファイル情報を取り出す（ステップ242）。たとえば、本実施例では、まず、ファイル情報構造体50が取り出され、ファイル情報である開始アドレス（0x1000番地）および終了アドレス（0x15FF番地）が取り出される。
【００６６】
次に、一つ前にファイル情報構造体を取り出したかを判定する（ステップ244）。本実施例では、ファイル情報構造体50が初めに格納されたため、一つ前のファイル情報構造体は存在せず、ステップ242にもどる。
【００６７】
このとき、ステップ242では、ファイル情報構造体52が取り出され、ファイル情報である開始アドレス（0x2000番地）および終了アドレス（0x24FF番地）が取り出される。
【００６８】
次にステップ244に進み、一つ前のファイル情報構造体が存在するかを判定する。本実施例では、ファイル情報構造体52の前に、一つ前のファイル情報構造体としてファイル情報構造体50が存在する。
【００６９】
ここで、今回取り出したファイル情報と、一つ前のファイル情報とを比較し（ステップ246）、たとえば、今回取り出したファイル情報の開始アドレスが、一つ前のファイル情報の終了アドレスと連続しているかを判定する（ステップ248）。本実施例では、ファイル情報構造体52の開始アドレスは、0x2000番地で、ファイル情報構造体50の終了アドレスは、0x15FF番地であり、ステップ248で非連続であると判定され、0x1600番地〜0x1FFF番地のアドレス範囲でギャップが検出される。
【００７０】
本実施例のソフトウェア18は、このように、ギャップが検出されたアドレス範囲を示す開始アドレスおよび終了アドレスを取り出し、ギャップデータを示す構造体を作成して、構造体ソート用バッファ38に検出したギャップの位置に、このギャップデータ構造体を挿入して格納する（ステップ250）。
【００７１】
次に、本実施例のソフトウェア18では、すべてのファイル情報構造体に対してこのギャップ検出が終了したか否かを判定し（ステップ252）、処理されていないファイル情報構造体がある場合、ステップ242に進んでギャップ検出が繰り返される。本実施例では、ファイル情報構造体54および56がまだ処理されていないため、終了判定されず、次のファイル情報構造体を処理するためにステップ242に進む。
【００７２】
このとき、ステップ242では、ファイル情報構造体54が取り出され、ファイル情報である開始アドレス（0x2500番地）および終了アドレス（0x27FF番地）が取り出される。
【００７３】
次にステップ244に進み、一つ前のファイル情報構造体が存在するかが判定され、本実施例では、ファイル情報構造体54の前に、一つ前のファイル情報構造体としてファイル情報構造体52が存在する。
【００７４】
次にステップ246において、今回取り出したファイル情報と、一つ前のファイル情報とが比較され、さらにステップ248において、今回取り出した開始アドレスと、一つ前の終了アドレスとが連続であるかが判定される。本実施例では、ファイル情報構造体54の開始アドレスは、0x2500番地で、ファイル情報構造体52の終了アドレスは、0x24FF番地であり、ステップ248で連続であると判定され、ギャップは検出されずにステップ252に進む。
【００７５】
ステップ252では、すべてのファイル情報構造体に対してこのギャップ検出が終了したかが判定され、本実施例では、ファイル情報構造体56がまだ処理されていないため、ステップ242に進む。
【００７６】
本実施例では、同様にして、ファイル情報構造体56もギャップ検出処理されて、ファイル情報構造体56の開始アドレス（0x2800番地）と、ファイル情報構造体54の終了アドレス（0x27FF番地）は、連続であると判定される。ステップ252において、すべてのファイル情報構造体に対してこのギャップ検出が終了されたと判定され、本実施例のギャップ検出処理が終了する。
【００７７】
また、本実施例のソフトウェア18では、構造体ソート用バッファ38からファイル情報構造体を順次取り出して、そのファイル情報に基づいて、入力ファイルを開き、ファイル情報の開始アドレスおよび終了アドレスが示すアドレス範囲のデータを順次読み出して、出力ファイル20に出力する。ここで、取り出したファイル情報構造体がギャップデータ構造体である場合には、ギャップデータを出力ファイル20に出力する。
【００７８】
また、他の実施例として、ソフトウェア18は、図11に示すように、入力ファイル60、62および64を含む複数の入力ファイル12をマージ処理するとき、入力ファイルからデータレコードを順次読み出して、開始アドレスおよびデータをメモリ16のデータ情報構造体に格納して登録する。このデータ情報構造体は、連続データバッファを有して絶対アドレスが連続するデータを格納するもので、たとえば、開始アドレスおよび連続データバッファにおけるデータ数、すなわちバッファサイズにより、データ情報構造体のアドレス範囲を算出できる。また、データ情報構造体は、メモリ16において、空き領域に都合よく格納されてよい。
【００７９】
本実施例では、読み出したデータレコードの開始アドレスを、既に登録されているデータ情報構造体のアドレス範囲と比較して、重複する場合には後から格納するデータを上書きするように連続データバッファに格納し、連続する場合には、連結するように格納する。このとき、連続データバッファの先頭のデータが変更される場合、これに応じて開始アドレスは変更されてよい。また、開始アドレスが、既に登録されているデータ情報構造体のアドレス範囲と重複および連続しない場合には、読み出した開始アドレスおよびデータを含むデータ情報構造体を新たに作成してデータ情報構造体に格納する。
【００８０】
このように、新たなデータ情報構造体が格納された場合、この構造体のポインタを取り出して、メモリ16におけるリンクトリスト90に格納登録する。このとき、リンクトリスト90において、各ポインタの対応する構造体の開始アドレスが、昇順になるように登録する。
【００８１】
本実施例において、複数の入力ファイル12は、多数の入力ファイルを含んでもよいが、図11においては、複雑化を避けるため、少数の入力ファイル60、62および64しか図示しない。また、メモリ16におけるデータ情報構造体も、複雑化を避けるため、図11に示すように、少数のデータ情報構造体70、72、74および76しか図示しないが、多数のデータ情報構造体が作成されてもよい。また、構造体用リンクトリスト90においても、複雑化を避けるため、図11に示すように、少数のポインタ80、82、84および86しか図示しないが、データ情報構造体に応じて、多数のポインタが格納されてよい。
【００８２】
次に、本実施例のソフトウェア18によるマージ処理において、データ情報構造体の作成動作について、図12および図13のフローチャートを参照しながら説明する。
【００８３】
本実施例のソフトウェア18では、まず、マージ処理する入力ファイルが存在するか否かを検出する（ステップ302）。このとき、入力ファイルが存在しなければ、本実施例のマージ処理を終了する。他方、入力ファイルが存在するならば、最初に処理すべき入力ファイルを開く。
【００８４】
次に、この開いた入力ファイルに対して、保有するデータが存在するか否かを検出する（ステップ304）。このとき、データが存在しなければ、ステップ310に進んで次の入力ファイルの処理に進む。他方、データが存在するならば、ステップ306に進んで、入力ファイルに格納されている順にデータを取り出す。
【００８５】
このように取り出したデータは、メモリ16におけるデータ情報構造体に格納登録される（SUB1）が、サブルーチンSUB1の詳細は後段で説明する。
【００８６】
次に、取り出したデータのデータ情報構造体への格納登録が終了すると、入力ファイルに次のデータが存在するか否かを検出する（ステップ308）。データが存在するならば、ステップ306に進んで、次に格納されている順にデータを取り出し、データ情報構造体への格納登録（SUB1）を繰り返す。他方、データが存在しなければ、ステップ310に進んで次の入力ファイルの処理に進む。
【００８７】
ステップ310では、次に処理すべき入力ファイルが存在するか否かを検出する。ここで、入力ファイルが存在する場合、ステップ304に進んで次に処理すべき入力ファイルのマージ処理を繰り返す。他方、入力ファイルが存在しなければ、本実施例のマージ処理を終了する。
【００８８】
次に、データ情報構造体への格納（SUB1）動作について、図13のフローチャートを参照しながら説明する。
【００８９】
まず、ソフトウェア18では、メモリ16に既にデータ情報構造体が格納されているか否か、すなわち、データ情報構造体の１回目の格納登録であるかを検出する（ステップ320）。
【００９０】
このとき、リンクトリストにデータ情報構造体へのポインタが検出されない場合、ステップ334に進んで、今回格納するデータおよびその開始アドレスに基づいてデータ情報構造体を作成し、メモリ16に格納する。また、新たに格納したデータ情報構造体のポインタをメモリ16におけるリンクトリスト90に登録する（ステップ336）。このステップ336による登録がされると、リターンに移行してサブルーチンSUB1を終了する。
【００９１】
他方、ステップ320で、リンクトリストにデータ情報構造体へのポインタが検出された場合、格納順にデータ情報構造体を取り出し、データ情報を取り出す（ステップ322）。本実施例では、データ情報として開始アドレスおよび連続データバッファのサイズを取り出し、これらの情報に基づいて、データ情報構造体のアドレス範囲を求める。このアドレス範囲を用いて、ステップ322で取り出したデータ情報構造体に今回のデータが格納できるか否かが検出される。
【００９２】
このとき、このように求めたアドレス範囲に、今回格納するデータの開始アドレスが重複するか否かを検出する（ステップ324）。
【００９３】
この結果、重複が検出された場合、ステップ326に進んで、ステップ322で取り出したデータ情報構造体の連続データバッファにおける重複位置に今回格納するデータを上書き格納する。このとき、連続データバッファの先頭のデータが変更される場合、これに応じて開始アドレスは変更されてよく、連続データバッファのサイズが大きくなった場合、これに応じてデータ情報構造体のアドレス範囲は変更されてよい（ステップ340）。このようなステップ326を介する格納がされると、リターンに移行してサブルーチンSUB1を終了する。
【００９４】
他方、重複が検出されない場合、ステップ328に進んで、今回格納するデータの開始アドレスが、ステップ322で取り出したデータ情報構造体におけるアドレス範囲と連続するか否かを検出する。たとえば、この連続検出は、今回格納するデータの終了アドレスがこのアドレス範囲の先頭より一つ前のアドレスに相当するか、または今回格納するデータの開始アドレスがこのアドレス範囲の最後尾より一つ後のアドレスに相当するかを検出するものでよい。
【００９５】
この結果、連続が検出された場合、ステップ330に進んで、今回格納するデータを、データ情報構造体における連続データバッファの連続データに連結するように格納して登録する。このとき、今回格納するデータの終了アドレスがステップ322で求めたアドレス範囲の先頭より一つ前のアドレスである場合、今回格納するデータは、元の連続データの先頭に挿入されて格納され、データ情報構造体の開始アドレスは、今回格納するデータの開始アドレスと置き換えられて格納される（ステップ340）。また、今回格納するデータの開始アドレスがこのアドレス範囲の最後尾より一つ後のアドレスである場合、今回格納するデータは、元の連続データの最後尾の後に追加されて格納される。このようなステップ330を介する格納がされると、リターンに移行してサブルーチンSUB1を終了する。
【００９６】
また、ステップ328において、連続が検出されない場合、ステップ332に進み、次に格納されているデータ情報構造体が存在するか否かを判定する。この結果、次のデータ情報構造体が存在する場合、ステップ322に進んで、そのデータ情報構造体に今回格納するデータが格納できるかの検出処理を繰り返す。しかし、この検出処理を繰り返しても、すでに格納されているデータ情報構造体に今回のデータを格納できない場合、ステップ334に進んで、今回のデータおよび開始アドレスに基づいてデータ情報構造体を作成し、メモリ16に格納する。さらに、ステップ336に進み、新たに格納したデータ情報構造体のポインタをメモリ16におけるリンクトリスト90に登録する。このステップ336による登録がされると、リターンに移行してサブルーチンSUB1を終了する。
【００９７】
また、本実施例のソフトウェア18では、リンクトリスト90からデータ情報構造体のポインタを順次取り出して、一つ前のデータ情報構造体のアドレス範囲と、今回取り出したデータ情報構造体のアドレス範囲とを比較してギャップを検出することができる。このとき、一つ前のデータ情報構造体の開始アドレスおよび連続データバッファのサイズから求まる終了アドレスと、今回のデータ情報構造体の開始アドレスとが、絶対アドレスとして連続でない場合、ギャップデータ構造体が作成される。このギャップデータ構造体は、一つ前のデータ情報構造体における終了アドレスの一つ後の絶対アドレスをギャップ開始アドレスとして含み、今回のデータ情報構造体の開始アドレスの一つ前の絶対アドレスをギャップ終了アドレスとして、ギャップ開始アドレスからギャップ終了アドレスまでの範囲にギャップデータを格納する連続データバッファを含むものである。
【００９８】
また、本実施例では、このギャップデータ構造体をメモリ16の空き領域に都合よく格納してよく、ギャップデータ構造体のポインタを、リンクトリスト90における一つ前のデータ情報構造体のポインタと、今回のデータ情報構造体のポインタとの間に挿入して、リンクトリスト90におけるポインタがデータ情報構造体およびギャップデータ構造体の開始アドレスの昇順に並ぶように格納してよい。
【００９９】
本実施例のソフトウェア18では、リンクトリスト90からデータ情報構造体のポインタを順次取り出し、ポインタに応じたデータ情報構造体からデータを順次読み出して、出力ファイル20に出力してよい。
【図面の簡単な説明】
【０１００】
【図１】本発明に係るソフトウェアを適用したマージ処理システムの一実施例を示す概要図である。
【図２】図１に示す実施例のマージ処理によるバッファリングを例示した図である。
【図３】図１に示す実施例のマージ処理動作を示すフローチャートである。
【図４】従来のマージ処理によるバッファリングを例示した図である。
【図５】本発明に係るソフトウェアの他の実施例のマージ処理によるバッファリングを例示した図である。
【図６】図５に示す実施例のバッファリングによる構造体ソート用バッファを例示した図である。
【図７】図５に示す実施例においてギャップデータ構造体を格納した構造体ソート用バッファを例示した図である。
【図８】図５に示す実施例のマージ処理によるファイル情報構造体の格納動作を示すフローチャートである。
【図９】図５に示す実施例のマージ処理によるファイル情報構造体のソート処理動作を示すフローチャートである。
【図１０】図５に示す実施例のマージ処理によるギャップデータ構造体の格納動作を示すフローチャートである。
【図１１】本発明に係るソフトウェアの他の実施例のマージ処理によるバッファリングを例示した図である。
【図１２】図１１に示す実施例のマージ処理の動作手順を示すメインフローチャートである。
【図１３】図１２の動作手順のうち、サブルーチンSUB1におけるデータ情報構造体へのデータ格納動作を説明するフローチャートである。
【符号の説明】
【０１０１】
10  マージ処理システム
12  入力ファイル
14  マージ処理装置
16  メモリ
18  ソフトウェア
20  出力ファイル
【図１】
2005284932.tif 000003
【図２】
2005284932.tif 000004
【図３】
2005284932.tif 000005
【図４】
2005284932.tif 000006
【図５】
2005284932.tif 000007
【図６】
2005284932.tif 000008
【図７】
2005284932.tif 000009
【図８】
2005284932.tif 000010
【図９】
2005284932.tif 000011
【図１０】
2005284932.tif 000012
【図１１】
2005284932.tif 000013
【図１２】
2005284932.tif 000014
【図１３】
2005284932.tif 000015