(57)【要約】      （修正有）【課題】中国語などの文字種が多い言語においても、文字検索を行う際に、検索速度の更なる高速化を実現する。【解決手段】DOS/V機といわれるコンピューターで普通に使用されているASCIIコードなどによるテキスト文字とDOS/V機といわれるコンピューターに搭載されているCPUが処理を予定している命令文として使用されている機械語の両方に共通して存在する特性を利用して文字を分類して、文字検索を行う事で検索処理速度を高速化する。【選択図】図１
2012256135.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成するものであり、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、以下に、機械語を取得するとは、ASCIIコードの１文字分の機械語を取得するという事であり、ASCIIコードの１文字分の機械語を取得するという事は、4bitのBCD数値を１単位とした２単位分の合計8bitのデーターを１文字として取得するという事とし、以下に、機械語に変換すると説明している場合の処理工程は、データーから機械語の4bitを一単位としたBCD数値を取得して、4bitを１単位とし２単位の合計8bitのデーターを１文字として表し、BCD数値とBCD数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とし、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク１、マーク２と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、検索対象ファイルをバイナリー形式で全て読み込んだデーターを一つづつ検索対象配列に代入し、２文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が１文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列のコピー配列を作成し、このコピーした配列を検索対象配列２と仮称し、検索対象配列２の全データーを機械語に変換したデーターを代入する為の検索対象配列２のサイズと同じ配列サイズで配列を作成し、この配列を機械語配列と仮称し、検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを作成して、機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを一つづつ機械語配列に代入し、機械語配列と同じサイズで配列を作成し、この配列をRL機械語配列と仮称し、機械語配列に代入された各データーを4bitのBCD数値の左辺と右辺とを逆転させ、4bitのBCD数値と4bitのBCD数値の間には、区切り文字としてスペースを挿入したデーターを作成して、RL機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして作成した4bitのBCD数値の左辺と右辺とを逆転させたデーターを一つづつRL機械語配列に代入し、配列を作成し、この配列を出現文字配列と仮称し、出現文字配列に代入するデーターを全て��成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、ソート配列と仮称し、RL機械語配列に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートしてソートしたデーターをソート配列の最初の位置から代入する度に一つづつ順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称するが、基本的に、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現繰り返し処理では、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、この末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査するという処理をソート配列に代入された全てのデーターに対して繰り返し処理する事で出現繰り返し処理を終了し、出現繰り返し処理を終了したら、出現文字配列作成工程も終了し、出現文字配列の配列サイズと同じサイズで配列を作成し、この配列を右辺配列と仮称し、出現文字配列に代入された全てのデーターの右辺に相当する4bitのBCD数値を取得して、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列に代入された最初から最後までの全てのデーターの右辺に相当する4bitのBCD数値を一つづつ右辺配列代入し、右辺を基準に分類する為に右辺配列と同じ配列サイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーター全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較して同じであった場合は、分類配列の最初の位置（末尾とも言える）にRL機械語配列に代入されたデーターを代入する。分類配列の最初の位置（末尾とも言える）に代入するRL機械語配列に代入されたデーターが２つ以上あった場合は、複数あるデーターとデーターの区切り文字としてマーク１を既にあったデーターに連結し、その後ろに新たに見つけ出したRL機械語配列に代入されたデーターを連結して分類配列の最初の位置（末尾とも言える）に代入し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較し終わったら、右辺配列に代入された次のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較するという繰り返し処理を行うが、右辺配列に代入されたデーター全ての検査を終了する事で検査繰り返し処理を終了し、配列を分類配列のサイズで作成し、この配列を文字数配列と仮称し、文字数配列を作成する為に分類配列の最初のデーターから最後のデーターまで以下の処理を繰り返し行うが、の繰り返し処理を繰り返し処理１と仮称し、繰り返し処理１では、検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１と仮称し、分岐１で検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、検査対象の分類配列の最初の位置に位置に代入されたデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列のデーターの位置を示すインデックスが一つだけの場合は同じであったRL機械語配列のデーターの位置を示すインデックスを取得して、文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク２を区切り文字として使用して複数あるデーターとデーターの間に入れてRL機械語配列のインデックスを連結して文字数配列の最初の位置に代入し、分岐１の検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、検査対象の分類配列に代入されたデーターをマーク１で分割したデーターを代入する配列をマーク１で分割できる個数分のデーターを格納できる配列サイズで作成し、この配列を一時配列と仮称し、検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを作成して、一時配列の最初の位置から代入する度に一づつ代入する位置をずらして、作成した検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを全て一つづつ一時配列に代入し、以下の処理を一時配列に代入されたデーター数分、繰り返し処理を行うが、この繰り返し処理を一時配列繰り返し処理と仮称し、一時配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列に代入されたデーターの位置を示すインデックスが一つであった場合は同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを取得して文字数配列の最初のデーターとして代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切りマークとして、マーク２を複数あるデーターとデーターの間に入れて同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを連結して文字数配列の最初の位置に代入し、一時配列のデーターをひとつ検査し終わる度に区切り文字としてマーク１を文字数配列の最初の位置に代入されたデーターに連結して次の一時配列のデーターを検査し、一時配列のデーターを全て検査し終わったら、一時配列繰り返し処理を終了し、これで分岐１を終了し、次に、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行うが、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理１を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理１を終了し、２個のサイズで配列を作成し、この配列を検査機械語配列と仮称し、検査配列に代入された２個のデーターの最初の位置のデーターを機械語に変換して検査機械語配列の最初の位置に代入し、検査配列に代入された最後の位置のデーターを機械語に変換して検査機械語配列の最後の位置に代入し、２個のサイズで配列をふたつ作成し、各々の配列を左機械語配列、右機械語配列と仮称し、検査機械語配列に代入した最初の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最後の位置に代入し、検査機械語配列に代入した最初の位置のデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置のデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最後の位置に代入し、２個のサイズで配列を作成し、この配列を番号配列と仮称し、右機械語配列に代入された最初の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最初の位置にデーターとして代入し、右機械語配列に代入された最後の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最後の位置にデーターとして代入し、２個のサイズで配列を作成し、この配列を抽出配列と仮称し、番号配列の最初の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最初の位置に代入し、番号配列の最後の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最後の位置に代入し、抽出配列に代入されたふたつのデーターを処理する為に以下の処理を行うが、
この抽出配列に代入された最初の位置に代入されたデーターに対する処理を第一処理と仮称し、抽出配列に代入された最後の位置に代入されたデーターに対する処理を第二処理と仮称し、この第一処理と第二処理では、抽出配列のデーターの中から左機械語配列と同じ左辺に相当する4bitのBCD数値と同じデーターを探し出すという処理を行う事とし、探し出した結果を代入する為の変数をふたつ作成し、各々の変数を決定変数１、決定変数２と仮称し、配列をふたつ作成し、この配列をそれぞれ分離配列１と分離配列２仮称し、分離配列１と分離配列２に代入されるデーター数が解らないので分離配列１と分離配列２のサイズは、必要だと思われる最低限度以上のサイズで配列を作成し、抽出配列に代入されている最初の位置と最後の位置に代入されている二つのデーターを検査して処理する事とし、第一処理では、抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐２と仮称し、分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列１の最初の位置に抽出配列の最初の位置に代入されたデーターを代入し、分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列１の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターの全てを一つづつ分離配列１に代入し、これで分岐２を終了し、左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列１のデーターの位置を示すインデックスを取得し、決定変数１に取得したインデックスを代入し、左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、何も行わない事とし、これで第一処理を終了し、次に第二処理を行う事とし、抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合とマーク１で区切られている場合とに分岐し、この分岐を分岐３と仮称し、分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列２の最初の位置に抽出配列の最後の位置に代入されたデーターを代入し、分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを全て一つづつ分離配列２に代入し、これで分岐３を終了し、左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列２のデーターの位置を示すインデックスを取得し、決定変数２に取得したインデックスを代入し、左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、何も行わない事とし、これで、第二処理を終了し、２個のサイズで配列を作成し、この配列を暫定文字数配列と仮称し、番号配列に代入された最初の位置に代入されたデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最初の位置に代入し、番号配列に代入された最後の位置に代入されたのデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最後の位置に代入し、ふたつの配列を作成し、このふたつの配列を各々、決定文字数配列1と決定文字数配列２と仮称し、決定文字数配列1と決定文字数配列２の両方ともに代入するデーター数が解らないので必要最低限と思われるサイズ以上の任意のサイズで配列を作成し、暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐４と仮称し、分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、決定文字数配列1の最初の位置に暫定文字数配列の最初の位置に代入されたデーターを代入し、分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列２と仮称し、暫定文字数配列の最初のデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最初のデーターをマーク１で複数個に分割して、マーク１を削除したデーターを全て一つづつ一時配列２代入し、決定変数１のデーターを一時配列２に代入されたデーターの位置を示すインデックスとして使用して一時配列２のインデックスの位置に代入されたデーターを取得し、取得したデーターを決定文字数配列1の最初の位置に代入し、これで分岐４を終了し、暫定文字数配列の最初の位置に代入されたデーターがマーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐５と仮称し、分岐５で暫定文字数配列の最初のデーターがマーク２で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列1の最初の位置に代入されたデーターを代入し、分岐５で暫定文字数配列の最初のデーターがマーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この��列を仮決定行数配列と仮称し、決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ仮決定行数配列に代入し、これで分岐５を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列1の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初の位置から最後までの全てのデーターを一つづつ決定文字数配列1に代入し、暫定文字数配列の最後のデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐６と仮称し、分岐６で暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られていない場合は、決定文字数配列２の最初の位置に暫定文字数配列の最後の位置に代入されたデーターを代入し、分岐６で暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られている場合は、暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列３と仮称し、暫定文字数配列の最後の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列３の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最後の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列３に代入し、決定変数２のデーターを一時配列３に代入されたデーターの位置を示すインデックスとして使用して一時配列３のデーターを取得し、取得したデーターを決定文字数配列２の最初の位置に代入し、これで分岐６を終了し、暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐７と仮称し、分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列２の最初の位置に代入されたデーターを代入し、分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称し、決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て仮決定行数配列に一つづつ代入し、これで分岐７を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列２の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初から最後までの全てのデーターを決定文字数配列２に一つづつ代入し、検索対象配列と同じサイズの配列を作成し、この配列を検索結果配列と仮称し、全角半角問わない任意の文字を決定し、これをマーク３と仮称し、マーク３は、マーク１とマーク２の区切り文字と同じであっても良いものとし、決定文字数配列１に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のデーターを代入する位置を示すインデックスの位置にマーク３を代入し、決定文字数配列２に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のインデックスの位置にマーク３を代入し、検索結果配列の全てのデーターを検査し、検索結果配列を検査してマーク３があったら、検索結果配列の次の配列のデーターにマーク３があるかどうかを検査し、検索結果配列の次の配列のデーターにマーク３がある場合は、次の検査データー位置を二つ進めて、検索結果配列の次の配列のデーターにマーク３がない場合は、注目配列のデーターのマーク３を削除して、次の検査データー位置を二つ進めるという処理を行い、検索結果配列に代入されたデーターの全てを検査し終わらせる事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
【請求項２】
コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成するものであり、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、以下に、機械語を取得するとは、ASCIIコードの１文字分の機械語を取得するという事であり、ASCIIコードの１文字分の機械語を取得するという事は、4bitのBCD数値を１単位とした２単位分の合計8bitのデーターを１文字として取得するという事とし、以下に、機械語に変換すると説明している場合の処理工程は、データーから機械語の4bitを一単位としたBCD数値を取得して、4bitを１単位とし２単位の合計8bitのデーターを１文字として表し、BCD数値とBCD数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とし、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク１、マーク２と仮称し、配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、読み込んだデーターを検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、読み込んだデーターを一つづつ検索対象配列に代入し、２文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が１文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称し、検索対象配列のインデックスは、0から始まっているものとし、検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入し、検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称し、検索対象配列に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成するが、このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成し、作成した左右が逆転し、スペースで区切られた１文字の文字をRL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、一つづつ全てRL検索対象配列２に代入し、配列を作成し、この配列を出現文字配列と仮称し、〔請求項１〕の出現文字配列作成工程と同じ処理で、RL検索対象配列２に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを作成して、出現文字配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成したRL検索対象配列２に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを全て一つづつ出現文字配列に代入し、配列を作成し、この配列を右辺配列と仮称し、出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行事で右辺配列を完成させるが、この工程を右辺配列作成処理と仮称し、出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称し、出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入し、仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了するが、重複したデーターを削除したデーターの作成方法は、〔請求項１〕の出現文字配列作成工程と同じ方法で行う事とし、右辺配列のサイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入し、分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字としてマーク１を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入し、右辺配列に代入された最初のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了し、分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列２または、検索対象配列２のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサ��ズで作成し、この配列を文字数配列と仮称し、以下の繰り返し処理を行うが、この繰り返し処理を繰り返し処理３と仮称し、繰り返し処理３では、分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐８と仮称し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列２に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つだけの場合は同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切り文字として、マーク２を既に記録してあるデーターと新たに見つけたRL検索対象配列２のインデックスとの間に入れて連結して代入し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割したデーター数分のサイズで配列を作成し、この配列を一時配列４と仮称し、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを作成して、一時配列４の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを全て一つづつ一時配列４に代入し、変数を作成し、この変数を仮一時変数と仮称し、一時配列４に代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を一時配列４繰り返し処理と仮称し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し、一時配列４の最初の位置のデーターとRL検索対象配列２に代入されたデーターが同じであった場合に、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して、仮一時変数に代入するが、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク２を文字区切りとして連結して、新たに見つけたRL検索対象配列２のデーターが代入されている位置を示すインデックスを取得して、その取得したデーターを連結して仮一時変数に代入し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し終わったら、一時配列４のデーターをひとつ検査し終わる度に区切り文字としてマーク１を仮一時変数に代入されたデーターに連結して次の一時配列４のデーターを検査する事とし、一時配列４に代入されたデーター全てを検査し終わったら、一時配列４繰り返し処理を終了し、文字数配列の最初の位置に仮一時変数のデーターを代入し、これで分岐８を終了し、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う事とし、分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理３を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理３を終了し、変数を作成し、この変数を番号変数と仮称し、検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入し、変数を作成し、この変数を抽出変数と仮称し、番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用して分類配列のデーターを読み込んで、抽出変数に代入し、配列を作成し、この配列を分離配列と仮称し、抽出変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐９と仮称し、分岐９で抽出変数に代入されたデーターがマーク１で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入し、分岐９で抽出変数に代入されたデーターがマーク１で区切られている場合は、抽出変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして分離配列を作成しなおして、抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ分離配列に代入し、これで分岐９を終了し、分離配列のデーターの中から検査配列の最初の位置に代入されたデーターと同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得し、探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成し、この変数を決定変数と仮称し、決定変数に探し出して取得した分離配列の位置を示すインデックスを代入し、変数を作成し、この変数を暫定文字数変数と仮称し、番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入し、配列を作成し、この配列を決定文字数配列と仮称し、変数を作成し、この変数を一時変数２と仮称し
、暫定文字数変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１０と仮称し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られていない場合は、一時変数２に暫定文字数変数に代入されたデーターを代入し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られている場合は、暫定文字数変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列５と仮称し、暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列５の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列５に代入し、決定変数に代入されたデーターを一時配列５に代入されたデーターの位置を示すインデックスとして使用して一時配列５のデーターを読み込んで一時変数２に代入し、これで分岐１０を終了し、一時変数２に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１１と仮称し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られていない場合は、決定文字数配列の最初の位置に一時変数２に代入されたデーターを代入し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られている場合は、マーク２で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入し、これで分岐１１を終了し、決定文字数配列のデーターを少ない順番でソートし、配列を作成し、この配列を決定文字数配列２と仮称し、全角半角問わない任意の文字を指定し、これをマーク３と仮称し、マーク３は、マーク１または、マーク２の区切り文字と同じであっても良いものとし、決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列に代入する事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターで文字検索を行う際の高速化に関する
【背景技術】
【０００２】
圧縮技術に関する文献としては、〔非特許文献１〕がある。
【非特許文献１】奥村晴彦・山崎敏  著  LHAとZIP  圧縮アルゴリズム×プログラミング入門  ソフトバンク  パブリッシング株式会社  2003/12/6 初版
【０００３】
この〔非特許文献１〕は、LZHとZIP形式の圧縮技術について詳しく記述している。この〔非特許文献１〕の中で、文字の検索速度の向上という問題の解決方法として従来技術を解説している。しかし、本発明の２分割文字検索ソフトウェアの様な処理工程は、記載されていない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術では、検索しようとしているファイルに記録された文字を１文字づつハッシュコードと呼ばれる０から９までの数値を出力させて、出力させたハッシュコードを基に文字を分類し、分類した中から文字を探し出すという方法で検索速度を高速化するものである。このハッシュコードを基に文字を分類する方法だと、全文検索と比較すると最大で１０倍の処理速度という事になる。しかしながら、中国語などの検索する文字種が多い言語の文字検索などでは、より高速な検索技術が必要であると考えられる。また、できるだけ安価なコンピューターで検索する事を考えるとやはり、もっと、高速な検索技術が期待されていると思われる。
【課題を解決するための手段】
【０００５】
コンピューターで普通に使われているテキスト文字（日本では、ASCIIコード２文字で１文字を表す文字とASCIIコード１文字で表す文字）を、テキスト文字と略して記述する事とする。また、テキスト文字の事を文字コードで書かれた文字という事がある。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。この機械語でASCIIコードを表すと、4bitを１単位としたBCD数値と呼ばれる数値を２個使用して、8bitで１文字とした機械語となる。また、以降、4bitを１単位としたBCD数値と呼ばれる数値１個の事を4bitを１単位としたBCD数値と呼ばれる数値１文字と表現したり、4bitを１単位としたBCD数値と呼ばれる数値２個の事を4bitを１単位としたBCD数値と呼ばれる数値２文字と表現したりする。
【０００６】
また、配列とは、データーを一個から複数のデーターを代入する事が出来るものを言い、配列サイズまたは、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列に代入したデーターの事を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶものである。また、配列のサイズの事を配列サイズと呼ぶ事がある。配列の型とは、配列に代入する事ができる一個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数の指定を行う場合に用いるものである。変数にも配列と同じく型が存在し、型の意味は、配列の型の場合と全く同じである。
【０００７】
また、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成する時点で配列のインデックスを何番から作成するという具合に配列のインデックスを指定せずに配列を作成すると通常、配列のデーターを代入できる部分の先頭の位置のインデックスは０番となり順次１づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。これによって、プログラマーは、配列のインデックスを指定する事で簡便に配列の位置を指定する事ができる様にしているものである。
【０００８】
日本語をコンピューター上でテキスト文字にすると、文字コードでファイルに記述されるようになっている。その為、日本語のかたかなで「アイウエオ」という文字列が書かれたファイルをバイナリー形式で読み込んで配列に代入する為に必要な配列サイズで配列を作成し、その配列に日本語のかたかなで「アイウエオ」という文字列が書かれたファイルをバイナリー形式で読み込んだデーターを1byteづつ、最初の配列から順に配列に代入すると以下の様になる。何も指定せずに配列を作成すると、配列の最初のインデックスが０であるというのは、常識である。０は、偶数であり、１が奇数である事も当然の事である。
131
65
131
67
131
69
131
71
131
73
必ず、131という文字コードが互い違いに記述されている様子がうかがえると思う。和文の文章の場合は、殆どの場合がこの様な文字コードの組み合わせである。つまり、8bitを１文字として、２文字で１文字を表す方式になっている。8bitを１文字として表現可能な数値は、0から255までの数値である。従って、配列インデックスの偶数データーの131の文字コードの方を基準に分類するか、または、その逆に、配列インデックスの奇数データーの65、67、69、71、73の方を基準に分類すれば、16bitの文字を分類整理する場合、0から255までの数値で分類する事が可能にり高速検索が可能になるはずなのである。配列のインデックスの偶数値のデーターを基準にする場合と配列のインデックスの奇数値のデーターを基準にする場合との二種類があるが、どちらを基準に分類した場合でも、この分類方法で日本語を分類すると最大で２５６種類に分類する事が出来るという事になる。日本語の文字が２５６種類に分類する事が出来るほど大量に文字種があるかどうかは検証しておりません。これは、理論値です。実際には、２５６×２５６個の文字数が存在しないというのは明白ですので最速を目指すコードを記述する場合は、後者の65、67、69、71、73の方を基準に分類する方法を利用する事が良い方法であると考えられる。なぜなら、分類する数が多くなれば多くなるほど高速検索が可能になるはずだからである。しかし、分類する数が多くなれば多くなるほど高速検索が可能になるといっても、当然、限界がある。この限界を超えて分類した場合は、段々と検索処理時間が長くなっていくはずである。分類する事による検索時間の短縮方法に於ける分類限界は、未だに計算していないので、今のところ、ここまでが分類による検索処理時間の短縮法方に於ける限界であると、御説明できないところである。さて、従来技術のハッシュコードで分類する場合と比較すると単純計算で最大25.6倍の高速検索処理が出来るという事になる。また、配列インデックスの偶数データーを基準に分類する方法と配列インデックスの奇数データーを基準に分類する方法のどちらの場合を利用しても本発明のレパートリーであると明言する。また、これ以降、このテキスト文字の特性を利用して分類する方法で検索する方法をテキストレベルの検索と呼ぶ事とする。
【０００９】
分類する数が多くなれば多くなるほど高速検索が可能になるといっても、当然、限界があると前述しましたが、その限界がなぜあるのかの説明をこの段落で説明する。とてつもなく簡単な話ですが、全件検索するのと差が無い分類数にまで分類数を増やす事は出来ないという事である。例えば、２５６文字書かれたファイルがあると仮定する。このファイルに書かれた文字のすべてが違う文字であった場合、このファイルに書かれた文字を２５６種に分類すると、全件検索しているのと同じ事になってしまうのである。このような分類限界があるという事である。この分類限界は、機械語レベルでの検索でも、同じ様な限界が存在する。突然、機械語レベルでの検索という言葉を使用するがこの機械語レベルの検索という言葉の定義は、段落〔００１２〕を参照の事。また、従来のハッシュコードで分類した場合との処理速度の比較という意味では、テキストレベルでの検索と機械語レベルでの検索の両方ともに処理してみてどちらが速い処理になるのかを検証してから処理するかべきなのか、または、最初からこの方法だけを使用するといった具合に処理速度を比較検証せずに処理すべきなのか問題になるところである。実施例では、この分類限界による処理速度の差を完全に無視した処理工程で処理するソフトウェアを作成しました。つまり、どちらが早いかを確認する事で速い処理を行うという様な処理工程を一切挿入しないで処理しているという事である。また、従来のハッシュコードで分類した場合との処理速度の比較を行う事で処理速度の速い処理を選択するという方法も考えられるが、実施例では、この様な処理も行わなかった。
【００１０】
ASCIIコードを使用していない他のコンピューターでも本発明のテキストレベルの検索と同じ事が出来ると考えられる。第一の方法として、一定のbit数で１文字の数値を表し、２文字の数値で１文字の文字を表す方式のコードを使用している場合、どちらか一方の１文字の数値を基準に分類する事ができると考えられるからである。第二の方法として、ASCIIコードを使用していない他のコンピューターでも、分類する為の検索用特殊文字コードを作成する事で本発明のソフトウェアと同じ事を行う事ができると考えている。この場合は、分類する為の検索用特殊文字コードをASCIIコードと同じものにし、ASCIIコードを使用していない他のコンピューターの文字コードを分類する為の検索用特殊文字コードに変換する事で実現する事が可能になるはずである。ASCIIコードを使用していない他のコンピューターでも本発明のテキストレベルの検索を行う、第一の方法と第二の方法の両方とも本発明のソフトウェアである事を明言する。
【００１１】
DOS/V機コンピューターと呼ばれるコンピューターで使用されている機械語でASCIIコードの0から255までの256文字全ての文字コードを表すと以下の様になる。4bitを１単位とし、8bitで１文字とした機械語となるのである。0と1で構成されたいわゆる２進数と呼ばれる文字列に変換した２進数が4bitに満たない場合は、4bitに満たない分だけ後方に0を連結して合計で4bitになる様にしたような特殊な4bitの数値である。この特殊な4bitの数値を普通BCD数値と呼んでいる。ASCIIコードの機械語は、8bitなのでわかり易いように4bitづつに分ける為にスペースをBCD数値とBCD数値の間に挿入して表記した。下記のBCD数値は、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUの機械語を図７の＜本発明に使用した機材の説明図＞で説明している実施例で用いた機材を用いてBCD数値を取得し、記述したものである。CPUが処理を予定している機械語は、CPUによって全部違うものになっている。
0000 0000  は、ASCIIコードの0である。
1000 0000  は、ASCIIコードの1である。
0100 0000  は、ASCIIコードの2である。
1100 0000  は、ASCIIコードの3である。
0010 0000  は、ASCIIコードの4である。
1010 0000  は、ASCIIコードの5である。
0110 0000  は、ASCIIコードの6である。
1110 0000  は、ASCIIコードの7である。
0001 0000  は、ASCIIコードの8である。
1001 0000  は、ASCIIコードの9である。
0101 0000  は、ASCIIコードの10である。
1101 0000  は、ASCIIコードの11である。
0011 0000  は、ASCIIコードの12である。
1011 0000  は、ASCIIコードの13である。
0111 0000  は、ASCIIコードの14である。
1111 0000  は、ASCIIコードの15である。
0000 1000  は、ASCIIコードの16である。
1000 1000  は、ASCIIコードの17である。
0100 1000  は、ASCIIコードの18である。
1100 1000  は、ASCIIコードの19である。
0010 1000  は、ASCIIコードの20である。
1010 1000  は、ASCIIコードの21である。
0110 1000  は、ASCIIコードの22である。
1110 1000  は、ASCIIコードの23である。
0001 1000  は、ASCIIコードの24である。
1001 1000  は、ASCIIコードの25である。
0101 1000  は、ASCIIコードの26である。
1101 1000  は、ASCIIコードの27である。
0011 1000  は、ASCIIコードの28である。
1011 1000  は、ASCIIコードの29である。
0111 1000  は、ASCIIコードの30である。
1111 1000  は、ASCIIコードの31である。
0000 0100  は、ASCIIコードの32である。
1000 0100  は、ASCIIコードの33である。
0100 0100  は、ASCIIコードの34である。
1100 0100  は、ASCIIコードの35である。
0010 0100  は、ASCIIコードの36である。
1010 0100  は、ASCIIコードの37である。
0110 0100  は、ASCIIコードの38である。
1110 0100  は、ASCIIコードの39である。
0001 0100  は、ASCIIコードの40である。
1001 0100  は、ASCIIコードの41である。
0101 0100  は、ASCIIコードの42である。
1101 0100  は、ASCIIコードの43である。
0011 0100  は、ASCIIコードの44である。
1011 0100  は、ASCIIコードの45である。
0111 0100  は、ASCIIコードの46である。
1111 0100  は、ASCIIコードの47である。
0000 1100  は、ASCIIコードの48である。
1000 1100  は、ASCIIコードの49である。
0100 1100  は、ASCIIコードの50である。
1100 1100  は、ASCIIコードの51である。
0010 1100  は、ASCIIコードの52である。
1010 1100  は、ASCIIコードの53である。
0110 1100  は、ASCIIコードの54である。
1110 1100  は、ASCIIコードの55である。
0001 1100  は、ASCIIコードの56である。
1001 1100  は、ASCIIコードの57である。
0101 1100  は、ASCIIコードの58である。
1101 1100  は、ASCIIコードの59である。
0011 1100  は、ASCIIコードの60である。
1011 1100  は、ASCIIコードの61である。
0111 1100  は、ASCIIコードの62である。
1111 1100  は、ASCIIコードの63である。
0000 0010  は、ASCIIコードの64である。
1000 0010  は、ASCIIコードの65である。
0100 0010  は、ASCIIコードの66である。
1100 0010  は、ASCIIコードの67である。
0010 0010  は、ASCIIコードの68である。
1010 0010  は、ASCIIコードの69である。
0110 0010  は、ASCIIコードの70である。
1110 0010  は、ASCIIコードの71である。
0001 0010  は、ASCIIコードの72である。
1001 0010  は、ASCIIコードの73である。
0101 0010  は、ASCIIコードの74である。
1101 0010  は、ASCIIコードの75である。
0011 0010  は、ASCIIコードの76である。
1011 0010  は、ASCIIコードの77である。
0111 0010  は、ASCIIコードの78である。
1111 0010  は、ASCIIコードの79である。
0000 1010  は、ASCIIコードの80である。
1000 1010  は、ASCIIコードの81である。
0100 1010  は、ASCIIコードの82である。
1100 1010  は、ASCIIコードの83である。
0010 1010  は、ASCIIコードの84である。
1010 1010  は、ASCIIコードの85である。
0110 1010  は、ASCIIコードの86である。
1110 1010  は、ASCIIコードの87である。
0001 1010  は、ASCIIコードの88である。
1001 1010  は、ASCIIコードの89である。
0101 1010  は、ASCIIコードの90である。
1101 1010  は、ASCIIコードの91である。
0011 1010  は、ASCIIコードの92である。
1011 1010  は、ASCIIコードの93である。
0111 1010  は、ASCIIコードの94である。
1111 1010  は、ASCIIコードの95である。
0000 0110  は、ASCIIコードの96である。
1000 0110  は、ASCIIコードの97である。
0100 0110  は、ASCIIコードの98である。
1100 0110  は、ASCIIコードの99である。
0010 0110  は、ASCIIコードの100である。
1010 0110  は、ASCIIコードの101である。
0110 0110  は、ASCIIコードの102である。
1110 0110  は、ASCIIコードの103である。
0001 0110  は、ASCIIコードの104である。
1001 0110  は、ASCIIコードの105である。
0101 0110  は、ASCIIコードの106である。
1101 0110  は、ASCIIコードの107である。
0011 0110  は、ASCIIコードの108である。
1011 0110  は、ASCIIコードの109である。
0111 0110  は、ASCIIコードの110である。
1111 0110  は、ASCIIコードの111である。
0000 1110  は、ASCIIコードの112である。
1000 1110  は、ASCIIコードの113である。
0100 1110  は、ASCIIコードの114である。
1100 1110  は、ASCIIコードの115である。
0010 1110  は、ASCIIコードの116である。
1010 1110  は、ASCIIコードの117である。
0110 1110  は、ASCIIコードの118である。
1110 1110  は、ASCIIコードの119である。
0001 1110  は、ASCIIコードの120である。
1001 1110  は、ASCIIコードの121である。
0101 1110  は、ASCIIコードの122である。
1101 1110  は、ASCIIコードの123である。
0011 1110  は、ASCIIコードの124である。
1011 1110  は、ASCIIコードの125である。
0111 1110  は、ASCIIコードの126である。
1111 1110  は、ASCIIコードの127である。
0000 0001  は、ASCIIコードの128である。
1000 0001  は、ASCIIコードの129である。
0100 0001  は、ASCIIコードの130である。
1100 0001  は、ASCIIコードの131である。
0010 0001  は、ASCIIコードの132である。
1010 0001  は、ASCIIコードの133である。
0110 0001  は、ASCIIコードの134である。
1110 0001  は、ASCIIコードの135である。
0001 0001  は、ASCIIコードの136である。
1001 0001  は、ASCIIコードの137である。
0101 0001  は、ASCIIコードの138である。
1101 0001  は、ASCIIコードの139である。
0011 0001  は、ASCIIコードの140である。
1011 0001  は、ASCIIコードの141である。
0111 0001  は、ASCIIコードの142である。
1111 0001  は、ASCIIコードの143である。
0000 1001  は、ASCIIコードの144である。
1000 1001  は、ASCIIコードの145である。
0100 1001  は、ASCIIコードの146である。
1100 1001  は、ASCIIコードの147である。
0010 1001  は、ASCIIコードの148である。
1010 1001  は、ASCIIコードの149である。
0110 1001  は、ASCIIコードの150である。
1110 1001  は、ASCIIコードの151である。
0001 1001  は、ASCIIコードの152である。
1001 1001  は、ASCIIコードの153である。
0101 1001  は、ASCIIコードの154である。
1101 1001  は、ASCIIコードの155である。
0011 1001  は、ASCIIコードの156である。
1011 1001  は、ASCIIコードの157である。
0111 1001  は、ASCIIコードの158である。
1111 1001  は、ASCIIコードの159である。
0000 0101  は、ASCIIコードの160である。
1000 0101  は、ASCIIコードの161である。
0100 0101  は、ASCIIコードの162である。
1100 0101  は、ASCIIコードの163である。
0010 0101  は、ASCIIコードの164である。
1010 0101  は、ASCIIコードの165である。
0110 0101  は、ASCIIコードの166である。
1110 0101  は、ASCIIコードの167である。
0001 0101  は、ASCIIコードの168である。
1001 0101  は、ASCIIコードの169である。
0101 0101  は、ASCIIコードの170である。
1101 0101  は、ASCIIコードの171である。
0011 0101  は、ASCIIコードの172である。
1011 0101  は、ASCIIコードの173である。
0111 0101  は、ASCIIコードの174である。
1111 0101  は、ASCIIコードの175である。
0000 1101  は、ASCIIコードの176である。
1000 1101  は、ASCIIコードの177である。
0100 1101  は、ASCIIコードの178である。
1100 1101  は、ASCIIコードの179である。
0010 1101  は、ASCIIコードの180である。
1010 1101  は、ASCIIコードの181である。
0110 1101  は、ASCIIコードの182である。
1110 1101  は、ASCIIコードの183である。
0001 1101  は、ASCIIコードの184である。
1001 1101  は、ASCIIコードの185である。
0101 1101  は、ASCIIコードの186である。
1101 1101  は、ASCIIコードの187である。
0011 1101  は、ASCIIコードの188である。
1011 1101  は、ASCIIコードの189である。
0111 1101  は、ASCIIコードの190である。
1111 1101  は、ASCIIコードの191である。
0000 0011  は、ASCIIコードの192である。
1000 0011  は、ASCIIコードの193である。
0100 0011  は、ASCIIコードの194である。
1100 0011  は、ASCIIコードの195である。
0010 0011  は、ASCIIコードの196である。
1010 0011  は、ASCIIコードの197である。
0110 0011  は、ASCIIコードの198である。
1110 0011  は、ASCIIコードの199である。
0001 0011  は、ASCIIコードの200である。
1001 0011  は、ASCIIコードの201である。
0101 0011  は、ASCIIコードの202である。
1101 0011  は、ASCIIコードの203である。
0011 0011  は、ASCIIコードの204である。
1011 0011  は、ASCIIコードの205である。
0111 0011  は、ASCIIコードの206である。
1111 0011  は、ASCIIコードの207である。
0000 1011  は、ASCIIコードの208である。
1000 1011  は、ASCIIコードの209である。
0100 1011  は、ASCIIコードの210である。
1100 1011  は、ASCIIコードの211である。
0010 1011  は、ASCIIコードの212である。
1010 1011  は、ASCIIコードの213である。
0110 1011  は、ASCIIコードの214である。
1110 1011  は、ASCIIコードの215である。
0001 1011  は、ASCIIコードの216である。
1001 1011  は、ASCIIコードの217である。
0101 1011  は、ASCIIコードの218である。
1101 1011  は、ASCIIコードの219である。
0011 1011  は、ASCIIコードの220である。
1011 1011  は、ASCIIコードの221である。
0111 1011  は、ASCIIコードの222である。
1111 1011  は、ASCIIコードの223である。
0000 0111  は、ASCIIコードの224である。
1000 0111  は、ASCIIコードの225である。
0100 0111  は、ASCIIコードの226である。
1100 0111  は、ASCIIコードの227である。
0010 0111  は、ASCIIコードの228である。
1010 0111  は、ASCIIコードの229である。
0110 0111  は、ASCIIコードの230である。
1110 0111  は、ASCIIコードの231である。
0001 0111  は、ASCIIコードの232である。
1001 0111  は、ASCIIコードの233である。
0101 0111  は、ASCIIコードの234である。
1101 0111  は、ASCIIコードの235である。
0011 0111  は、ASCIIコードの236である。
1011 0111  は、ASCIIコードの237である。
0111 0111  は、ASCIIコードの238である。
1111 0111  は、ASCIIコードの239である。
0000 1111  は、ASCIIコードの240である。
1000 1111  は、ASCIIコードの241である。
0100 1111  は、ASCIIコードの242である。
1100 1111  は、ASCIIコードの243である。
0010 1111  は、ASCIIコードの244である。
1010 1111  は、ASCIIコードの245である。
0110 1111  は、ASCIIコードの246である。
1110 1111  は、ASCIIコードの247である。
0001 1111  は、ASCIIコードの248である。
1001 1111  は、ASCIIコードの249である。
0101 1111  は、ASCIIコードの250である。
1101 1111  は、ASCIIコードの251である。
0011 1111  は、ASCIIコードの252である。
1011 1111  は、ASCIIコードの253である。
0111 1111  は、ASCIIコードの254である。
1111 1111  は、ASCIIコードの255である。
【００１２】
以上の様に、左辺の4bitは、２進数の0から15までとし、右辺の4bitは、0から15までの２進数となっている。4bitで記述されている右辺は、16文字ごとに1づつ大きな数値となる。従って、右辺の4bitを基準に分類すると16種類に文字を分類する事が出来るという事になる。また、その逆に左辺を基準に分類しても、右辺を基準に分類した場合と同じく１６種類に分類するが出来るという事になる。従来技術のハッシュコードで分類する場合と比較すると単純計算で約1.5倍の高速検索処理が出来るという事になる。また、この機械語の特性を利用して分類する方法で検索する方法を機械語レベルの検索と呼ぶ事とする。
【００１３】
機械語レベルの検索は、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類するものであるから、DOS/V機コンピューターと呼ばれるコンピューター以外のコンピューターではCPUと呼ばれる中央演算処理装置が処理を予定している命令文のが違う為に使用できない分類方法になってしまう。しかしながら、CPUと呼ばれる中央演算処理装置が処理を予定している命令文が違うのであるならば、違う機械語をDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と同じものに変換処理する事でDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類する機械語レベルの検索を行う事が可能となる。また、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語は、左辺の4bitは、２進数の0から15までとし、右辺の4bitは、0から15までの２進数となっており、4bitで記述されている右辺は、16文字ごとに1づつ大きな数値となるように作られているが、左辺の4bitと右辺の4bitを左右入れ替えた分類用の分類用特殊コードを作成して、違う機械語を分類用特殊コードに変換処理する事でもDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類する機械語レベルの検索を行う事が可能となる。
【００１４】
実施例では、１文字のみの検索を行えるソフトウェアであるが、連続した文字列を検索するソフトウェアであっても、本発明の２分割文字検索ソフトウェアと同じように文字コードや機械語の特性を利用して分類する事によって検索処理速度を高速化している場合は、本発明である。つまり、本発明で説明しているテキストレベルの検索と機械語レベルの検索のどちからかと同じ方法で文字を検索している場合は、本発明であるという事である。
【００１５】
実施例のテキストレベルの検索では、半角英数字を検索できるものではない。半角英数字のみのファイルから文字を検索するソフトウェアや、半角英数字とその他の文字とが混在したファイルなどから、文字を検索するソフトウェアであっても、本発明の技術を利用している場合は、本発明であると明言する。
【発明の効果】
【００１６】
日本語や中国語などの様な文字種の多い言語での文字検索が従来技術よりも高速化できるようになる。また、安価なコンピューターでも高速な検索が行えるようになるというメリットがある。
【００１７】
利用用途は、かなり広範囲であり、圧縮技術や差分ファイル作成技術やデーターベース検索や文章ファイルの編集用文字列検索と書き換えソフトウェアやインターネット検索ソフトウェアなどでの使用が考えられる。
【実施例】
【００１８】
実施に於いては、Microsoft株式会社のVisual
Stadio2005というコンパイラを使用しC#というコンピューター言語を使用して本発明のソフトウェアを作成した。また、実施例の分岐で分岐条件に該当する場合が無い場合どうするかを記述していない場合があるが、この場合何もしないという事である。
【００１９】
本発明のソフトウェアは、図７の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源上で動作するソフトウェアである。図７の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源は、図符号Ｏのコンピューター本体と図符号Ｎのモニターと図符号Ｐのキーボードと図符号Ｑのマウスの合計４個のパーツで構成された機材であるが、これらの合計４個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Ｏのコンピューター本体は、DOS/V機コンピューターと呼ばれるコンピューターである。図符号Ｏのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明の圧縮前の２分割処理ソフトウェアは、図符号Ｏのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Ｏのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされていて、図符号Ｏのコンピューター本体から本発明のソフトウェアを起動する事が出来る場合は、図符号Ｏのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとする。本発明のソフトウェアがインストールされている図符号Ｏのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Ｏのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明のソフトウェアを起動すると本発明のソフトウェアは、図符号Ｏのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Ｏのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明のソフトウェアに書かれたCPUと呼ばれる中央演算処理装置が処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューター上で本発明のソフトウェアが動作する。従って、本発明のソフトウェアがハードウェア資源を利用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明のソフトウェアに書かれた命令文は、コンピューター本体のCPUによって処理されると表現しなおす事ができるものである。
【００２０】
図７の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源上で動作するソフトウェアであると段落〔００１９〕にて説明したが、コンピューターの形状は、図７の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源上に限定できるものではなく、図符号Ｎのモニター、図符号Ｏのコンピューター本体、図符号Ｐのキーボード、図符号Ｑのマウスが一体化したものや、図符号Ｑのマウスが存在しない構成のものや、図符号Ｎのモニター、図符号Ｏのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後ももっと、いろいろな形状のコンピューターが開発されていくであろうと考えられる。図７の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源上でなくても、類似と言い得るいわゆるコンピューターで本発明のソフトウェアを動作させている場合も本発明のソフトウェアであると明言する。また、図符号Ｏのコンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事と定義すると、ソフトウェアがコンピューターと呼ばれるハードウェア資源と協調して動作して処理するものであるという事を含めたかたちで、ソフトウェアの説明を簡単な表現で表現すると、コンピューター上で動作するソフトウェアであると表現する事ができる。
【００２１】
以下の段落に於いて、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、図符号Ｏのコンピューター本体の内部にある本体メモリーに作成される。但し、ＯＳと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Ｏのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｏのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Ｏのコンピューター本体の内部にある本体メモリーまたは、図符号Ｏのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｏのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、配列や変数などを作成すると記述している場合の配列や変数などが作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されるという表現になる。
【００２２】
以下の段落に於いて、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合、配列の最初の位置に既にデーターを代入した後は、配列に代入されたデーターの最後の位置のデーターの次の配列の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の配列の位置の指定を末尾と表現できると思われる。では、未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現が可能だと考えている。そこで、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合は、配列の最初の位置であっても、配列の末尾に代入すると記述している事がある。また、以下の段落で、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されたデーターなど）の順番通りに一つづつ代入するものとする。
【００２３】
以下の段落に於いて、全て一次元配列を利用してソフトウェアを作成しているが、多次元配列を利用する事や、ファイルを利用する事でも同じ処理が出来ると考えられる。また、一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはソフトウェアの書き方の違いであって、全て本発明の単純なレパートリーでしかないという事を明言する。
【００２４】
また、以下の段落で、ソフトウェアとコンピューターによる自動処理の場合は、いちいち、ソフトウェアとコンピューターによる自動処理である事を書いておりません。書いていない場合は、ソフトウェアとコンピューターによる自動処理である。しかし、図１の＜本発明の２分割文字検索ソフトウェアのフローチャート図＞には、図符号Ａの人為的な手動による操作もしくは、入力と、図符号Ｂの本発明のソフトウェアとコンピューターによる自動処理の二つに分けて示す事とした。以下のソフトウェアとコンピューターによる自動処理の部分の処理工程を記述した命令文の事をソフトウェアと総称する。また、配列のサイズの調整なども自明の理であるから書いておりません。また、配列の型の調整なども自明の理であるから書いておりません。また、変数の型についても自明の理であるから書いておりません。また、図２、図３、図４、図５、図６、図７は、実際とは、多少異なる。
【００２５】
また、以下の段落で、機械語を取得すると説明している場合の処理工程を説明する。Microsoft株式会社のVisual Stadio2005というコンパイラを使用しC#という言語を用いている場合は、機械語を取得する場合に使用するように用意された関数を使用するとtrueとfalseというデーターとして取得される。取得されたtrueとfalse の組み合わせを0と1という数値で置き換えられた形で表現するには、変換処理を行う必要がある。Microsoft株式会社のVisual Stadio2005というコンパイラを使用しC#という言語でこの変換処理を行うと、trueが1に変換され、falseが0に変換される。変換された数値データーを4bitづつ取得すると、4bitのBCD数値が得られるようになっている。機械語を取得するとは、ASCIIコードの１文字分の機械語を取得するという事であり、ASCIIコードの１文字分の機械語を取得するという事は、4bitのBCD数値を１単位とした２単位分の合計8bitのデーターを１文字として取得するという事である。但し、左辺に相当する機械語を取得するという場合は、左辺に相当する4bitのBCD数値の１単位分のみを取得するという事であり、右辺に相当する機械語を取得するという場合は、右辺に相当する4bitのBCD数値の１単位分のみを取得するという事である。
【００２６】
また、以下の段落で区切り文字としてスペースを使用すると説明しているが、このスペースは、半角または、全角のどちらでも良い。また、マーク１やマーク２という区切り文字の説明をしている段落があるが、このマーク１やマーク２という区切り文字も半角または、全角のどちらでも良い。
【００２７】
また、以下の段落で機械語に変換すると説明している場合の処理工程を説明する。データーから機械語の4bitを１単位としたBCD数値を取得して、4bitを１単位とし２単位の合計8bitのデーターを１文字として表し、BCD数値とBCD数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とする。
【００２８】
図１の＜本発明の２分割文字検索ソフトウェアのフローチャート図＞を参照の事。図符号Ｊと図符号Ｋには、ステップ番号を付けました。このステップ番号順に説明する事とする。まず、本発明の圧縮前の２分割処理ソフトウェアを起動すると、図２の＜本発明の２分割文字検索ソフトウェアの操作画面図＞の様な操作画面が図符号Ｎのモニターに表示される。
【００２９】
ステップ１００に進む。ステップ１００は、人為的な操作である。図符号Ｌの参照ボタンを図符号Ｑのマウスなどの入力デバイスを使用してクリックする。これによって、ハードディスクなどの記録媒体の中を閲覧できる様になるので、ハードディスクなどの記録媒体から検索対象ファイルを選択する。選択すると図符号Ｇの指定した検索対象ファイルをフルパスで表示するテキストボックスに、選択した検索対象ファイルのフルパスが入力される。また、図符号Ｐのキーボードなどの入力デバイスを使って図符号Ｇの指定した検索対象ファイルをフルパスで表示するテキストボックスに、直接入力する事も出来るようになっている。図符号Ｇの指定した検索対象ファイルをフルパスで表示するテキストボックスに検索対象ファイルを指定したら、図符号Ｊのファイルを読み込むボタンを図符号Ｑのマウスなどの入力デバイスを使用してクリックする。
【００３０】
ステップ１０１に進む。図符号Ｇの指定した検索対象ファイルをフルパスで表示するテキストボックスに指定されたファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称する。検索対象配列に図符号Ｇの指定した検索対象ファイルをフルパスで表示するテキストボックスに指定された検索対象ファイルをバイナリー形式で全て読み込んで、検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、検索対象ファイルをバイナリー形式で全て読み込んだデーターを一つづつ検索対象配列に代入する。読み込んだ検索対象ファイルのデーターを検索対象配列の内容を図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューにある図符号Ｆの文字コード表示列に一つづつ縦方向に表示する。検索対象配列の最初の位置（インデックス０番）を１として連番を作成する事で検索対象配列の各データーに対応した文字数を算出する。検索対象配列と同じサイズの配列を作成し、この配列を全文字数配列と仮称する。算出した文字数を全文字数配列の最初の位置から最後まで代入する度に一つづつ代入する位置をずらして、算出した文字数の最初から最後までの全てのデーターを一つづつ全文字数配列に代入する。全文字数配列の内容を図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューにある図符号Ｃの文字数表示列に一つづつ縦方向に表示する。ここまでの処理結果を表示させた状態の操作画面の図が図３の＜図符号Ｊのボタンをクリックした結果を説明する図＞である。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューに配列の内容を表示した状態を示した図である。つまり、図符号Ｃの文字数表示列と図符号Ｆの文字コード表示列に配列の内容を表示した状態である。
【００３１】
ステップ１０２に進む。ステップ１０２は、人為的な操作である。図符号Ｈの検索対象ファイルから検索する文字を入力するテキストボックスは、検索対象ファイルから検索したい文字を１文字だけ入力出来るように作成してある。図符号Ｈの検索対象ファイルから検索する文字を入力するテキストボックスに図符号Ｐのキーボードなどの入力デバイスを使用して検索対象ファイルから検索したい文字を１文字だけ入力する。図符号Ｄの機械語レベル検索工程を指定するチェックボックスか図符号Ｅのテキストレベルの検索工程を指定するチェックボックスのどちからかを図符号Ｑのマウスなどの入力デバイスを使用して選択して、図符号Ｋの検索実行ボタンを図符号Ｑのマウスなどの入力デバイスを使用してクリックする。ここで、図符号Ｄの機械語レベル検索工程を指定するチェックボックスを選択した場合は、機械語レベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する。ここで、図符号Ｅのテキストレベルの検索工程を指定するチェックボックスを選択した場合は、テスキストレベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する。先に、機械語レベルの検索方法の場合を説明する事にする。機械語レベルの検索方法の場合は、図符号Ｑのマウスなどの入力デバイスを使用して図符号Ｄの機械語レベル検索工程を指定するチェックボックスをクリックする事で検査方法を指定して、図符号Ｋの検索実行ボタンを図符号Ｑのマウスなどの入力デバイスを使用してクリックする。
【００３２】
ステップ１０３に進む。図符号Ｈの検索対象ファイルから検索する文字を入力するテキストボックスに入力された１文字のテキスト文字をファイルに保存する。保存したファイルを検査一時ファイルと仮称する。この検査一時ファイルは、検索文字を１文字だけ記録したファイルとなる。保存する場合の注意点として、後で、この検査一時ファイルをバイナリー形式で読み込ませて検索用データーとして使用するのでバイナリー形式で正しく読み込めるようにエンコードを指定して保存する。２文字代入できるサイズで配列を作成する。この作成した配列を検査配列と呼ぶ事とする。検査一時ファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入する。
【００３３】
ステップ１０４に進む。検索対象配列のコピー配列を作成し、このコピーした配列を検索対象配列２と仮称する。検索対象配列２の全データーを機械語に変換したデーターを代入する為の検索対象配列２のサイズと同じ配列サイズで配列を作成し、この配列を機械語配列と仮称する。検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを作成して、機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを一つづつ機械語配列に代入する。機械語配列と同じサイズで配列を作成し、この配列をRL機械語配列と仮称する。機械語配列に代入された各データーを4bitのBCD数値の左辺と右辺とを逆転させ、4bitのBCD数値と4bitのBCD数値の間には、区切り文字としてスペースを挿入したデーターを作成して、RL機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した4bitのBCD数値の左辺と右辺とを逆転させたデーターを一つづつRL機械語配列に代入する。
【００３４】
配列を作成し、この配列を出現文字配列と仮称する。RL機械語配列に代入されたデーター全てからRL機械語配列に代入されたデーターに出現する全文字種を取得して出現文字配列に代入するが、以下の様な処理を行う事でRL機械語配列に代入されたデーター全てからRL機械語配列に代入されたデーターに出現する全文字種を取得して出現文字配列に代入する。出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称する。出現文字配列作成工程での処理は、配列を作成し、この配列を仮称、ソート配列とする。RL機械語配列に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートする。ソートしたデーターをソート配列の最初の位置から代入する度に一つづつ代入する位置をずらして、順番通りに全てソート配列に代入する。ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称する。基本的に、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とする。このソート配列に対して以下の繰り返し処理を行う。この繰り返し処理を出現繰り返し処理と仮称する。出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐する。この分岐を出現検査分岐と仮称する。出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査する。出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された違うデーターであった次のデーターを出現文字配列の末尾に代入する。ここで出現検査分岐を終了する。出現文字配列の末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査する。この処理をソート配列に代入された全てのデーターに対して繰り返し処理する事でRL機械語配列に代入された全てのデーターの中から、RL機械語配列に代入されたデーターに出現する全文字種を取得して出現文字配列に代入する。ソート配列に代入された全てのデーターに対して出現繰り返し処理を行ったら出現繰り返し処理を終了し、出現文字配列作成工程も終了する。全文字種を取得するとは、つまり、RL機械語配列に代入されたデーターにあるデーター全てから重複データーをなくした配列を作成する事である。次に、配列を作成し、この配列を右辺配列と仮称する。出現文字配列に代入された全てのデーターの右辺に相当する4bitのBCD数値を取得して、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列に代入された最初から最後までの全てのデーターの右辺に相当する4bitのBCD数値を一つづつ右辺配列に代入する。
【００３５】
右辺を基準に分類する為に右辺配列と同じ配列サイズで配列を作成し、この配列を分類配列と仮称する。右辺配列に代入されたデーター全てに対して以下の繰り返し処理を行う。この繰り返し処理を検査繰り返し処理と仮称する。右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較して同じであった場合は、分類配列の最初の位置（末尾とも言える）にRL機械語配列に代入された同じであったデーターを代入する。分類配列の最初の位置（末尾とも言える）に代入するRL機械語配列に代入されたデーターが２つ以上あった場合は、複数あるデーターとデーターの区切り文字として数値以外の任意の文字を既にあったデーターに連結し、その後ろに新たに見つけ出したRL機械語配列に代入されたデーターを連結して分類配列の最初の位置（末尾とも言える）に代入する。この数値以外の任意の文字をマーク１と仮称する。マーク１は、区切り文字として使用する。右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較し終わったら、右辺配列に代入された次のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較するという繰り返し処理を行う。右辺配列に代入されたデーター全ての検査を終了する事で検査繰り返し処理を終了する。また、マーク１とは別に数値以外の任意の文字をもう一個選択して、マーク２と仮称する。マーク２も、マーク１と同じく区切り文字として使用する。マーク１とマーク２とは、必ず異なる区切り文字を選択し指定する。
【００３６】
分類配列に代入された全てのデーターがRL機械語配列または、検索対象配列のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズで作成し、この配列を文字数配列と仮称する。文字数配列を作成する為に分類配列の最初のデーターから最後のデーターまで以下の処理を繰り返し行う。この繰り返し処理を繰り返し処理１と呼ぶ事とする。繰り返し処理１では、検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１と呼ぶ事とする。分岐１で検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、検査対象の分類配列の最初の位置に代入されたデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列のデーターの位置を示すインデックスが一つだけの場合は同じであったRL機械語配列のデーターの位置を示すインデックスを取得して、文字数配列の最初の位置に代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク２を区切り文字として使用して複数あるデーターとデーターの間に入れてRL機械語配列のインデックスを連結して文字数配列の最初の位置に代入する。分岐１で検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、検査対象の分類配列に代入されたデーターをマーク１で分割したデーターを代入する配列をマーク１で分割できる個数分のデーターを格納できる配列サイズで作成し、この配列を一時配列と仮称する。検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを作成して、一時配列の最初の位置から代入する度に一づつ代入する位置をずらして、作成した検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを全て一つづつ一時配列に代入する。以下の処理を一時配列に代入されたデーター数分、繰り返し処理を行う。この繰り返し処理を一時配列繰り返し処理と仮称する。一時配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列に代入されたデーターの位置を示すインデックスが一つであった場合は同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを取得して文字数配列の最初のデーターとして代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切りマークとして、マーク２を複数あるデーターとデーターの間に入れて同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを連結して文字数配列の最初の位置に代入する。文字数配列の最初の位置に代入するデーターが二つ以上あるかどうかは、文字数配列の最初の位置にデーターを代入する度に代入した回数をカウントする事で判断させる事ができる。一時配列のデーターをひとつ検査し終わる度に区切り文字としてマーク１を文字数配列の最初の位置に代入されたデーターに連結して次の一時配列のデーターを検査する。一時配列のデーターを全て検査し終わったら、一時配列繰り返し処理を終了する。これで分岐１を終了する。次に、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う。分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う場合は、文字数配列の末尾に処理結果を代入する。この手順で繰り返し処理１を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理１を終了する。
【００３７】
ステップ１０５に進む。２個のサイズで配列を作成し、この配列を検査機械語配列と仮称する。検査配列に代入された最初の位置のデーターを機械語に変換して検査機械語配列の最初の位置に代入する。検査配列に代入された最後の位置に代入されたデーターを機械語に変換して検査機械語配列の最後の位置に代入する。２個のサイズで配列をふたつ作成し、各々の配列を左機械語配列、右機械語配列と仮称する。検査機械語配列に代入した最初の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最初の位置に代入する。検査機械語配列に代入した最後の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最後の位置に代入する。検査機械語配列に代入した最初の位置に代入されたデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最初の位置に代入する。検査機械語配列に代入した最後の位置に代入されたデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最後の位置に代入する。２個のサイズで配列を作成し、この配列を番号配列と仮称する。右機械語配列に代入された最初の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最初の位置にデーターとして代入する。右機械語配列に代入された最後の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最後の位置にデーターとして代入する。
【００３８】
２個のサイズで配列を作成し、この配列を抽出配列と仮称する。番号配列の最初の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最初の位置に代入する。番号配列の最後の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最後の位置に代入する。抽出配列に代入されたふたつのデーターを処理する為に以下の処理を行う。この抽出配列に代入された最初の位置に代入されたデーターに対する処理を第一処理と仮称し、抽出配列に代入された最後の位置に代入されたデーターに対する処理を第二処理と仮称する。この第一処理と第二処理では、抽出配列のデーターの中から左機械語配列と同じ左辺に相当する4bitのBCD数値と同じデーターを探し出すという処理を行う。探し出した結果を代入する為の変数をふたつ作成し、各々の変数を決定変数１、決定変数２と仮称する。配列をふたつ作成し、この配列をそれぞれ分離配列１と分離配列２仮称する。分離配列１と分離配列２に代入されるデーター数が解らないので分離配列１と分離配列２のサイズは、必要だと思われる最低限度以上のサイズで配列を作成する。抽出配列に代入されている最初の位置と最後の位置に代入されている二つのデーターを検査して処理する。第一処理では、抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐２と仮称する。分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列１の最初の位置に抽出配列の最初の位置に代入されたデーターを代入する。分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列１の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターの全てを一つづつ分離配列１に代入する。これで分岐２を終了する。左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列１のデーターの位置を示すインデックスを取得する。決定変数１に取得したインデックスを代入する。左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、有り得ないので有り得ないので何も行わない。これで第一処理を終了する。次に第二処理を行う。抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合とマーク１で区切られている場合とに分岐し、この分岐を分岐３と仮称する。分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列２の最初の位置に抽出配列の最後の位置に代入されたデーターを代入する。分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを全て一つづつ分離配列２に代入する。これで分岐３を終了する。左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列２のデーターの位置を示すインデックスを取得する。決定変数２に取得したインデックスを代入する。左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、有り得ないので何も行わない。これで、第二処理を終了する。
【００３９】
２個のサイズで配列を作成し、この配列を暫定文字数配列と仮称する。番号配列の最初の位置に代入されたデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列に代入されたデーターを取得して暫定文字数配列の最初の位置に代入する。番号配列の最後の位置に代入されたデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列に代入されたデーターを取得して暫定文字数配列の最後の位置に代入する。
【００４０】
ふたつの配列を作成し、このふたつの配列を各々、決定文字数配列1と決定文字数配列２と仮称する。決定文字数配列1と決定文字数配列２の両方ともに代入するデーター数が解らないので必要最低限と思われるサイズ以上の任意のサイズで配列を作成する。暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐４と仮称する。分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、決定文字数配列1の最初の位置に暫定文字数配列の最初の位置に代入されたデーターを代入する。分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列２と仮称する。暫定文字数配列の最初の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最初の位置に代入されているデーターをマーク１で複数個に分割して、マーク１を削除したデーターを全て一つづつ一時配列２に代入する。決定変数１のデーターを一時配列２に代入されたデーターの位置を示すインデックスとして使用して一時配列２のインデックスの位置に代入されたデーターを取得し、取得したデーターを決定文字数配列1の最初の位置に代入する。これで分岐４を終了する。暫定文字数配列の最初の位置に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐５と仮称する。分岐５で暫定文字数配列の最初の位置に代入されたデーターが、マーク２で区切られていない場合は、配列のサイズを一個で配列を作成する。この配列を仮決定行数配列と仮称する。仮決定行数配列の最初の位置に決定文字数配列1の最初の位置に代入されたデーターを代入する。分岐５で暫定文字数配列の最初の位置に代入されたデーターが、マーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称する。決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ仮決定行数配列に代入する。これで分岐５を終了する。仮決定行数文字数配列の配列を少ない順にソートする。決定文字数配列1の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおす。仮決定行数文字数配列に代入された全てのデーターを決定文字数配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初の位置から最後までの全てのデーターを一つづつ決定文字数配列1に代入する。
【００４１】
暫定文字数配列の最後の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐６と仮称する。分岐６で暫定文字数配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合は、決定文字数配列２の最初の位置に暫定文字数配列の最後の位置に代入されたデーターを代入する。分岐６で暫定文字数配列の最後の位置に代入されたデーターが、マーク１で区切られている場合は、暫定文字数配列の最後のデーターが、マーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列３と仮称する。暫定文字数配列の最後の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列３の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最後のデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列３に代入する。決定変数２のデーターを一時配列３に代入されたデーターの位置を示すインデックスとして使用して一時配列３のデーターを取得し、取得したデーターを決定文字数配列２の最初の位置に代入する。これで分岐６を終了する。暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐７と仮称する。分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られていない場合は、配列のサイズを一個で作成する。この配列を仮決定行数配列と仮称する。仮決定行数配列の最初の位置に代入された位置に決定文字数配列２の最初の位置に代入されたデーターを代入する。分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称する。決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て仮決定行数配列に一つづつ代入する。これで分岐７を終了する。仮決定行数文字数配列の配列を少ない順にソートする。決定文字数配列２の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおす。仮決定行数文字数配列に代入された全てのデーターを決定文字数配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初から最後までの全てのデーターを決定文字数配列２に一つづつ代入する。
【００４２】
ステップ１０６に進む。検索対象配列と同じサイズの配列を作成し、この配列を検索結果配列と仮称する。任意の文字を決定し、これをマーク３と仮称する。実施例では、「一致」という文字をマーク３とした。マーク３は、マーク１または、マーク２の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列１に代入されたデーターの全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のデーターを代入する位置を示すインデックスの位置にマーク３を代入する。決定文字数配列２に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列の位置を示すインデックスの位置にマーク３を代入する。検索結果配列の全てのデーターを検査する。検索結果配列を検査してマーク３があったら、検索結果配列の次の位置に代入されたデーターにマーク３があるかどうかを検査する。検索結果配列の次の位置に代入されたデーターにマーク３がある場合は、次の検査データーの位置を二つ進める。検索結果配列の次の位置に代入されたデーターにマーク３がない場合は、注目している配列のデーターのマーク３を削除して、次の検査データー位置を二つ進める。検索結果配列に代入されたデーターの全て検査し終わったら、図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューにある図符号Iの検索結果表示列に検索結果配列のデーターを全て表示して処理を終了する。図４の＜図符号Ｄをチェックして機械語レベルでの検索を実行した結果を説明する図＞を参照の事。図６の＜実施例で使用した検索対象ファイルの内容図＞で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示した図である。処理を終了すると図４の＜図符号Ｄをチェックして機械語レベルでの検索を実行した結果を説明する図＞のような状態で表示される。
【００４３】
次に、テスキストレベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する場合を説明する事とする。ステップ１００からステップ１０１までは、機械語レベルの検索方法の場合と同じである。
【００４４】
ステップ１０２で、図符号Ｑのマウスなどの入力デバイスを使用して図符号Ｅのテキストレベルの検索工程を指定するチェックボックスをクリックする事で選択して、図符号Ｋの検索実行ボタンを図符号Ｑのマウスなどの入力デバイスを使用してクリックする。ステップ１０２では、この部分以外は機械語レベルの検索方法の場合と全て同じである。
【００４５】
ステップ１０３に進む。テスキストレベルの検索方法の場合も機械語レベルの検索方法の場合もステップ１０３の内容は、全く同じである。
【００４６】
ステップ１０７に進む。検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称する。検索対象配列のインデックスは、0から始まっているものとする。検索対象配列の偶数のインデックスに代入されているデーターを偶数に相当する左辺または、左辺に相当するデーターと呼んだり、奇数のインデックスに代入されているデーターを奇数に相当する右辺または、右辺に相当するデーターと呼んだりする事がある。検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入する。検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称する。検索対象配列に代入されている最初から最後までの全てのデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成する。このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成する。RL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを全て一つづつRL検索対象配列２に代入する。以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと呼んだり、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと呼んだりする事がある。
【００４７】
配列を作成し、この配列を出現文字配列と仮称する。RL検索対象配列２に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを作成して、出現文字配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成したRL検索対象配列２に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを全て一つづつ出現文字配列に代入する。出現文字配列に代入するデーターは、RL検索対象配列２に代入された全てのデーターを検査して重複したデーターを削除したものとする。重複したデーターを削除する方法は、段落〔００３４〕の出現文字配列作成工程と同じである。段落〔００３４〕の出現文字配列作成工程では、RL機械語配列に代入された全てのデーターから重複データーを削除したデーターを出現文字配列に代入しているが、ここでは、RL検索対象配列２に代入された全てのデーターから重複したデーターを削除したデーターを作成して、出現文字配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成したRL検索対象配列２に代入された全てのデーターから重複したデーターを削除したデーターを全て一つづつ出現文字配列に代入する。配列を作成し、この配列を右辺配列と仮称する。出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行う事で右辺配列を完成させる。この工程を右辺配列作成処理と仮称する。出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称する。出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入する。仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入する。右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了する。重複したデーターを削除したデーターの作成方法は、段落〔００３４〕の出現文字配列作成工程と同じである。
【００４８】
右辺配列のサイズで配列を作成し、この配列を分類配列と仮称する。右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行う。この繰り返し処理を検査繰り返し処理と仮称する。右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入する。分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字として数値以外の任意の文字を選択してその文字を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入する。この数値以外の任意の文字をマーク１と仮称する。マーク１は、区切り文字として使用する。このマーク１の連結方法は、段落〔００３５〕でのマーク１の使用方法と同じである。表現を変えて説明した。右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了する。また、マーク１とは別にもう一個、数値以外の任意の文字を選択してマーク２と仮称する。マーク２も、マーク１と同じく区切り文字として使用する。マーク１とマーク２とは、違う区切り文字を指定する。
【００４９】
分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列２または、検索対象配列２のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサイズで作成し、この配列を文字数配列と仮称する。以下の繰り返し処理を行う。この繰り返し処理を繰り返し処理３と仮称する。分類配列に代入されたデーター全てに対して繰り返し処理３を行う事で文字数配列に全てのデーターを代入して配列を完成させる処理を行う。繰り返し処理３では、分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐８と仮称する。分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列２に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つだけの場合はその位置を示すインデックスを取得して文字数配列の最初の位置に代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク２を既に記録してあるデーターと新たに見つけたRL検索対象配列２のインデックスとの間に区切り文字として入れて連結して代入する。分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割したデーター数分のサイズで配列を作成し、作成したこの配列を一時配列４と仮称する。分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを作成して、一時配列４の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを全て一つづつ一時配列４に代入する。変数を作成し、この変数を仮一時変数と仮称する。一時配列４に代入された全てのデーターに対して以下の繰り返し処理を行う。この繰り返し処理を一時配列４繰り返し処理と仮称する。一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し、一時配列４の最初の位置のデーターとRL検索対象配列２に代入されたデーターが同じであった場合に、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して、仮一時変数に代入する。但し、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク２を文字区切りとして連結して、新たに見つけたRL検索対象配列２のデーターの位置を示すインデックスを連結して仮一時変数に代入する。仮一時変数に代入するデーターが二個以上あるかどうかは、仮一時変数に代入するデーターを代入する度に代入した回数をカウントする事で判断させる事ができる。一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し終わったら、一時配列４のデーターをひとつ検査し終わる度に区切り文字とし���マーク１を仮一時変数に代入されたデーターに連結して次の一時配列４のデーターを検査する。一時配列４に代入されたデーター全てを検査し終わったら、一時配列４繰り返し処理を終了する。文字数配列の最初の位置に仮一時変数のデーターを代入する。これで分岐８を終了する。分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う。分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する。この手順で繰り返し処理３を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理３を終了する。
【００５０】
ステップ１０７に進む。変数を作成し、この変数を番号変数と仮称する。検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入する。検査配列に代入されたデーターの右辺に相当するデーターとは、検査配列の最後の位置に代入されたデーターの事である。変数を作成し、この変数を抽出変数と仮称する。番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用して分類配列のデーターを読み込んで、抽出変数に代入する。
【００５１】
配列を作成し、この配列を分離配列と仮称する。抽出変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐９と仮称する。分岐９で抽出変数に代入されたデーターがマーク１で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入する。分岐９で抽出変数に代入されたデーターがマーク１で区切られている場合は、抽出変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして分離配列を作成しなおす。抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ分離配列に代入する。これで分岐９を終了する。分離配列のデーターの中から検査配列の最初の位置に代入されたデーター（検査配列の最初の位置に代入されたデーターとは、左辺に相当するデーターの事である。）と同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得する。探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成する。この変数を決定変数と仮称する。決定変数に探し出して取得した分離配列の位置を示すインデックスを代入する。
【００５２】
変数を作成し、この変数を暫定文字数変数と仮称する。番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入する。配列を作成し、この配列を決定文字数配列と仮称する。変数を作成し、この変数を一時変数２と仮称する。暫定文字数変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１０と仮称する。分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られていない場合は、一時変数２に暫定文字数変数に代入されたデーターを代入する。分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られている場合は、暫定文字数変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列５と仮称する。暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列５の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列５に代入する。決定変数に代入されたデーターを一時配列５に代入されたデーターの位置を示すインデックスとして使用して一時配列５のデーターを読み込んで一時変数２に代入する。これで分岐１０を終了する。一時変数２に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１１と仮称する。分岐１１で一時変数２に代入されたデーターが、マーク２で区切られていない場合は、決定文字数配列の最初の位置に一時変数２に代入されたデーターを代入する。分岐１１で一時変数２に代入されたデーターが、マーク２で区切られている場合は、一時変数２に代入されたデーターをマーク２で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入する。これで分岐１１を終了する。決定文字数配列のデーターを少ない順番でソートする。
【００５３】
ステップ１０９に進む。全文字数配列のサイズを検索対象配列２のサイズと同じサイズに変更する。最初のデーターを１として全文字数配列のサイズ分までの通し番号を作成して、全文字数配列の最初の位置から最後までの位置に代入する度に一つづつ代入する位置をずらして、通し番号を一つづつ全文字数配列に代入する。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューの図符号Cの文字数表示列に全文字数配列のデーターを一つづつ縦方向に表示しなおします。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューの図符号Fの文字コード表示列の最初の行から検索対象配列２に代入された全てのデーターを代入する度に一つづつ代入する位置をずらして、一つづつ縦方向に表示しなおします。
【００５４】
配列を作成し、この配列を決定文字数配列２と仮称する。任意の文字を指定し、これをマーク３と仮称する。実施例では、「一致」という文字をマーク３とした。マーク３は、マーク１または、マーク２の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列に代入する。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューの図符号Iの検索結果表示列に決定文字数配列２のデーターを表示して処理を終了する。図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞は、図６の＜実施例で使用した検索対象ファイルの内容図＞で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示したものである。処理を終了すると図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞のような状態で表示する。
【図面の簡単な説明】
【００５５】
【図１】本発明の２分割文字検索ソフトウェアのフローチャート図
【図２】本発明の２分割文字検索ソフトウェアの操作画面図
【図３】図符号Ｊのボタンをクリックした結果を説明する図
【図４】図符号Ｄをチェックして機械語レベルでの検索を実行した結果を説明する図
【図５】図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図
【図６】実施例で使用した検索対象ファイルの内容図
【図７】本発明に使用した機材の説明図
【符号の説明】
【００５６】
A：人為的な手動による操作もしくは、入力
B：本発明のソフトウェアとコンピューターによる自動処理
C：文字数表示列
D：機械語レベル検索工程を指定するチェックボックス
E：テキストレベルの検索工程を指定するチェックボックス
F：文字コード表示列
G：指定した検索対象ファイルをフルパスで表示するテキストボックス
H：検索対象ファイルから検索する文字を入力するテキストボックス
I：検索結果表示列
J：ファイルを読み込むボタン
K：検索実行ボタン
Ｌ：参照ボタン
Ｍ：図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビュー
Ｎ：モニター
Ｏ：コンピューター本体
Ｐ：キーボード
Ｑ：マウス
【図１】
2012256135.tif 000003
【図２】
2012256135.tif 000004
【図３】
2012256135.tif 000005
【図４】
2012256135.tif 000006
【図５】
2012256135.tif 000007
【図６】
2012256135.tif 000008
【図７】
2012256135.tif 000009
【手続補正書】
【提出日】平成23年12月6日(2011.12.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成する事とし、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク１、マーク２と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、読み込んだデーターを検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、読み込んだデーターを一つづつ検索対象配列に代入し、検索対象配列の偶数のインデックスに代入されているデーターを、左辺に相当するデーターと仮称し、奇数のインデックスに代入されているデーターを、右辺に相当するデーターと仮称し、２文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が１文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称し、検索対象配列のインデックスは、0から始まっているものとし、検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入し、検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称し、検索対象配列２に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成するが、このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成し、作成した左右が逆転し、スペースで区切られた１文字の文字をRL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、一つづつ全てRL検索対象配列２に代入し、以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと仮称し、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと仮称し、配列を作成し、この配列を出現文字配列と仮称し、RL検索対象配列２に代入されたデーター全てからRL検索対象配列２に代入されたデーターに出現する全文字種を取得して出現文字配列に代入するが、出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、この配列を仮称、ソート配列とし、RL検索対象配列２に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートし、ソートしたデーターをソート配列の最初の位置から代入する度に一つづつ代入する位置をずらして、順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称し、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された違うデーターであった次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、出現文字配列の末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査し、この処理をソート配列に代入された全てのデーターに対して繰り返し処理する事でRL検索対象配列２に代入された全てのデーターの中から、RL検索対象配列２に代入されたデーターに出現する全文字種を取得して出現文字配列に代入し、ソート配列に代入された全てのデーターに対して出現繰り返し処理を行ったら出現繰り返し処理を終了し、出現文字配列作成工程も終了し、配列を作成し、この配列を右辺配列と仮称し、出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行う事で右辺配列を完成させるが、この工程を右辺配列作成処理と仮称し、出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称し、出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入し、仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入さ���た全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了するが、重複したデーターを削除したデーターの作成方法は、出現文字配列作成工程と同じ方法で行う事とし、右辺配列のサイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入し、分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字としてマーク１を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入し、右辺配列に代入された最初のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了し、分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列２または、検索対象配列２のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサイズで作成し、この配列を文字数配列と仮称し、以下の繰り返し処理を行うが、この繰り返し処理を繰り返し処理３と仮称し、繰り返し処理３では、分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐８と仮称し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列２に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つだけの場合は同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切り文字として、マーク２を既に記録してあるデーターと新たに見つけたRL検索対象配列２のインデックスとの間に入れて連結して代入し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割したデーター数分のサイズで配列を作成し、この配列を一時配列４と仮称し、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを作成して、一時配列４の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを全て一つづつ一時配列４に代入し、変数を作成し、この変数を仮一時変数と仮称し、一時配列４に代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を一時配列４繰り返し処理と仮称し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し、一時配列４の最初の位置のデーターとRL検索対象配列２に代入されたデーターが同じであった場合に、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して、仮一時変数に代入するが、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク２を文字区切りとして連結して、新たに見つけたRL検索対象配列２のデーターが代入されている位置を示すインデックスを取得して、その取得したデーターを連結して仮一時変数に代入し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し終わったら、一時配列４のデーターをひとつ検査し終わる度に区切り文字としてマーク１を仮一時変数に代入されたデーターに連結して次の一時配列４のデーターを検査する事とし、一時配列４に代入されたデーター全てを検査し終わったら、一時配列４繰り返し処理を終了し、文字数配列の最初の位置に仮一時変数のデーターを代入し、これで分岐８を終了し、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う事とし、分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理３を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理３を終了し、変数を作成し、この変数を番号変数と仮称し、検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入し、変数を作成し、この変数を抽出変数と仮称し、番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用
して分類配列のデーターを読み込んで、抽出変数に代入し、配列を作成し、この配列を分離配列と仮称し、抽出変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐９と仮称し、分岐９で抽出変数に代入されたデーターがマーク１で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入し、分岐９で抽出変数に代入されたデーターがマーク１で区切られている場合は、抽出変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして分離配列を作成しなおして、抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ分離配列に代入し、これで分岐９を終了し、分離配列のデーターの中から検査配列の最初の位置に代入されたデーターと同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得し、探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成し、この変数を決定変数と仮称し、決定変数に探し出して取得した分離配列の位置を示すインデックスを代入し、変数を作成し、この変数を暫定文字数変数と仮称し、番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入し、配列を作成し、この配列を決定文字数配列と仮称し、変数を作成し、この変数を一時変数２と仮称し、暫定文字数変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１０と仮称し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られていない場合は、一時変数２に暫定文字数変数に代入されたデーターを代入し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られている場合は、暫定文字数変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列５と仮称し、暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列５の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列５に代入し、決定変数に代入されたデーターを一時配列５に代入されたデーターの位置を示すインデックスとして使用して一時配列５のデーターを読み込んで一時変数２に代入し、これで分岐１０を終了し、一時変数２に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１１と仮称し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られていない場合は、決定文字数配列の最初の位置に一時変数２に代入されたデーターを代入し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られている場合は、マーク２で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入し、これで分岐１１を終了し、決定文字数配列のデーターを少ない順番でソートし、配列を作成し、この配列を決定文字数配列２と仮称し、全角半角問わない任意の文字を指定し、これをマーク３と仮称し、マーク３は、マーク１または、マーク２の区切り文字と同じであっても良いものとし、決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列２に代入する事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
ステップ１０７に進む。検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称する。検索対象配列のインデックスは、0から始まっているものとする。検索対象配列の偶数のインデックスに代入されているデーターを偶数に相当する左辺または、左辺に相当するデーターと呼んだり、奇数のインデックスに代入されているデーターを奇数に相当する右辺または、右辺に相当するデーターと呼んだりする事がある。検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入する。検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称する。検索対象配列２に代入されている最初から最後までの全てのデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成する。このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成する。RL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列２に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを全て一つづつRL検索対象配列２に代入する。以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと呼んだり、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと呼んだりする事がある。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
配列を作成し、この配列を決定文字数配列２と仮称する。任意の文字を指定し、これをマーク３と仮称する。実施例では、「一致」という文字をマーク３とした。マーク３は、マーク１または、マーク２の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列２に代入する。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューの図符号Iの検索結果表示列に決定文字数配列２のデーターを表示して処理を終了する。図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞は、図６の＜実施例で使用した検索対象ファイルの内容図＞で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示したものである。処理を終了すると図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞のような状態で表示する。
【手続補正書】
【提出日】平成23年12月7日(2011.12.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成する事とし、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、機械語には、0と1で構成されたいわゆる２進数と呼ばれる文字列に変換した２進数が4bitに満たない場合は、4bitに満たない分だけ後方に0を連結して合計で4bitになる様にしたような特殊な4bitの数値があるが、この機械語の事を特殊な4bitの数値と呼ぶ事とし、以下に、機械語を取得するとは、ASCIIコードの１文字分の機械語を取得するという事であり、ASCIIコードの１文字分の機械語を取得するという事は、前述の特殊な4bitの数値を１単位とした２単位分の合計8bitのデーターを１文字として取得するという事とし、以下に、機械語に変換すると説明している場合の処理工程は、データーから機械語の4bitを一単位とした前述の特殊な4bitの数値を取得して、4bitを１単位とし２単位の合計8bitのデーターを１文字として表し、前述の特殊な4bitの数値と前述の特殊な4bitの数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とし、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク１、マーク２と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、検索対象ファイルをバイナリー形式で全て読み込んだデーターを一つづつ検索対象配列に代入し、２文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が１文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列のコピー配列を作成し、このコピーした配列を検索対象配列２と仮称し、検索対象配列２の全データーを機械語に変換したデーターを代入する為の検索対象配列２のサイズと同じ配列サイズで配列を作成し、この配列を機械語配列と仮称し、検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを作成して、機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した検索対象配列２の最初から最後までの全データーを機械語に変換したデーターを一つづつ機械語配列に代入し、機械語配列と同じサイズで配列を作成し、この配列をRL機械語配列と仮称し、機械語配列に代入された各データーを前述の特殊な4bitの数値の左辺と右辺とを逆転させ、前述の特殊な4bitの数値と前述の特殊な4bitの数値の間��は、区切り文字としてスペースを挿入したデーターを作成して、RL機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして作成した前述の特殊な4bitの数値の左辺と右辺とを逆転させたデーターを一つづつRL機械語配列に代入し、配列を作成し、この配列を出現文字配列と仮称し、出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、ソート配列と仮称し、RL機械語配列に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートしてソートしたデーターをソート配列の最初の位置から代入する度に一つづつ順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称するが、基本的に、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現繰り返し処理では、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、この末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査するという処理をソート配列に代入された全てのデーターに対して繰り返し処理する事で出現繰り返し処理を終了し、出現繰り返し処理を終了したら、出現文字配列作成工程も終了し、出現文字配列の配列サイズと同じサイズで配列を作成し、この配列を右辺配列と仮称し、出現文字配列に代入された全てのデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列に代入された最初から最後までの全てのデーターの右辺に相当する4前述の特殊な4bitの数値を一つづつ右辺配列代入し、右辺を基準に分類する為に右辺配列と同じ配列サイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーター全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較して同じであった場合は、分類配列の最初の位置（末尾とも言える）にRL機械語配列に代入されたデーターを代入する。分類配列の最初の位置（末尾とも言える）に代入するRL機械語配列に代入されたデーターが２つ以上あった場合は、複数あるデ���ターとデーターの区切り文字としてマーク１を既にあったデーターに連結し、その後ろに新たに見つけ出したRL機械語配列に代入されたデーターを連結して分類配列の最初の位置（末尾とも言える）に代入し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較し終わったら、右辺配列に代入された次のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較するという繰り返し処理を行うが、右辺配列に代入されたデーター全ての検査を終了する事で検査繰り返し処理を終了し、配列を分類配列のサイズで作成し、この配列を文字数配列と仮称し、文字数配列を作成する為に分類配列の最初のデーターから最後のデーターまで以下の処理を繰り返し行うが、の繰り返し処理を繰り返し処理１と仮称し、繰り返し処理１では、検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１と仮称し、分岐１で検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、検査対象の分類配列の最初の位置に位置に代入されたデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列のデーターの位置を示すインデックスが一つだけの場合は同じであったRL機械語配列のデーターの位置を示すインデックスを取得して、文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク２を区切り文字として使用して複数あるデーターとデーターの間に入れてRL機械語配列のインデックスを連結して文字数配列の最初の位置に代入し、分岐１の検査対象の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、検査対象の分類配列に代入されたデーターをマーク１で分割したデーターを代入する配列をマーク１で分割できる個数分のデーターを格納できる配列サイズで作成し、この配列を一時配列と仮称し、検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを作成して、一時配列の最初の位置から代入する度に一づつ代入する位置をずらして、作成した検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク１で分割してマーク１を削除した状態に加工したデーターを全て一つづつ一時配列に代入し、以下の処理を一時配列に代入されたデーター数分、繰り返し処理を行うが、この繰り返し処理を一時配列繰り返し処理と仮称し、一時配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列に代入されたデーターの位置を示すインデックスが一つであった場合は同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを取得して文字数配列の最初のデーターとして代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切りマークとして、マーク２を複数あるデーターとデーターの間に入れて同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを連結して文字数配列の最初の位置に代入し、一時配列のデーターをひとつ検査し終わる度に区切り文字としてマーク１を文字数配列の最初の位置に代入されたデーターに連結して次の一時配列のデーターを検査し、一時配列のデーターを全て検査し終わったら、一時配列繰り返し処理を終了し、これで分岐１を終了し、次に、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行うが、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理１を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理１を終了し、２個のサイズで配列を作成し、この配列を検査機械語配列と仮称し、検査配列に代入された２個のデーターの最初の位置のデーターを機械語に変換して検査機械語配列の最初の位置に代入し、検査配列に代入された最後の位置のデーターを機械語に変換して検査機械語配列の最後の位置に代入し、２個のサイズで配列をふたつ作成し、各々の配列を左機械語配列、右機械語配列と仮称し、検査機械語配列に代入した最初の位置に代入されたデーターの左辺に相当する前述の特殊な4bitの数値を取得して、左機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置に代入されたデーターの左辺に相当する前述の特殊な4bitの数値を取得して、左機械語配列の最後の位置に代入し、検査機械語配列に代入した最初の位置のデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置のデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右機械語配列の最後の位置に代入し、２個のサイズで配列を作成し、この配列を番号配列と仮称し、右機械語配列に代入された最初の位置のデーターと右辺配列に代入された全てのデーターとを
比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最初の位置にデーターとして代入し、右機械語配列に代入された最後の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最後の位置にデーターとして代入し、２個のサイズで配列を作成し、この配列を抽出配列と仮称し、番号配列の最初の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最初の位置に代入し、番号配列の最後の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最後の位置に代入し、抽出配列に代入されたふたつのデーターを処理する為に以下の処理を行うが、この抽出配列に代入された最初の位置に代入されたデーターに対する処理を第一処理と仮称し、抽出配列に代入された最後の位置に代入されたデーターに対する処理を第二処理と仮称し、この第一処理と第二処理では、抽出配列のデーターの中から左機械語配列と同じ左辺に相当する前述の特殊な4bitの数値と同じデーターを探し出すという処理を行う事とし、探し出した結果を代入する為の変数をふたつ作成し、各々の変数を決定変数１、決定変数２と仮称し、配列をふたつ作成し、この配列をそれぞれ分離配列１と分離配列２仮称し、分離配列１と分離配列２に代入されるデーター数が解らないので分離配列１と分離配列２のサイズは、必要だと思われる最低限度以上のサイズで配列を作成し、抽出配列に代入されている最初の位置と最後の位置に代入されている二つのデーターを検査して処理する事とし、第一処理では、抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐２と仮称し、分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列１の最初の位置に抽出配列の最初の位置に代入されたデーターを代入し、分岐２で抽出配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列１の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最初の位置に代入されたデーターを区切り文字のマーク１で複数個に分割して、区切り文字のマーク１を削除した状態のデーターの全てを一つづつ分離配列１に代入し、これで分岐２を終了し、左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがあった場合は、同じものがあった分離配列１のデーターの位置を示すインデックスを取得し、決定変数１に取得したインデックスを代入し、左機械語配列の最初の位置に代入されたデーターと分離配列１に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがない場合は、何も行わない事とし、これで第一処理を終了し、次に第二処理を行う事とし、抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合とマーク１で区切られている場合とに分岐し、この分岐を分岐３と仮称し、分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られていない場合は、分離配列２の最初の位置に抽出配列の最後の位置に代入されたデーターを代入し、分岐３で抽出配列の最後の位置に代入されたデーターが、マーク１で区切られている場合は、抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを作成して、分離配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最後の位置に代入されたデーターを区切り文字のマーク１で複数個に分離分割して、区切り文字のマーク１を削除した状態のデーターに加工したデーターを全て一つづつ分離配列２に代入し、これで分岐３を終了し、左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがあった場合は、同じものがあった分離配列２のデーターの位置を示すインデックスを取得し、決定変数２に取得したインデックスを代入し、左機械語配列の最後の位置に代入されたデーターと分離配列２に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがない場合は、何も行わない事とし、これで、第二処理を終了し、２個のサイズで配列を作成し、この配列を暫定文字数配列と仮称し、番号配列に代入された最初の位置に代入されたデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最初の位置に代入し、番号配列に代入された最後の位置に代入されたデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最後の位置に代入し、ふたつの配列を作成し、このふたつの配列を各々、決定文字数配列1と決定文字数配列２と仮称し、決定文字数配列1と決定文字数配列２の両方ともに代入するデーター数が解らないので必要最低限と思われるサイズ以上の任意のサイズで配列を作成し、暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐４と仮称し、分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られていない場合は、決定文字数配列1の最初の位置に暫定文字数配列の最初の位置に代入されたデーターを代入し、分岐４で暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られている場合は、暫定文字数配列の最初の位置に代入されたデーターが、マーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列２と仮称し、暫定文字数配列の最初のデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配���の最初のデーターをマーク１で複数個に分割して、マーク１を削除したデーターを全て一つづつ一時配列２代入し、決定変数１のデーターを一時配列２に代入されたデーターの位置を示すインデックスとして使用して一時配列２のインデックスの位置に代入されたデーターを取得し、取得したデーターを決定文字数配列1の最初の位置に代入し、これで分岐４を終了し、暫定文字数配列の最初の位置に代入されたデーターがマーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐５と仮称し、分岐５で暫定文字数配列の最初のデーターがマーク２で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列1の最初の位置に代入されたデーターを代入し、分岐５で暫定文字数配列の最初のデーターがマーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称し、決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列1の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ仮決定行数配列に代入し、これで分岐５を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列1の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初の位置から最後までの全てのデーターを一つづつ決定文字数配列1に代入し、暫定文字数配列の最後のデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐６と仮称し、分岐６で暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られていない場合は、決定文字数配列２の最初の位置に暫定文字数配列の最後の位置に代入されたデーターを代入し、分岐６で暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られている場合は、暫定文字数配列の最後の位置に代入されたデーターがマーク１で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列３と仮称し、暫定文字数配列の最後の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列３の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最後の位置に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列３に代入し、決定変数２のデーターを一時配列３に代入されたデーターの位置を示すインデックスとして使用して一時配列３のデーターを取得し、取得したデーターを決定文字数配列２の最初の位置に代入し、これで分岐６を終了し、暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐７と仮称し、分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列２の最初の位置に代入されたデーターを代入し、分岐７で暫定文字数配列の最後の位置に代入されたデーターが、マーク２で区切られている場合は、マーク２で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称し、決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列２の最初の位置に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て仮決定行数配列に一つづつ代入し、これで分岐７を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列２の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初から最後までの全てのデーターを決定文字数配列２に一つづつ代入し、検索対象配列と同じサイズの配列を作成し、この配列を検索結果配列と仮称し、全角半角問わない任意の文字を決定し、これをマーク３と仮称し、マーク３は、マーク１とマーク２の区切り文字と同じであっても良いものとし、決定文字数配列１に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のデーターを代入する位置を示すインデックスの位置にマーク３を代入し、決定文字数配列２に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のインデックスの位置にマーク３を代入し、検索結果配列の全てのデーターを検査し、検索結果配
列を検査してマーク３があったら、検索結果配列の次の位置に代入されたデーターにマーク３があるかどうかを検査し、検索結果配列の次の位置に代入されたデーターにマーク３がある場合は、次の検査データー位置を二つ進めて、検索結果配列の次の位置に代入されたデーターにマーク３がない場合は、注目配列のデーターのマーク３を削除して、次の検査データー位置を二つ進めるという処理を行い、検索結果配列に代入されたデーターの全てを検査し終わらせる事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
【請求項２】
コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成する事とし、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク１、マーク２と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、読み込んだデーターを検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、読み込んだデーターを一つづつ検索対象配列に代入し、検索対象配列の偶数のインデックスに代入されているデーターを、左辺に相当するデーターと仮称し、奇数のインデックスに代入されているデーターを、右辺に相当するデーターと仮称し、２文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が１文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称し、検索対象配列のインデックスは、0から始まっているものとし、検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入し、検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称し、検索対象配列２に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成するが、このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成し、作成した左右が逆転し、スペースで区切られた１文字の文字をRL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、一つづつ全てRL検索対象配列２に代入し、以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと仮称し、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと仮称し、配列を作成し、この配列を出現文字配列と仮称し、RL検索対象配列２に代入されたデーター全てからRL検索対象配列２に代入されたデーターに出現する全文字種を取得して出現文字配列に代入するが、出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、この配列を仮称、ソート配列とし、RL検索対象配列２に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートし、ソートしたデーターをソート配列の最初の位置から代入する度に一つづつ代入する位置をずらして、順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称し、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された違うデーターであった次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、出現文字配列の末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査し、この処理をソート配列に代入された全てのデーターに対して繰り返し処理する事でRL検索対象配列２に代入された全てのデーターの中から、RL検索対象配列２に代入されたデーターに出現する全文字種を取得して出現文字配列に代入し、ソート配列に代入された全てのデーターに対して出現繰り返し処理を行ったら出現繰り返し処理を終了し、出現文字配列作成工程も終了し、配列を作成し、この配列を右辺配列と仮称し、出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行う事で右辺配列を完成させるが、この工程を右辺配列作成処理と仮称し、出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称し、出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入し、仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入さ���た全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了するが、重複したデーターを削除したデーターの作成方法は、出現文字配列作成工程と同じ方法で行う事とし、右辺配列のサイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入し、分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字としてマーク１を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入し、右辺配列に代入された最初のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了し、分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列２または、検索対象配列２のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサイズで作成し、この配列を文字数配列と仮称し、以下の繰り返し処理を行うが、この繰り返し処理を繰り返し処理３と仮称し、繰り返し処理３では、分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐８と仮称し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列２に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つだけの場合は同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切り文字として、マーク２を既に記録してあるデーターと新たに見つけたRL検索対象配列２のインデックスとの間に入れて連結して代入し、分岐８の分類配列の最初の位置に代入されたデーターがマーク１で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割したデーター数分のサイズで配列を作成し、この配列を一時配列４と仮称し、分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを作成して、一時配列４の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク１で複数個に分割してマーク１を削除したデーターに加工したデーターを全て一つづつ一時配列４に代入し、変数を作成し、この変数を仮一時変数と仮称し、一時配列４に代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を一時配列４繰り返し処理と仮称し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し、一時配列４の最初の位置のデーターとRL検索対象配列２に代入されたデーターが同じであった場合に、同じであったRL検索対象配列２のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列２のデーターの位置を示すインデックスを取得して、仮一時変数に代入するが、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク２を文字区切りとして連結して、新たに見つけたRL検索対象配列２のデーターが代入されている位置を示すインデックスを取得して、その取得したデーターを連結して仮一時変数に代入し、一時配列４の最初の位置のデーターに対してRL検索対象配列２の全てのデーターを検査し終わったら、一時配列４のデーターをひとつ検査し終わる度に区切り文字としてマーク１を仮一時変数に代入されたデーターに連結して次の一時配列４のデーターを検査する事とし、一時配列４に代入されたデーター全てを検査し終わったら、一時配列４繰り返し処理を終了し、文字数配列の最初の位置に仮一時変数のデーターを代入し、これで分岐８を終了し、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う事とし、分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理３を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理３を終了し、変数を作成し、この変数を番号変数と仮称し、検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入し、変数を作成し、この変数を抽出変数と仮称し、番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用
して分類配列のデーターを読み込んで、抽出変数に代入し、配列を作成し、この配列を分離配列と仮称し、抽出変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐９と仮称し、分岐９で抽出変数に代入されたデーターがマーク１で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入し、分岐９で抽出変数に代入されたデーターがマーク１で区切られている場合は、抽出変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして分離配列を作成しなおして、抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ分離配列に代入し、これで分岐９を終了し、分離配列のデーターの中から検査配列の最初の位置に代入されたデーターと同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得し、探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成し、この変数を決定変数と仮称し、決定変数に探し出して取得した分離配列の位置を示すインデックスを代入し、変数を作成し、この変数を暫定文字数変数と仮称し、番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入し、配列を作成し、この配列を決定文字数配列と仮称し、変数を作成し、この変数を一時変数２と仮称し、暫定文字数変数に代入されたデーターが、マーク１で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１０と仮称し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られていない場合は、一時変数２に暫定文字数変数に代入されたデーターを代入し、分岐１０で暫定文字数変数に代入されたデーターが、マーク１で区切られている場合は、暫定文字数変数に代入されたデーターをマーク１で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列５と仮称し、暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを作成して、一時配列５の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク１で複数個に分割して、マーク１を削除したデーターに加工したデーターを全て一つづつ一時配列５に代入し、決定変数に代入されたデーターを一時配列５に代入されたデーターの位置を示すインデックスとして使用して一時配列５のデーターを読み込んで一時変数２に代入し、これで分岐１０を終了し、一時変数２に代入されたデーターが、マーク２で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐１１と仮称し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られていない場合は、決定文字数配列の最初の位置に一時変数２に代入されたデーターを代入し、分岐１１で一時変数２に代入されたデーターが、マーク２で区切られている場合は、マーク２で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数２に代入されたデーターをマーク２で複数個に分割して、マーク２を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入し、これで分岐１１を終了し、決定文字数配列のデーターを少ない順番でソートし、配列を作成し、この配列を決定文字数配列２と仮称し、全角半角問わない任意の文字を指定し、これをマーク３と仮称し、マーク３は、マーク１または、マーク２の区切り文字と同じであっても良いものとし、決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列２に代入する事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
ステップ１０７に進む。検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列２と仮称する。検索対象配列のインデックスは、0から始まっているものとする。検索対象配列の偶数のインデックスに代入されているデーターを偶数に相当する左辺または、左辺に相当するデーターと呼んだり、奇数のインデックスに代入されているデーターを奇数に相当する右辺または、右辺に相当するデーターと呼んだりする事がある。検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を作成して、検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、２文字を１文字とした文字列を１文字づつ検索対象配列２に代入する。検索対象配列２と同じサイズで配列を作成し、この配列をRL検索対象配列２と仮称する。検索対象配列２に代入されている最初から最後までの全てのデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成する。このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成する。RL検索対象配列２の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列２に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを全て一つづつRL検索対象配列２に代入する。以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと呼んだり、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと呼んだりする事がある。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
配列を作成し、この配列を決定文字数配列２と仮称する。任意の文字を指定し、これをマーク３と仮称する。実施例では、「一致」という文字をマーク３とした。マーク３は、マーク１または、マーク２の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列に代入された全てのデーターを決定文字数配列２のデーターの位置を示すインデックスとして使用してマーク３を決定文字数配列２に代入する。図符号Ｍの図符号Ｃ列と図符号Ｆ列と図符号Ｉ列を持つリストビューの図符号Iの検索結果表示列に決定文字数配列２のデーターを表示して処理を終了する。図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞は、図６の＜実施例で使用した検索対象ファイルの内容図＞で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示したものである。処理を終了すると図５の＜図符号Ｅをチェックしてテキストレベルでの検索を実行した結果を説明する図＞のような状態で表示する。