(57)【要約】【課題】ソート処理対象のデータを外部記憶装置へ入出力することなく、プログラム実行環境（メモリ装置）内で処理を行うことを可能とする。【解決手段】表テーブル内順位算出・格納処理部200は、処理すべきデータを格納したテーブル300の第１行目のデータ「90」について、このデータの値より小さい値のデータがテーブル300の中の他の行に幾つあるかをカウントし、このカウント値より「１」多い値が、データ「90」のソート後のデータを格納するテーブル400への格納行であると決定して、データ「90」をテーブル400の決定した行に格納する。処理部200は、同様な処理を行うことにより、テーブル300内の次の行のデータ「40」をテーブル400の第３行に格納すればよいこと算出して、第３行にこのデータ「40」を格納する。同様な処理を進めることにより、ソート処理後データ格納テーブル400には、図２に示すように昇順にソートされたデータが格納される。【選択図】      図１
2006024115.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、ソート処理後データ格納テーブルの前記算出結果に基づいた格納先に対象データを格納することを特徴とするソート処理方法。
【請求項２】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位をソート処理前データ格納テーブルに格納されたソート対象データのそれぞれに付加していき、算出した順位に従って対象データを出力することを特徴とするソート処理方法。
【請求項３】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位の結果と、対応する対象データとを出力することを特徴とするソート処理方法。
【請求項４】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順の何れか一方に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位をソート処理前データ格納テーブルに格納されたソート対象データのそれぞれに付加していき、昇順ソートまたは降順ソートに応じて算出した順位の若番または老番から対象データを出力していくことを特徴とするソート処理方法。
【請求項５】
前記ソート対象データのそれぞれが全データの中で何番目に位置するかの算出は、昇順の場合、比較結果が対象データより小さいデータの件数を算出し、降順の場合、比較結果が対象データより大きいデータの件数を算出し、算出した件数に値１を加えて行われることを特徴とする請求項１ないし４のうちいずれか１記載のソート処理方法。
【請求項６】
前記ソート対象データのそれぞれが全データの中で何番目に位置するかの算出は、昇順の場合、初期値として１が設定されたカウンタにより比較結果が対象データより小さいデータの件数をカウントしていき、降順の場合、初期値として１が設定されたカウンタにより比較結果が対象データより大きいデータの件数をカウントしていくことにより行われることを特徴とする請求項１ないし４のうちいずれか１記載のソート処理方法。
【請求項７】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理プログラムにおいて、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出する処理と、ソート処理後データ格納テーブルの前記算出結果に基づいた格納先に対象データを格納する処理とを実行させることを特徴とするソート処理プログラム。
【請求項８】
複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理プログラムにおいて、
ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出する処理と、算出した順位をソート処理前データ格納テーブルに格納されたソート対象データのそれぞれに付加していき、算出した順位に従って対象データを出力する処理とを実行させることを特徴とするソート処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソート処理方法及びソート処理プログラムに係り、特に、複数のデータ間でデータ項目を比較した結果に基づいてソート処理を行うソート処理方法及びソート処理プログラムに関する。
【背景技術】
【０００２】
電子計算機を用いて複数のデータを処理する際、データ処理の用途に応じてソート処理を行うことが多く存在する。このようなソート処理を行うために広く用いられている従来技術として、例えば、２つのデータ間の大小比較を順次行って配置を入れ替えていくバブルソート方法と呼ばれるソート処理方法が知られている。また、特許文献１、特許文献２等に記載されているようなハードウエアによりソート処理を行う技術も知られている。
【特許文献１】特開平５−４０６０４号公報
【特許文献２】特開平８−２６３２７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前述したバブルソート方法と呼ばれるソート処理方法の従来技術は、ソート処理時に、データの配置変更に伴って発生する外部記憶装置へのデータ入出力処理が発生し、ソート処理対象データの件数が多くなるに従って外部記憶装置へのデータ入出力処理が多く発生するものである。このため、この従来技術は、処理すべきデータが多くなるほど、外部記憶装置に対するデータ入出力処理時間が増大し、外部記憶装置へのデータ入出力処理を行わない方法と比較してソート処理時間が長くなるという問題点を有している。
【０００４】
本発明の目的は、前述した従来技術の問題点を解決し、ソート処理対象のデータを外部記憶装置へ入出力することなく、プログラム実行環境（メモリ装置）内で処理を行うことを可能として、ソート処理を効率よく実施することができるソート処理方法及びソート処理プログラムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明によれば前記目的は、複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、ソート処理後データ格納テーブルの前記算出結果に基づいた格納先に対象データを格納することにより達成される。
【０００６】
また、前記目的は、複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位をソート処理前データ格納テーブルに格納されたソート対象データのそれぞれに付加していき、算出した順位に従って対象データを出力することにより達成される。
【０００７】
また、前記目的は、複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位の結果と、対応する対象データとを出力することにより達成される。
【０００８】
また、前記目的は、複数のデータ間のデータ項目を比較して昇順または降順にデータを並べ替えるソート処理方法において、ソート処理前データ格納テーブルに格納されたソート対象データのそれぞれが、昇順または降順の何れか一方に応じて全データの中で何番目に位置するかを比較・計算によって算出し、算出した順位をソート処理前データ格納テーブルに格納されたソート対象データのそれぞれに付加していき、昇順ソートまたは降順ソートに応じて算出した順位の若番または老番から対象データを出力していくことにより達成される。
【発明の効果】
【０００９】
本発明によれば、ソート処理における外部記憶装置への入出力処理がほとんど発生しないため、外部記憶装置とのデータ入出力処理時間がほとんど発生しなくなり、ソート処理時間を短縮することが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明によるソート処理方法及びソート処理プログラムの実施形態を図面により詳細に説明する。
【００１１】
図１は本発明の一実施形態によるソート処理方法を実施するソート処理プログラムの構成を説明する図である。図１において、１１は電子計算機、１２は外部記憶装置、１３は主記憶装置、１４はソート処理プログラム、２１、２２は入力データ、２３、２４は出力データ、２５は入力データ読み込み処理部、２６はデータ利用、出力処理部、１００は表テーブル格納処理部、２００は表テーブル内順位算出・格納処理部である。
【００１２】
本発明の実施形態によるソート処理は、ＰＣ等の電子計算機１１の主記憶装置１３内に格納されたソート処理プログラム１４により実行される。電子計算機１１は、よく知られているように、図１に示しているハードディスク等の外部記憶装置１２と、主記憶装置１３と、図１には示していないＣＰＵ、表示装置、キーボード、マウス等の入力装置を備えて構成されていればよく、また、ネットワーク等に接続してデータの授受を行う通信制御装置を備えて構成されていてもよい。そして、ソート処理プログラム１４は、外部記憶装置２１に格納されていて、主記憶装置１３にロードされた後、あるいは、通信制御装置を介して外部に設置されているサーバ等から主記憶装置１３にダウンロードされた後、同様に、主記憶装置１３にロードされた図示しないＯＳの元で図示しないＣＰＵに制御されて処理を実行する。ソート処理プログラム１４は、その詳細を後述するが、表テーブル格納処理部１００と表テーブル内順位算出・格納処理部２００とにより構成される。
【００１３】
図１に示す本発明の実施形態におけるソート処理対象のデータは、図示電子計算機１１内のプログラム外で作成されたデータ（例えば、バッチ処理等複数のプログラムにより構成されているシステムで、図示電子計算機１１内のプログラムが実行される以前に他のプログラムなどにより作成されたデータ）２１、図示電子計算機１１内の図示しないプログラム内部の処理により作成されたデータ２２であり、どちらか一方または両方を処理の対象とする。
【００１４】
図１に示す本発明の実施形態において、ソート処理対象のデータである入力データ２１、２２の一方または両方は、入力データ読み込み処理部２５を介してソート処理プログラム１４の表テーブル格納処理部１００に入力され、表テーブル格納処理部１００により後述するソート処理前データ格納テーブル３００に格納される。このソート処理前データ格納テーブル３００に格納されたデータは、表テーブル内順位算出・格納処理部２００により、各データ毎のテーブル内の順位が算出され、その順位に従って、後述するソート処理後データ格納テーブル４００の行位置に格納されていく。そして、このソート処理後データ格納テーブル４００に格納されたデータは、データ利用、出力処理部２６により、ソート処理後の出力データ２３または２４として外部記憶装置１２に出力され、あるいは、電子計算機１１内での他のアプリケーションによる利用のために主記憶装置１３に出力される。
【００１５】
図２は本発明の実施形態によるソート処理の概要を具体的なデータ例を挙げて説明する図であり、次に、これについて説明する。図２において、３００はソート処理前データ格納テーブル、４００はソート処理後データ格納テーブルであり、他の符号は図１の場合と同一である。
【００１６】
図２に示す例では、入力データ２１、２２として、同一のデータが同一の並びで配置されているものとして示しており、ここでは説明の簡略化のため、どちらか一方の入力データが表テーブル格納処理部１００によりソート処理前データ格納テーブル３００に格納されたとして示している。ソート処理前データ格納テーブル３００に格納されたデータの並びは入力データの並びと同一である。そして、図２に示す例では、表テーブル内順位算出・格納処理部２００により、ソート処理前データ格納テーブル３００に格納されたデータを昇順にソート処理後データ格納テーブル４００に格納したものとして示している。
【００１７】
前述したようなソート処理を行う表テーブル内順位算出・格納処理部２００は、まず、テーブル３００の第１行目のデータ、ここでは、データ「９０」について、このデータの値より小さい値のデータがテーブル３００の中の他の行に幾つあるかをカウントし、このカウント値より「１」多い値が、データ「９０」のソート後のテーブル４００への格納行であると決定して、データ「９０」をソート処理後データ格納テーブル４００の決定した行に格納する。説明している例では、ソート対象データが全部で５つあり、データ「９０」は、他の４つのデータより大きいのでカウントした結果が４となり、それより、「１」多い第５行がデータ「９０」のソート処理後データ格納テーブル４００への格納行になり、この行にデータ「９０」を格納する。表テーブル内順位算出・格納処理部２００は、同様な処理を行うことにより、テーブル３００内の次の行のデータ「４０」をテーブル４００の第３行に格納すればよいこと算出して、第３行にこのデータ「４０」を格納する。同様な処理を進めることにより、ソート処理後データ格納テーブル４００には、図２に示すように昇順にソートされたデータが格納される。
【００１８】
このソート処理後データ格納テーブル４００に格納された昇順にソートされたデータは、図１によりすでに説明したように、データ利用、出力処理部２６により、ソート処理後の出力データ２３または２４として外部記憶装置１２に出力され、あるいは、電子計算機１１内での他のアプリケーションによる利用のために主記憶装置１３に出力される。
【００１９】
なお、処理対象としたデータについて、このデータの値より小さい値のデータがテーブル３００の中の他の行に幾つあるかをカウントし、このカウント値より「１」多い値を求める処理については、後述するが、カウントの初期値の設定だけで、「１」を加える処理を行わなくても、カウント値だけでテーブル４００への格納行を決定することができる。
【００２０】
次に、前述で説明した処理の詳細をフローを参照して説明するが、その前に、本発明の実施形態でのデータのソート処理のために使用するカウンタについて予め説明しておく。
【００２１】
本発明で使用するカウンタは、カウンタ１〜カウンタ４の４つのカウンタである。カウンタ１は、表テーブル格納処理部１００が入力データを１つずつソート処理前データ格納テーブル３００に格納する際にデータ数をカウントするカウンタであり、カウント終了後に入力データの総件数を示している。また、カウンタ２は、ソート処理前データ格納テーブル３００に格納されているデータのうちの比較元となる入力データの項番（テーブル３００の何行目にあるデータか）を示し、カウンタ３は、ソート処理前データ格納テーブル３００に格納されているデータのうちの比較相手となる入力データの項番（テーブル３００の何行目にあるデータか）を示している。さらに、カウンタ４は、比較元と比較相手との比較の結果の数値（ソート処理後データ格納テーブル４００に格納すべき行の値）を示す。
【００２２】
図３は本発明の実施形態によるソート処理の全体の処理動作を説明するフローチャートである。
【００２３】
ソート処理の全体は、図３に示すように、表テーブル格納処理部１００が、入力データをソート処理前データ格納テーブル３００に格納する表テーブル格納処理（ステップ３０１）と、表テーブル内順位算出・格納処理部２００が、ソート処理前データ格納テーブル３００に格納されているデータのそれぞれがソート処理後データ格納テーブル４００の何行目に格納されるべきかを算出して、各データをソート処理後データ格納テーブル４００に格納する表テーブル内順位算出・格納処理（ステップ３０２）と、ソート処理後データ格納テーブル４００内のデータを、データ利用、出力処理部２６が、データの利用のために外部記憶装置１２または主記憶装置１３に出力するデータ利用、出力処理（ステップ３０３）とにより構成される。
【００２４】
図４は表テーブル格納処理部１００が、入力データをソート処理前データ格納テーブル３００に格納する表テーブル格納処理の詳細を説明するフローチャートであり、次に、これについて説明する。
【００２５】
（１）処理が開始されると、まず、前述で説明したカウンタ１に値０を設定し、入力データ２１または２２あるいは両方の１つのデータを読み込み、入力が終了したか否かを判定する（ステップ４０１〜４０３）。
【００２６】
（２）ステップ４０３の判定で、入力が終了していなければ、カウンタ１に値１を加算し、入力データをソート処理前データ格納テーブル３００のカウンタ１の値で示される行に格納する（ステップ４０４、４０５）。
【００２７】
（３）その後、ステップ４０２からの処理に戻って、次のデータを読み込んで処理を繰り返す。そして、ステップ４０３の判定で、入力が終了していれば、ここでの処理を終了する。
【００２８】
前述した処理により、入力データ２１または２２あるいは両方がソート処理前データ格納テーブル３００に格納される。
【００２９】
図５は表テーブル内順位算出・格納処理部２００が、ソート処理前データ格納テーブル３００に格納されているデータのテーブル内順位を算出してデータをソートし、ソート処理後データ格納テーブル４００に格納する処理の詳細を説明するフローチャートであり、次に、これについて説明する。
【００３０】
（１）まず、ソート処理前データ格納テーブル３００に格納されているデータのうちの比較元となる入力データの項番を示すカウンタ２に値０を設定し、このカウンタ２に値１を加算する（ステップ５０１、５０２）。
【００３１】
（２）次に、カウンタ２の値と入力データの総件数を示しているカウンタ１の値とを比較し、カウンタ１の値がカウンタ２の値より小さくなければ、すなわち、比較元データの項番が入力データの総件数より小さいか否かを判定する（ステップ５０３）。
【００３２】
（３）ステップ５０３の判定で、カウンタ１の値がカウンタ２の値より小さくなかった場合、ソート処理前データ格納テーブル３００に格納されているデータのうちの比較相手となる入力データの項番を示すカウンタ３に値０を設定し、比較元と比較相手との比較の結果の数値を示すカウンタ４に値１を設定する（ステップ５０４）。
【００３３】
（４）その後、値０を設定したカウンタ３に値１を加算し、入力データの総件数を示すカウンタ１の値と、比較相手となる入力データの項番を示すカウンタ３の値とを比較し、比較相手となる入力データの項番を示すカウンタ３の値が、入力データの総件数を示すカウンタ１の値より大きくなったか否かを判定する（ステップ５０５、５０６）。
【００３４】
（５）ステップ５０６の判定で、カウンタ３の値が、カウンタ１の値より大きくなっていなかった場合、比較元となる入力データの項番を示すカウンタ２の値で示されるテーブル３００の行に格納されている対象項目のデータと、比較相手となる入力データの項番を示すカウンタ３の値で示されるテーブル３００の行に格納されている対象項目のデータとを比較する（ステップ５０７）。
【００３５】
（６）そして、昇順ソートの場合、比較元となる入力データの項番を示すカウンタ２の値で示されるテーブル３００の行に格納されている対象項目のデータの値が、比較相手となる入力データの項番を示すカウンタ３の値で示されるテーブル３００の行に格納されている対象項目のデータの値より大きければ、カウンタ４の値に値１を加算する。また、降順ソートの場合、比較元となる入力データの項番を示すカウンタ２の値で示されるテーブル３００の行に格納されている対象項目のデータの値が、比較相手となる入力データの項番を示すカウンタ３の値で示されるテーブル３００の行に格納されている対象項目のデータの値より小さければ、カウンタ４の値に値１を加算する（ステップ５０８）。
【００３６】
（７）その後、ステップ５０５からの処理に戻って処理を繰り返し、ステップ５０６の判定で、比較相手となる入力データの項番を示すカウンタ３の値が、入力データの総件数を示すカウンタ１の値より大きくなった場合、カウンタ２の値で示される１つの比較元となる入力データに対する処理が終了したことになるので、比較元となる入力データの項番を示すカウンタ２の値で示されるテーブル３００の行に格納されている対象項目のデータを、ソート処理後データ格納テーブル４００のカウンタ４で示される値の行に格納し、ステップ５０２からの処理に戻って、次の比較元となる入力データに対する処理を続ける（ステップ５０９）。
【００３７】
（８）そして、ステップ５０３の判定で、カウンタ１の値がカウンタ２の値より小さくなった場合、すなわち、比較元データの項番が入力データの総件数より大きくなった場合、ソート処理後データ格納テーブル４００に全データの格納が完了したことになり、ここでの処理を終了する。
【００３８】
なお、前述の処理において、ソート処理対象データ内に同一内容（同一値）のデータが存在した場合、カウンタ４の値に値１を加算し、同一内容データ間において異なる番号を算出することにより、同一内容のデータが存在しても正しくソート処理を行えるようにする。
【００３９】
前述した本発明の実施形態によるソート処理方法によれば、主記憶装置内にソート対象となるデータを格納するソート処理前データ格納テーブル３００とソート処理後のデータを格納するソート処理後データ格納テーブル４００とを格納することができれば、ソート処理対象のデータを外部記憶装置へ入出力することなく、プログラム実行環境（メモリ装置）内で処理を行うことが可能となり、ソート処理を効率よく実施することができる。
【００４０】
前述した本発明の実施形態は、主記憶装置内にソート対象となるデータを格納するソート処理前データ格納テーブル３００とソート処理後のデータを格納するソート処理後データ格納テーブル４００とを格納してソート処理を行うとして説明したが、本発明は、ソート処理後のデータを格納するソート処理後データ格納テーブル４００を設けることなくソート処理を行うことができる。
【００４１】
この場合、例えば、表テーブル内順位算出・格納処理部２００が、該処理部での処理において、比較元となる入力データが入力データ全体の何番目に位置するかを示すカウンタ４の値をそのデータに対する順位番号として、ソート処理前データ格納テーブル３００の対応する入力データに付加し、全部の入力データのそれぞれに順位番号を付加した後、付加された順位番号の順に対応するデータをデータ利用、出力処理部２６を介して出力するようにすればよい。この場合、データを昇順に並べ替えるかとするか、降順に並べ替えるかにより、前述したステップ５０８で説明するような処理の変更を行うことなくどちらか一方の処理で順位を決定し、データ利用、出力処理部２６を介して出力する際に、順位番号の若番から出力するか、老番から出力するかにより、昇順の並べ替えか降順に並べ替えかを決定すればよい。
【００４２】
また、本発明は、１つの比較元となる入力データが入力データ全体の何番目に位置するかがカウンタ４の値で決まったとき、その順位番号を示すデータと対応する入力データとをデータ利用、出力処理部２６を介して出力するようにし、データ利用、出力処理部２６にその順位番号に従った位置に対応データを出力させるようにすることもできる。
【００４３】
前述したような方法によれば、より小容量のメモリ領域だけを使用してデータのソート処理を行うことができる。
【産業上の利用可能性】
【００４４】
複数のデータ間でデータ項目を比較して昇順または降順にデータを並べ替える処理を行うほぼ全ての業務システム及びプログラムに利用することができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態によるソート処理方法を実施するソート処理プログラムの構成を説明する図である。
【図２】本発明の実施形態によるソート処理の概要を具体的なデータ例を挙げて説明する図である。
【図３】本発明の実施形態によるソート処理の全体の処理動作を説明するフローチャートである。
【図４】表テーブル格納処理部が、入力データをソート処理前データ格納テーブルに格納する表テーブル格納処理の詳細を説明するフローチャートである。
【図５】表テーブル内順位算出・格納処理部が、ソート処理前データ格納テーブルに格納されているデータのテーブル内順位を算出してデータをソートし、ソート処理後データ格納テーブルに格納する処理の詳細を説明するフローチャートである。
【符号の説明】
【００４６】
１１  電子計算機
１２  外部記憶装置
１３  主記憶装置
１４  ソート処理プログラム
２１、２２  入力データ
２３、２４  出力データ
２５  入力データ読み込み処理部
２６  データ利用、出力処理部
１００  表テーブル格納処理部
２００  表テーブル内順位算出・格納処理部
３００  ソート処理前データ格納テーブル
４００  ソート処理後データ格納テーブル
【図１】
2006024115.tif 000003
【図２】
2006024115.tif 000004
【図３】
2006024115.tif 000005
【図４】
2006024115.tif 000006
【図５】
2006024115.tif 000007