JP4944266B1 - 2分割文字検索ソフトウェア - Google Patents

2分割文字検索ソフトウェア Download PDF

Info

Publication number
JP4944266B1
JP4944266B1 JP2011127790A JP2011127790A JP4944266B1 JP 4944266 B1 JP4944266 B1 JP 4944266B1 JP 2011127790 A JP2011127790 A JP 2011127790A JP 2011127790 A JP2011127790 A JP 2011127790A JP 4944266 B1 JP4944266 B1 JP 4944266B1
Authority
JP
Japan
Prior art keywords
array
data
assigned
mark
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011127790A
Other languages
English (en)
Other versions
JP2012256135A (ja
Inventor
義尚 神山
Original Assignee
義尚 神山
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 義尚 神山 filed Critical 義尚 神山
Priority to JP2011127790A priority Critical patent/JP4944266B1/ja
Application granted granted Critical
Publication of JP4944266B1 publication Critical patent/JP4944266B1/ja
Publication of JP2012256135A publication Critical patent/JP2012256135A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】中国語などの文字種が多い言語においても、文字検索を行う際に、検索速度の更なる高速化を実現する。
【解決手段】DOS/V機といわれるコンピューターで普通に使用されているASCIIコードなどによるテキスト文字とDOS/V機といわれるコンピューターに搭載されているCPUが処理を予定している命令文として使用されている機械語の両方に共通して存在する特性を利用して文字を分類して、文字検索を行う事で検索処理速度を高速化する。
【選択図】図1

Description

本発明は、コンピューターで文字検索を行う際の高速化に関する
圧縮技術に関する文献としては、〔非特許文献1〕がある。
奥村晴彦・山崎敏 著 LHAとZIP 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版
この〔非特許文献1〕は、LZHとZIP形式の圧縮技術について詳しく記述している。この〔非特許文献1〕の中で、文字の検索速度の向上という問題の解決方法として従来技術を解説している。しかし、本発明の2分割文字検索ソフトウェアの様な処理工程は、記載されていない。
従来技術では、検索しようとしているファイルに記録された文字を1文字づつハッシュコードと呼ばれる0から9までの数値を出力させて、出力させたハッシュコードを基に文字を分類し、分類した中から文字を探し出すという方法で検索速度を高速化するものである。このハッシュコードを基に文字を分類する方法だと、全文検索と比較すると最大で10倍の処理速度という事になる。しかしながら、中国語などの検索する文字種が多い言語の文字検索などでは、より高速な検索技術が必要であると考えられる。また、できるだけ安価なコンピューターで検索する事を考えるとやはり、もっと、高速な検索技術が期待されていると思われる。
コンピューターで普通に使われているテキスト文字(日本では、ASCIIコード2文字で1文字を表す文字とASCIIコード1文字で表す文字)を、テキスト文字と略して記述する事とする。また、テキスト文字の事を文字コードで書かれた文字という事がある。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。この機械語でASCIIコードを表すと、4bitを1単位としたBCD数値と呼ばれる数値を2個使用して、8bitで1文字とした機械語となる。また、以降、4bitを1単位としたBCD数値と呼ばれる数値1個の事を4bitを1単位としたBCD数値と呼ばれる数値1文字と表現したり、4bitを1単位としたBCD数値と呼ばれる数値2個の事を4bitを1単位としたBCD数値と呼ばれる数値2文字と表現したりする。
また、配列とは、データーを一個から複数のデーターを代入する事が出来るものを言い、配列サイズまたは、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列に代入したデーターの事を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶものである。また、配列のサイズの事を配列サイズと呼ぶ事がある。配列の型とは、配列に代入する事ができる一個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数の指定を行う場合に用いるものである。変数にも配列と同じく型が存在し、型の意味は、配列の型の場合と全く同じである。
また、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成する時点で配列のインデックスを何番から作成するという具合に配列のインデックスを指定せずに配列を作成すると通常、配列のデーターを代入できる部分の先頭の位置のインデックスは0番となり順次1づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。これによって、プログラマーは、配列のインデックスを指定する事で簡便に配列の位置を指定する事ができる様にしているものである。
日本語をコンピューター上でテキスト文字にすると、文字コードでファイルに記述されるようになっている。その為、日本語のかたかなで「アイウエオ」という文字列が書かれたファイルをバイナリー形式で読み込んで配列に代入する為に必要な配列サイズで配列を作成し、その配列に日本語のかたかなで「アイウエオ」という文字列が書かれたファイルをバイナリー形式で読み込んだデーターを1byteづつ、最初の配列から順に配列に代入すると以下の様になる。何も指定せずに配列を作成すると、配列の最初のインデックスが0であるというのは、常識である。0は、偶数であり、1が奇数である事も当然の事である。
131
65
131
67
131
69
131
71
131
73
必ず、131という文字コードが互い違いに記述されている様子がうかがえると思う。和文の文章の場合は、殆どの場合がこの様な文字コードの組み合わせである。つまり、8bitを1文字として、2文字で1文字を表す方式になっている。8bitを1文字として表現可能な数値は、0から255までの数値である。従って、配列インデックスの偶数データーの131の文字コードの方を基準に分類するか、または、その逆に、配列インデックスの奇数データーの65、67、69、71、73の方を基準に分類すれば、16bitの文字を分類整理する場合、0から255までの数値で分類する事が可能にり高速検索が可能になるはずなのである。配列のインデックスの偶数値のデーターを基準にする場合と配列のインデックスの奇数値のデーターを基準にする場合との二種類があるが、どちらを基準に分類した場合でも、この分類方法で日本語を分類すると最大で256種類に分類する事が出来るという事になる。日本語の文字が256種類に分類する事が出来るほど大量に文字種があるかどうかは検証しておりません。これは、理論値です。実際には、256×256個の文字数が存在しないというのは明白ですので最速を目指すコードを記述する場合は、後者の65、67、69、71、73の方を基準に分類する方法を利用する事が良い方法であると考えられる。なぜなら、分類する数が多くなれば多くなるほど高速検索が可能になるはずだからである。しかし、分類する数が多くなれば多くなるほど高速検索が可能になるといっても、当然、限界がある。この限界を超えて分類した場合は、段々と検索処理時間が長くなっていくはずである。分類する事による検索時間の短縮方法に於ける分類限界は、未だに計算していないので、今のところ、ここまでが分類による検索処理時間の短縮法方に於ける限界であると、御説明できないところである。さて、従来技術のハッシュコードで分類する場合と比較すると単純計算で最大25.6倍の高速検索処理が出来るという事になる。また、配列インデックスの偶数データーを基準に分類する方法と配列インデックスの奇数データーを基準に分類する方法のどちらの場合を利用しても本発明のレパートリーであると明言する。また、これ以降、このテキスト文字の特性を利用して分類する方法で検索する方法をテキストレベルの検索と呼ぶ事とする。
分類する数が多くなれば多くなるほど高速検索が可能になるといっても、当然、限界があると前述しましたが、その限界がなぜあるのかの説明をこの段落で説明する。とてつもなく簡単な話ですが、全件検索するのと差が無い分類数にまで分類数を増やす事は出来ないという事である。例えば、256文字書かれたファイルがあると仮定する。このファイルに書かれた文字のすべてが違う文字であった場合、このファイルに書かれた文字を256種に分類すると、全件検索しているのと同じ事になってしまうのである。このような分類限界があるという事である。この分類限界は、機械語レベルでの検索でも、同じ様な限界が存在する。突然、機械語レベルでの検索という言葉を使用するがこの機械語レベルの検索という言葉の定義は、段落〔0012〕を参照の事。また、従来のハッシュコードで分類した場合との処理速度の比較という意味では、テキストレベルでの検索と機械語レベルでの検索の両方ともに処理してみてどちらが速い処理になるのかを検証してから処理するかべきなのか、または、最初からこの方法だけを使用するといった具合に処理速度を比較検証せずに処理すべきなのか問題になるところである。実施例では、この分類限界による処理速度の差を完全に無視した処理工程で処理するソフトウェアを作成しました。つまり、どちらが早いかを確認する事で速い処理を行うという様な処理工程を一切挿入しないで処理しているという事である。また、従来のハッシュコードで分類した場合との処理速度の比較を行う事で処理速度の速い処理を選択するという方法も考えられるが、実施例では、この様な処理も行わなかった。
ASCIIコードを使用していない他のコンピューターでも本発明のテキストレベルの検索と同じ事が出来ると考えられる。第一の方法として、一定のbit数で1文字の数値を表し、2文字の数値で1文字の文字を表す方式のコードを使用している場合、どちらか一方の1文字の数値を基準に分類する事ができると考えられるからである。第二の方法として、ASCIIコードを使用していない他のコンピューターでも、分類する為の検索用特殊文字コードを作成する事で本発明のソフトウェアと同じ事を行う事ができると考えている。この場合は、分類する為の検索用特殊文字コードをASCIIコードと同じものにし、ASCIIコードを使用していない他のコンピューターの文字コードを分類する為の検索用特殊文字コードに変換する事で実現する事が可能になるはずである。ASCIIコードを使用していない他のコンピューターでも本発明のテキストレベルの検索を行う、第一の方法と第二の方法の両方とも本発明のソフトウェアである事を明言する。
DOS/V機コンピューターと呼ばれるコンピューターで使用されている機械語でASCIIコードの0から255までの256文字全ての文字コードを表すと以下の様になる。4bitを1単位とし、8bitで1文字とした機械語となるのである。0と1で構成されたいわゆる2進数と呼ばれる文字列に変換した2進数が4bitに満たない場合は、4bitに満たない分だけ後方に0を連結して合計で4bitになる様にしたような特殊な4bitの数値である。この特殊な4bitの数値を普通BCD数値と呼んでいる。ASCIIコードの機械語は、8bitなのでわかり易いように4bitづつに分ける為にスペースをBCD数値とBCD数値の間に挿入して表記した。下記のBCD数値は、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUの機械語を図7の<本発明に使用した機材の説明図>で説明している実施例で用いた機材を用いて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は、2進数の0から15までとし、右辺の4bitは、0から15までの2進数となっている。4bitで記述されている右辺は、16文字ごとに1づつ大きな数値となる。従って、右辺の4bitを基準に分類すると16種類に文字を分類する事が出来るという事になる。また、その逆に左辺を基準に分類しても、右辺を基準に分類した場合と同じく16種類に分類するが出来るという事になる。従来技術のハッシュコードで分類する場合と比較すると単純計算で約1.5倍の高速検索処理が出来るという事になる。また、この機械語の特性を利用して分類する方法で検索する方法を機械語レベルの検索と呼ぶ事とする。
機械語レベルの検索は、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類するものであるから、DOS/V機コンピューターと呼ばれるコンピューター以外のコンピューターではCPUと呼ばれる中央演算処理装置が処理を予定している命令文のが違う為に使用できない分類方法になってしまう。しかしながら、CPUと呼ばれる中央演算処理装置が処理を予定している命令文が違うのであるならば、違う機械語をDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と同じものに変換処理する事でDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類する機械語レベルの検索を行う事が可能となる。また、DOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語は、左辺の4bitは、2進数の0から15までとし、右辺の4bitは、0から15までの2進数となっており、4bitで記述されている右辺は、16文字ごとに1づつ大きな数値となるように作られているが、左辺の4bitと右辺の4bitを左右入れ替えた分類用の分類用特殊コードを作成して、違う機械語を分類用特殊コードに変換処理する事でもDOS/V機コンピューターと呼ばれるコンピューターで使用されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語の特徴を利用して分類する機械語レベルの検索を行う事が可能となる。
実施例では、1文字のみの検索を行えるソフトウェアであるが、連続した文字列を検索するソフトウェアであっても、本発明の2分割文字検索ソフトウェアと同じように文字コードや機械語の特性を利用して分類する事によって検索処理速度を高速化している場合は、本発明である。つまり、本発明で説明しているテキストレベルの検索と機械語レベルの検索のどちからかと同じ方法で文字を検索している場合は、本発明であるという事である。
実施例のテキストレベルの検索では、半角英数字を検索できるものではない。半角英数字のみのファイルから文字を検索するソフトウェアや、半角英数字とその他の文字とが混在したファイルなどから、文字を検索するソフトウェアであっても、本発明の技術を利用している場合は、本発明であると明言する。
日本語や中国語などの様な文字種の多い言語での文字検索が従来技術よりも高速化できるようになる。また、安価なコンピューターでも高速な検索が行えるようになるというメリットがある。
利用用途は、かなり広範囲であり、圧縮技術や差分ファイル作成技術やデーターベース検索や文章ファイルの編集用文字列検索と書き換えソフトウェアやインターネット検索ソフトウェアなどでの使用が考えられる。
実施に於いては、Microsoft株式会社のVisual
Stadio2005というコンパイラを使用しC#というコンピューター言語を使用して本発明のソフトウェアを作成した。また、実施例の分岐で分岐条件に該当する場合が無い場合どうするかを記述していない場合があるが、この場合何もしないという事である。
本発明のソフトウェアは、図7の<本発明に使用した機材の説明図>に示した様なハードウェア資源上で動作するソフトウェアである。図7の<本発明に使用した機材の説明図>に示した様なハードウェア資源は、図符号Oのコンピューター本体と図符号Nのモニターと図符号Pのキーボードと図符号Qのマウスの合計4個のパーツで構成された機材であるが、これらの合計4個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Oのコンピューター本体は、DOS/V機コンピューターと呼ばれるコンピューターである。図符号Oのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明の圧縮前の2分割処理ソフトウェアは、図符号Oのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Oのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされていて、図符号Oのコンピューター本体から本発明のソフトウェアを起動する事が出来る場合は、図符号Oのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとする。本発明のソフトウェアがインストールされている図符号Oのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Oのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明のソフトウェアを起動すると本発明のソフトウェアは、図符号Oのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Oのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明のソフトウェアに書かれたCPUと呼ばれる中央演算処理装置が処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューター上で本発明のソフトウェアが動作する。従って、本発明のソフトウェアがハードウェア資源を利用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明のソフトウェアに書かれた命令文は、コンピューター本体のCPUによって処理されると表現しなおす事ができるものである。
図7の<本発明に使用した機材の説明図>に示した様なハードウェア資源上で動作するソフトウェアであると段落〔0019〕にて説明したが、コンピューターの形状は、図7の<本発明に使用した機材の説明図>に示した様なハードウェア資源上に限定できるものではなく、図符号Nのモニター、図符号Oのコンピューター本体、図符号Pのキーボード、図符号Qのマウスが一体化したものや、図符号Qのマウスが存在しない構成のものや、図符号Nのモニター、図符号Oのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後ももっと、いろいろな形状のコンピューターが開発されていくであろうと考えられる。図7の<本発明に使用した機材の説明図>に示した様なハードウェア資源上でなくても、類似と言い得るいわゆるコンピューターで本発明のソフトウェアを動作させている場合も本発明のソフトウェアであると明言する。また、図符号Oのコンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事と定義すると、ソフトウェアがコンピューターと呼ばれるハードウェア資源と協調して動作して処理するものであるという事を含めたかたちで、ソフトウェアの説明を簡単な表現で表現すると、コンピューター上で動作するソフトウェアであると表現する事ができる。
以下の段落に於いて、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、図符号Oのコンピューター本体の内部にある本体メモリーに作成される。但し、OSと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Oのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Oのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Oのコンピューター本体の内部にある本体メモリーまたは、図符号Oのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Oのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、配列や変数などを作成すると記述している場合の配列や変数などが作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されるという表現になる。
以下の段落に於いて、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合、配列の最初の位置に既にデーターを代入した後は、配列に代入されたデーターの最後の位置のデーターの次の配列の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の配列の位置の指定を末尾と表現できると思われる。では、未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現が可能だと考えている。そこで、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合は、配列の最初の位置であっても、配列の末尾に代入すると記述している事がある。また、以下の段落で、配列の最初の位置から代入する度に一つづつ代入する位置をずらしてデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、元のデーター(作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されたデーターなど)の順番通りに一つづつ代入するものとする。
以下の段落に於いて、全て一次元配列を利用してソフトウェアを作成しているが、多次元配列を利用する事や、ファイルを利用する事でも同じ処理が出来ると考えられる。また、一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはソフトウェアの書き方の違いであって、全て本発明の単純なレパートリーでしかないという事を明言する。
また、以下の段落で、ソフトウェアとコンピューターによる自動処理の場合は、いちいち、ソフトウェアとコンピューターによる自動処理である事を書いておりません。書いていない場合は、ソフトウェアとコンピューターによる自動処理である。しかし、図1の<本発明の2分割文字検索ソフトウェアのフローチャート図>には、図符号Aの人為的な手動による操作もしくは、入力と、図符号Bの本発明のソフトウェアとコンピューターによる自動処理の二つに分けて示す事とした。以下のソフトウェアとコンピューターによる自動処理の部分の処理工程を記述した命令文の事をソフトウェアと総称する。また、配列のサイズの調整なども自明の理であるから書いておりません。また、配列の型の調整なども自明の理であるから書いておりません。また、変数の型についても自明の理であるから書いておりません。また、図2、図3、図4、図5、図6、図7は、実際とは、多少異なる。
また、以下の段落で、機械語を取得すると説明している場合の処理工程を説明する。Microsoft株式会社のVisual Stadio2005というコンパイラを使用しC#という言語を用いている場合は、機械語を取得する場合に使用するように用意された関数を使用するとtrueとfalseというデーターとして取得される。取得されたtrueとfalse の組み合わせを0と1という数値で置き換えられた形で表現するには、変換処理を行う必要がある。Microsoft株式会社のVisual Stadio2005というコンパイラを使用しC#という言語でこの変換処理を行うと、trueが1に変換され、falseが0に変換される。変換された数値データーを4bitづつ取得すると、4bitのBCD数値が得られるようになっている。機械語を取得するとは、ASCIIコードの1文字分の機械語を取得するという事であり、ASCIIコードの1文字分の機械語を取得するという事は、4bitのBCD数値を1単位とした2単位分の合計8bitのデーターを1文字として取得するという事である。但し、左辺に相当する機械語を取得するという場合は、左辺に相当する4bitのBCD数値の1単位分のみを取得するという事であり、右辺に相当する機械語を取得するという場合は、右辺に相当する4bitのBCD数値の1単位分のみを取得するという事である。
また、以下の段落で区切り文字としてスペースを使用すると説明しているが、このスペースは、半角または、全角のどちらでも良い。また、マーク1やマーク2という区切り文字の説明をしている段落があるが、このマーク1やマーク2という区切り文字も半角または、全角のどちらでも良い。
また、以下の段落で機械語に変換すると説明している場合の処理工程を説明する。データーから機械語の4bitを1単位としたBCD数値を取得して、4bitを1単位とし2単位の合計8bitのデーターを1文字として表し、BCD数値とBCD数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とする。
図1の<本発明の2分割文字検索ソフトウェアのフローチャート図>を参照の事。図符号Jと図符号Kには、ステップ番号を付けました。このステップ番号順に説明する事とする。まず、本発明の圧縮前の2分割処理ソフトウェアを起動すると、図2の<本発明の2分割文字検索ソフトウェアの操作画面図>の様な操作画面が図符号Nのモニターに表示される。
ステップ100に進む。ステップ100は、人為的な操作である。図符号Lの参照ボタンを図符号Qのマウスなどの入力デバイスを使用してクリックする。これによって、ハードディスクなどの記録媒体の中を閲覧できる様になるので、ハードディスクなどの記録媒体から検索対象ファイルを選択する。選択すると図符号Gの指定した検索対象ファイルをフルパスで表示するテキストボックスに、選択した検索対象ファイルのフルパスが入力される。また、図符号Pのキーボードなどの入力デバイスを使って図符号Gの指定した検索対象ファイルをフルパスで表示するテキストボックスに、直接入力する事も出来るようになっている。図符号Gの指定した検索対象ファイルをフルパスで表示するテキストボックスに検索対象ファイルを指定したら、図符号Jのファイルを読み込むボタンを図符号Qのマウスなどの入力デバイスを使用してクリックする。
ステップ101に進む。図符号Gの指定した検索対象ファイルをフルパスで表示するテキストボックスに指定されたファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称する。検索対象配列に図符号Gの指定した検索対象ファイルをフルパスで表示するテキストボックスに指定された検索対象ファイルをバイナリー形式で全て読み込んで、検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、検索対象ファイルをバイナリー形式で全て読み込んだデーターを一つづつ検索対象配列に代入する。読み込んだ検索対象ファイルのデーターを検索対象配列の内容を図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューにある図符号Fの文字コード表示列に一つづつ縦方向に表示する。検索対象配列の最初の位置(インデックス0番)を1として連番を作成する事で検索対象配列の各データーに対応した文字数を算出する。検索対象配列と同じサイズの配列を作成し、この配列を全文字数配列と仮称する。算出した文字数を全文字数配列の最初の位置から最後まで代入する度に一つづつ代入する位置をずらして、算出した文字数の最初から最後までの全てのデーターを一つづつ全文字数配列に代入する。全文字数配列の内容を図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューにある図符号Cの文字数表示列に一つづつ縦方向に表示する。ここまでの処理結果を表示させた状態の操作画面の図が図3の<図符号Jのボタンをクリックした結果を説明する図>である。図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューに配列の内容を表示した状態を示した図である。つまり、図符号Cの文字数表示列と図符号Fの文字コード表示列に配列の内容を表示した状態である。
ステップ102に進む。ステップ102は、人為的な操作である。図符号Hの検索対象ファイルから検索する文字を入力するテキストボックスは、検索対象ファイルから検索したい文字を1文字だけ入力出来るように作成してある。図符号Hの検索対象ファイルから検索する文字を入力するテキストボックスに図符号Pのキーボードなどの入力デバイスを使用して検索対象ファイルから検索したい文字を1文字だけ入力する。図符号Dの機械語レベル検索工程を指定するチェックボックスか図符号Eのテキストレベルの検索工程を指定するチェックボックスのどちからかを図符号Qのマウスなどの入力デバイスを使用して選択して、図符号Kの検索実行ボタンを図符号Qのマウスなどの入力デバイスを使用してクリックする。ここで、図符号Dの機械語レベル検索工程を指定するチェックボックスを選択した場合は、機械語レベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する。ここで、図符号Eのテキストレベルの検索工程を指定するチェックボックスを選択した場合は、テスキストレベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する。先に、機械語レベルの検索方法の場合を説明する事にする。機械語レベルの検索方法の場合は、図符号Qのマウスなどの入力デバイスを使用して図符号Dの機械語レベル検索工程を指定するチェックボックスをクリックする事で検査方法を指定して、図符号Kの検索実行ボタンを図符号Qのマウスなどの入力デバイスを使用してクリックする。
ステップ103に進む。図符号Hの検索対象ファイルから検索する文字を入力するテキストボックスに入力された1文字のテキスト文字をファイルに保存する。保存したファイルを検査一時ファイルと仮称する。この検査一時ファイルは、検索文字を1文字だけ記録したファイルとなる。保存する場合の注意点として、後で、この検査一時ファイルをバイナリー形式で読み込ませて検索用データーとして使用するのでバイナリー形式で正しく読み込めるようにエンコードを指定して保存する。2文字代入できるサイズで配列を作成する。この作成した配列を検査配列と呼ぶ事とする。検査一時ファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入する。
ステップ104に進む。検索対象配列のコピー配列を作成し、このコピーした配列を検索対象配列2と仮称する。検索対象配列2の全データーを機械語に変換したデーターを代入する為の検索対象配列2のサイズと同じ配列サイズで配列を作成し、この配列を機械語配列と仮称する。検索対象配列2の最初から最後までの全データーを機械語に変換したデーターを作成して、機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した検索対象配列2の最初から最後までの全データーを機械語に変換したデーターを一つづつ機械語配列に代入する。機械語配列と同じサイズで配列を作成し、この配列を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機械語配列に代入されたデーターが2つ以上あった場合は、複数あるデーターとデーターの区切り文字として数値以外の任意の文字を既にあったデーターに連結し、その後ろに新たに見つけ出したRL機械語配列に代入されたデーターを連結して分類配列の最初の位置(末尾とも言える)に代入する。この数値以外の任意の文字をマーク1と仮称する。マーク1は、区切り文字として使用する。右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較し終わったら、右辺配列に代入された次のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較するという繰り返し処理を行う。右辺配列に代入されたデーター全ての検査を終了する事で検査繰り返し処理を終了する。また、マーク1とは別に数値以外の任意の文字をもう一個選択して、マーク2と仮称する。マーク2も、マーク1と同じく区切り文字として使用する。マーク1とマーク2とは、必ず異なる区切り文字を選択し指定する。
分類配列に代入された全てのデーターがRL機械語配列または、検索対象配列のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズで作成し、この配列を文字数配列と仮称する。文字数配列を作成する為に分類配列の最初のデーターから最後のデーターまで以下の処理を繰り返し行う。この繰り返し処理を繰り返し処理1と呼ぶ事とする。繰り返し処理1では、検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐1と呼ぶ事とする。分岐1で検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られていない場合は、検査対象の分類配列の最初の位置に代入されたデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列のデーターの位置を示すインデックスが一つだけの場合は同じであったRL機械語配列のデーターの位置を示すインデックスを取得して、文字数配列の最初の位置に代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク2を区切り文字として使用して複数あるデーターとデーターの間に入れてRL機械語配列のインデックスを連結して文字数配列の最初の位置に代入する。分岐1で検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合は、検査対象の分類配列に代入されたデーターをマーク1で分割したデーターを代入する配列をマーク1で分割できる個数分のデーターを格納できる配列サイズで作成し、この配列を一時配列と仮称する。検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク1で分割してマーク1を削除した状態に加工したデーターを作成して、一時配列の最初の位置から代入する度に一づつ代入する位置をずらして、作成した検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク1で分割してマーク1を削除した状態に加工したデーターを全て一つづつ一時配列に代入する。以下の処理を一時配列に代入されたデーター数分、繰り返し処理を行う。この繰り返し処理を一時配列繰り返し処理と仮称する。一時配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列に代入されたデーターの位置を示すインデックスが一つであった場合は同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを取得して文字数配列の最初のデーターとして代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切りマークとして、マーク2を複数あるデーターとデーターの間に入れて同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを連結して文字数配列の最初の位置に代入する。文字数配列の最初の位置に代入するデーターが二つ以上あるかどうかは、文字数配列の最初の位置にデーターを代入する度に代入した回数をカウントする事で判断させる事ができる。一時配列のデーターをひとつ検査し終わる度に区切り文字としてマーク1を文字数配列の最初の位置に代入されたデーターに連結して次の一時配列のデーターを検査する。一時配列のデーターを全て検査し終わったら、一時配列繰り返し処理を終了する。これで分岐1を終了する。次に、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う。分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う場合は、文字数配列の末尾に処理結果を代入する。この手順で繰り返し処理1を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理1を終了する。
ステップ105に進む。2個のサイズで配列を作成し、この配列を検査機械語配列と仮称する。検査配列に代入された最初の位置のデーターを機械語に変換して検査機械語配列の最初の位置に代入する。検査配列に代入された最後の位置に代入されたデーターを機械語に変換して検査機械語配列の最後の位置に代入する。2個のサイズで配列をふたつ作成し、各々の配列を左機械語配列、右機械語配列と仮称する。検査機械語配列に代入した最初の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最初の位置に代入する。検査機械語配列に代入した最後の位置に代入されたデーターの左辺に相当する4bitのBCD数値を取得して、左機械語配列の最後の位置に代入する。検査機械語配列に代入した最初の位置に代入されたデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最初の位置に代入する。検査機械語配列に代入した最後の位置に代入されたデーターの右辺に相当する4bitのBCD数値を取得して、右機械語配列の最後の位置に代入する。2個のサイズで配列を作成し、この配列を番号配列と仮称する。右機械語配列に代入された最初の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最初の位置にデーターとして代入する。右機械語配列に代入された最後の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最後の位置にデーターとして代入する。
2個のサイズで配列を作成し、この配列を抽出配列と仮称する。番号配列の最初の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最初の位置に代入する。番号配列の最後の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最後の位置に代入する。抽出配列に代入されたふたつのデーターを処理する為に以下の処理を行う。この抽出配列に代入された最初の位置に代入されたデーターに対する処理を第一処理と仮称し、抽出配列に代入された最後の位置に代入されたデーターに対する処理を第二処理と仮称する。この第一処理と第二処理では、抽出配列のデーターの中から左機械語配列と同じ左辺に相当する4bitのBCD数値と同じデーターを探し出すという処理を行う。探し出した結果を代入する為の変数をふたつ作成し、各々の変数を決定変数1、決定変数2と仮称する。配列をふたつ作成し、この配列をそれぞれ分離配列1と分離配列2仮称する。分離配列1と分離配列2に代入されるデーター数が解らないので分離配列1と分離配列2のサイズは、必要だと思われる最低限度以上のサイズで配列を作成する。抽出配列に代入されている最初の位置と最後の位置に代入されている二つのデーターを検査して処理する。第一処理では、抽出配列の最初の位置に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐2と仮称する。分岐2で抽出配列の最初の位置に代入されたデーターが、マーク1で区切られていない場合は、分離配列1の最初の位置に抽出配列の最初の位置に代入されたデーターを代入する。分岐2で抽出配列の最初の位置に代入されたデーターが、マーク1で区切られている場合は、抽出配列の最初の位置に代入されたデーターを区切り文字のマーク1で複数個に分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを作成して、分離配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最初の位置に代入されたデーターを区切り文字のマーク1で複数個に分割して、区切り文字のマーク1を削除した状態のデーターの全てを一つづつ分離配列1に代入する。これで分岐2を終了する。左機械語配列の最初の位置に代入されたデーターと分離配列1に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列1のデーターの位置を示すインデックスを取得する。決定変数1に取得したインデックスを代入する。左機械語配列の最初の位置に代入されたデーターと分離配列1に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、有り得ないので有り得ないので何も行わない。これで第一処理を終了する。次に第二処理を行う。抽出配列の最後の位置に代入されたデーターが、マーク1で区切られていない場合とマーク1で区切られている場合とに分岐し、この分岐を分岐3と仮称する。分岐3で抽出配列の最後の位置に代入されたデーターが、マーク1で区切られていない場合は、分離配列2の最初の位置に抽出配列の最後の位置に代入されたデーターを代入する。分岐3で抽出配列の最後の位置に代入されたデーターが、マーク1で区切られている場合は、抽出配列の最後の位置に代入されたデーターを区切り文字のマーク1で複数個に分離分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを作成して、分離配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最後の位置に代入されたデーターを区切り文字のマーク1で複数個に分離分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを全て一つづつ分離配列2に代入する。これで分岐3を終了する。左機械語配列の最後の位置に代入されたデーターと分離配列2に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがあった場合は、同じものがあった分離配列2のデーターの位置を示すインデックスを取得する。決定変数2に取得したインデックスを代入する。左機械語配列の最後の位置に代入されたデーターと分離配列2に代入された全てのデーターの左辺に相当する4bitのBCD数値を比較して同じものがない場合は、有り得ないので何も行わない。これで、第二処理を終了する。
2個のサイズで配列を作成し、この配列を暫定文字数配列と仮称する。番号配列の最初の位置に代入されたデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列に代入されたデーターを取得して暫定文字数配列の最初の位置に代入する。番号配列の最後の位置に代入されたデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列に代入されたデーターを取得して暫定文字数配列の最後の位置に代入する。
ふたつの配列を作成し、このふたつの配列を各々、決定文字数配列1と決定文字数配列2と仮称する。決定文字数配列1と決定文字数配列2の両方ともに代入するデーター数が解らないので必要最低限と思われるサイズ以上の任意のサイズで配列を作成する。暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐4と仮称する。分岐4で暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られていない場合は、決定文字数配列1の最初の位置に暫定文字数配列の最初の位置に代入されたデーターを代入する。分岐4で暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られている場合は、暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列2と仮称する。暫定文字数配列の最初の位置に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最初の位置に代入されているデーターをマーク1で複数個に分割して、マーク1を削除したデーターを全て一つづつ一時配列2に代入する。決定変数1のデーターを一時配列2に代入されたデーターの位置を示すインデックスとして使用して一時配列2のインデックスの位置に代入されたデーターを取得し、取得したデーターを決定文字数配列1の最初の位置に代入する。これで分岐4を終了する。暫定文字数配列の最初の位置に代入されたデーターが、マーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐5と仮称する。分岐5で暫定文字数配列の最初の位置に代入されたデーターが、マーク2で区切られていない場合は、配列のサイズを一個で配列を作成する。この配列を仮決定行数配列と仮称する。仮決定行数配列の最初の位置に決定文字数配列1の最初の位置に代入されたデーターを代入する。分岐5で暫定文字数配列の最初の位置に代入されたデーターが、マーク2で区切られている場合は、マーク2で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称する。決定文字数配列1の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列1の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て一つづつ仮決定行数配列に代入する。これで分岐5を終了する。仮決定行数文字数配列の配列を少ない順にソートする。決定文字数配列1の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおす。仮決定行数文字数配列に代入された全てのデーターを決定文字数配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初の位置から最後までの全てのデーターを一つづつ決定文字数配列1に代入する。
暫定文字数配列の最後の位置に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐6と仮称する。分岐6で暫定文字数配列の最後の位置に代入されたデーターが、マーク1で区切られていない場合は、決定文字数配列2の最初の位置に暫定文字数配列の最後の位置に代入されたデーターを代入する。分岐6で暫定文字数配列の最後の位置に代入されたデーターが、マーク1で区切られている場合は、暫定文字数配列の最後のデーターが、マーク1で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列3と仮称する。暫定文字数配列の最後の位置に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列3の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最後のデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ一時配列3に代入する。決定変数2のデーターを一時配列3に代入されたデーターの位置を示すインデックスとして使用して一時配列3のデーターを取得し、取得したデーターを決定文字数配列2の最初の位置に代入する。これで分岐6を終了する。暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐7と仮称する。分岐7で暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られていない場合は、配列のサイズを一個で作成する。この配列を仮決定行数配列と仮称する。仮決定行数配列の最初の位置に代入された位置に決定文字数配列2の最初の位置に代入されたデーターを代入する。分岐7で暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られている場合は、マーク2で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称する。決定文字数配列2の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列2の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て仮決定行数配列に一つづつ代入する。これで分岐7を終了する。仮決定行数文字数配列の配列を少ない順にソートする。決定文字数配列2の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおす。仮決定行数文字数配列に代入された全てのデーターを決定文字数配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初から最後までの全てのデーターを決定文字数配列2に一つづつ代入する。
ステップ106に進む。検索対象配列と同じサイズの配列を作成し、この配列を検索結果配列と仮称する。任意の文字を決定し、これをマーク3と仮称する。実施例では、「一致」という文字をマーク3とした。マーク3は、マーク1または、マーク2の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列1に代入されたデーターの全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のデーターを代入する位置を示すインデックスの位置にマーク3を代入する。決定文字数配列2に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列の位置を示すインデックスの位置にマーク3を代入する。検索結果配列の全てのデーターを検査する。検索結果配列を検査してマーク3があったら、検索結果配列の次の位置に代入されたデーターにマーク3があるかどうかを検査する。検索結果配列の次の位置に代入されたデーターにマーク3がある場合は、次の検査データーの位置を二つ進める。検索結果配列の次の位置に代入されたデーターにマーク3がない場合は、注目している配列のデーターのマーク3を削除して、次の検査データー位置を二つ進める。検索結果配列に代入されたデーターの全て検査し終わったら、図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューにある図符号Iの検索結果表示列に検索結果配列のデーターを全て表示して処理を終了する。図4の<図符号Dをチェックして機械語レベルでの検索を実行した結果を説明する図>を参照の事。図6の<実施例で使用した検索対象ファイルの内容図>で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示した図である。処理を終了すると図4の<図符号Dをチェックして機械語レベルでの検索を実行した結果を説明する図>のような状態で表示される。
次に、テスキストレベルの検索方法で検索対象ファイルまたは、検索対象配列を検索する場合を説明する事とする。ステップ100からステップ101までは、機械語レベルの検索方法の場合と同じである。
ステップ102で、図符号Qのマウスなどの入力デバイスを使用して図符号Eのテキストレベルの検索工程を指定するチェックボックスをクリックする事で選択して、図符号Kの検索実行ボタンを図符号Qのマウスなどの入力デバイスを使用してクリックする。ステップ102では、この部分以外は機械語レベルの検索方法の場合と全て同じである。
ステップ103に進む。テスキストレベルの検索方法の場合も機械語レベルの検索方法の場合もステップ103の内容は、全く同じである。
ステップ107に進む。検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列2と仮称する。検索対象配列のインデックスは、0から始まっているものとする。検索対象配列の偶数のインデックスに代入されているデーターを偶数に相当する左辺または、左辺に相当するデーターと呼んだり、奇数のインデックスに代入されているデーターを奇数に相当する右辺または、右辺に相当するデーターと呼んだりする事がある。検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、2文字を1文字とした文字列を作成して、検索対象配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、2文字を1文字とした文字列を1文字づつ検索対象配列2に代入する。検索対象配列2と同じサイズで配列を作成し、この配列をRL検索対象配列2と仮称する。検索対象配列に代入されている最初から最後までの全てのデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成する。このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成する。RL検索対象配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを全て一つづつRL検索対象配列2に代入する。以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと呼んだり、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと呼んだりする事がある。
配列を作成し、この配列を出現文字配列と仮称する。RL検索対象配列2に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを作成して、出現文字配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成したRL検索対象配列2に代入された最初から最後までの全てのデーターから全文字種を取得したデーターを全て一つづつ出現文字配列に代入する。出現文字配列に代入するデーターは、RL検索対象配列2に代入された全てのデーターを検査して重複したデーターを削除したものとする。重複したデーターを削除する方法は、段落〔0034〕の出現文字配列作成工程と同じである。段落〔0034〕の出現文字配列作成工程では、RL機械語配列に代入された全てのデーターから重複データーを削除したデーターを出現文字配列に代入しているが、ここでは、RL検索対象配列2に代入された全てのデーターから重複したデーターを削除したデーターを作成して、出現文字配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成したRL検索対象配列2に代入された全てのデーターから重複したデーターを削除したデーターを全て一つづつ出現文字配列に代入する。配列を作成し、この配列を右辺配列と仮称する。出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行う事で右辺配列を完成させる。この工程を右辺配列作成処理と仮称する。出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称する。出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入する。仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入する。右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了する。重複したデーターを削除したデーターの作成方法は、段落〔0034〕の出現文字配列作成工程と同じである。
右辺配列のサイズで配列を作成し、この配列を分類配列と仮称する。右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行う。この繰り返し処理を検査繰り返し処理と仮称する。右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入する。分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字として数値以外の任意の文字を選択してその文字を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入する。この数値以外の任意の文字をマーク1と仮称する。マーク1は、区切り文字として使用する。このマーク1の連結方法は、段落〔0035〕でのマーク1の使用方法と同じである。表現を変えて説明した。右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了する。また、マーク1とは別にもう一個、数値以外の任意の文字を選択してマーク2と仮称する。マーク2も、マーク1と同じく区切り文字として使用する。マーク1とマーク2とは、違う区切り文字を指定する。
分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列2または、検索対象配列2のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサイズで作成し、この配列を文字数配列と仮称する。以下の繰り返し処理を行う。この繰り返し処理を繰り返し処理3と仮称する。分類配列に代入されたデーター全てに対して繰り返し処理3を行う事で文字数配列に全てのデーターを代入して配列を完成させる処理を行う。繰り返し処理3では、分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐8と仮称する。分岐8の分類配列の最初の位置に代入されたデーターがマーク1で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列2に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列2のデーターの位置を示すインデックスが一つだけの場合はその位置を示すインデックスを取得して文字数配列の最初の位置に代入する。但し、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク2を既に記録してあるデーターと新たに見つけたRL検索対象配列2のインデックスとの間に区切り文字として入れて連結して代入する。分岐8の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割したデーター数分のサイズで配列を作成し、作成したこの配列を一時配列4と仮称する。分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割してマーク1を削除したデーターに加工したデーターを作成して、一時配列4の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割してマーク1を削除したデーターに加工したデーターを全て一つづつ一時配列4に代入する。変数を作成し、この変数を仮一時変数と仮称する。一時配列4に代入された全てのデーターに対して以下の繰り返し処理を行う。この繰り返し処理を一時配列4繰り返し処理と仮称する。一時配列4の最初の位置のデーターに対してRL検索対象配列2の全てのデーターを検査し、一時配列4の最初の位置のデーターとRL検索対象配列2に代入されたデーターが同じであった場合に、同じであったRL検索対象配列2のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列2のデーターの位置を示すインデックスを取得して、仮一時変数に代入する。但し、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク2を文字区切りとして連結して、新たに見つけたRL検索対象配列2のデーターの位置を示すインデックスを連結して仮一時変数に代入する。仮一時変数に代入するデーターが二個以上あるかどうかは、仮一時変数に代入するデーターを代入する度に代入した回数をカウントする事で判断させる事ができる。一時配列4の最初の位置のデーターに対してRL検索対象配列2の全てのデーターを検査し終わったら、一時配列4のデーターをひとつ検査し終わる度に区切り文字としてマーク1を仮一時変数に代入されたデーターに連結して次の一時配列4のデーターを検査する。一時配列4に代入されたデーター全てを検査し終わったら、一時配列4繰り返し処理を終了する。文字数配列の最初の位置に仮一時変数のデーターを代入する。これで分岐8を終了する。分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う。分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する。この手順で繰り返し処理3を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理3を終了する。
ステップ107に進む。変数を作成し、この変数を番号変数と仮称する。検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入する。検査配列に代入されたデーターの右辺に相当するデーターとは、検査配列の最後の位置に代入されたデーターの事である。変数を作成し、この変数を抽出変数と仮称する。番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用して分類配列のデーターを読み込んで、抽出変数に代入する。
配列を作成し、この配列を分離配列と仮称する。抽出変数に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐9と仮称する。分岐9で抽出変数に代入されたデーターがマーク1で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入する。分岐9で抽出変数に代入されたデーターがマーク1で区切られている場合は、抽出変数に代入されたデーターをマーク1で分割したデーター数を配列のサイズとして分離配列を作成しなおす。抽出変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ分離配列に代入する。これで分岐9を終了する。分離配列のデーターの中から検査配列の最初の位置に代入されたデーター(検査配列の最初の位置に代入されたデーターとは、左辺に相当するデーターの事である。)と同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得する。探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成する。この変数を決定変数と仮称する。決定変数に探し出して取得した分離配列の位置を示すインデックスを代入する。
変数を作成し、この変数を暫定文字数変数と仮称する。番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入する。配列を作成し、この配列を決定文字数配列と仮称する。変数を作成し、この変数を一時変数2と仮称する。暫定文字数変数に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐10と仮称する。分岐10で暫定文字数変数に代入されたデーターが、マーク1で区切られていない場合は、一時変数2に暫定文字数変数に代入されたデーターを代入する。分岐10で暫定文字数変数に代入されたデーターが、マーク1で区切られている場合は、暫定文字数変数に代入されたデーターをマーク1で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列5と仮称する。暫定文字数変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列5の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ一時配列5に代入する。決定変数に代入されたデーターを一時配列5に代入されたデーターの位置を示すインデックスとして使用して一時配列5のデーターを読み込んで一時変数2に代入する。これで分岐10を終了する。一時変数2に代入されたデーターが、マーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐11と仮称する。分岐11で一時変数2に代入されたデーターが、マーク2で区切られていない場合は、決定文字数配列の最初の位置に一時変数2に代入されたデーターを代入する。分岐11で一時変数2に代入されたデーターが、マーク2で区切られている場合は、一時変数2に代入されたデーターをマーク2で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数2に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数2に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入する。これで分岐11を終了する。決定文字数配列のデーターを少ない順番でソートする。
ステップ109に進む。全文字数配列のサイズを検索対象配列2のサイズと同じサイズに変更する。最初のデーターを1として全文字数配列のサイズ分までの通し番号を作成して、全文字数配列の最初の位置から最後までの位置に代入する度に一つづつ代入する位置をずらして、通し番号を一つづつ全文字数配列に代入する。図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューの図符号Cの文字数表示列に全文字数配列のデーターを一つづつ縦方向に表示しなおします。図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューの図符号Fの文字コード表示列の最初の行から検索対象配列2に代入された全てのデーターを代入する度に一つづつ代入する位置をずらして、一つづつ縦方向に表示しなおします。
配列を作成し、この配列を決定文字数配列2と仮称する。任意の文字を指定し、これをマーク3と仮称する。実施例では、「一致」という文字をマーク3とした。マーク3は、マーク1または、マーク2の区切り文字と同じであっても問題ない。また、全角半角問わない任意の文字を指定する事とする。決定文字数配列に代入された全てのデーターを決定文字数配列2のデーターの位置を示すインデックスとして使用してマーク3を決定文字数配列に代入する。図符号Mの図符号C列と図符号F列と図符号I列を持つリストビューの図符号Iの検索結果表示列に決定文字数配列2のデーターを表示して処理を終了する。図5の<図符号Eをチェックしてテキストレベルでの検索を実行した結果を説明する図>は、図6の<実施例で使用した検索対象ファイルの内容図>で示した内容のファイルを検索対象ファイルとして「い」というひらがな文字を検索させた結果を示したものである。処理を終了すると図5の<図符号Eをチェックしてテキストレベルでの検索を実行した結果を説明する図>のような状態で表示する。
本発明の2分割文字検索ソフトウェアのフローチャート図 本発明の2分割文字検索ソフトウェアの操作画面図 図符号Jのボタンをクリックした結果を説明する図 図符号Dをチェックして機械語レベルでの検索を実行した結果を説明する図 図符号Eをチェックしてテキストレベルでの検索を実行した結果を説明する図 実施例で使用した検索対象ファイルの内容図 本発明に使用した機材の説明図
A:人為的な手動による操作もしくは、入力
B:本発明のソフトウェアとコンピューターによる自動処理
C:文字数表示列
D:機械語レベル検索工程を指定するチェックボックス
E:テキストレベルの検索工程を指定するチェックボックス
F:文字コード表示列
G:指定した検索対象ファイルをフルパスで表示するテキストボックス
H:検索対象ファイルから検索する文字を入力するテキストボックス
I:検索結果表示列
J:ファイルを読み込むボタン
K:検索実行ボタン
L:参照ボタン
M:図符号C列と図符号F列と図符号I列を持つリストビュー
N:モニター
O:コンピューター本体
P:キーボード
Q:マウス

Claims (2)

  1. コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成する事とし、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、機械語には、0と1で構成されたいわゆる2進数と呼ばれる文字列に変換した2進数が4bitに満たない場合は、4bitに満たない分だけ後方に0を連結して合計で4bitになる様にしたような特殊な4bitの数値があるが、この機械語の事を特殊な4bitの数値と呼ぶ事とし、以下に、機械語を取得するとは、ASCIIコードの1文字分の機械語を取得するという事であり、ASCIIコードの1文字分の機械語を取得するという事は、前述の特殊な4bitの数値を1単位とした2単位分の合計8bitのデーターを1文字として取得するという事とし、以下に、機械語に変換すると説明している場合の処理工程は、データーから機械語の4bitを一単位とした前述の特殊な4bitの数値を取得して、4bitを1単位とし2単位の合計8bitのデーターを1文字として表し、前述の特殊な4bitの数値前述の特殊な4bitの数値の間に区切り文字としてスペースを挿入して作成したデーターを作成するという処理工程の事を言う事とし、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク1、マーク2と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、検索対象ファイルをバイナリー形式で全て読み込んだデーターを一つづつ検索対象配列に代入し、2文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が1文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列のコピー配列を作成し、このコピーした配列を検索対象配列2と仮称し、検索対象配列2の全データーを機械語に変換したデーターを代入する為の検索対象配列2のサイズと同じ配列サイズで配列を作成し、この配列を機械語配列と仮称し、検索対象配列2の最初から最後までの全データーを機械語に変換したデーターを作成して、機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして、作成した検索対象配列2の最初から最後までの全データーを機械語に変換したデーターを一つづつ機械語配列に代入し、機械語配列と同じサイズで配列を作成し、この配列をRL機械語配列と仮称し、機械語配列に代入された各データーを前述の特殊な4bitの数値の左辺と右辺とを逆転させ、前述の特殊な4bitの数値前述の特殊な4bitの数値の間には、区切り文字としてスペースを挿入したデーターを作成して、RL機械語配列の最初の位置から最後の位置まで代入する度に一つづつ代入する位置をずらして作成した前述の特殊な4bitの数値の左辺と右辺とを逆転させたデーターを一つづつRL機械語配列に代入し、配列を作成し、この配列を出現文字配列と仮称し、出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、ソート配列と仮称し、RL機械語配列に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートしてソートしたデーターをソート配列の最初の位置から代入する度に一つづつ順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称するが、基本的に、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現繰り返し処理では、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、この末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査するという処理をソート配列に代入された全てのデーターに対して繰り返し処理する事で出現繰り返し処理を終了し、出現繰り返し処理を終了したら、出現文字配列作成工程も終了し、出現文字配列の配列サイズと同じサイズで配列を作成し、この配列を右辺配列と仮称し、出現文字配列に代入された全てのデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列に代入された最初から最後までの全てのデーターの右辺に相当する4前述の特殊な4bitの数値を一つづつ右辺配列代入し、右辺を基準に分類する為に右辺配列と同じ配列サイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーター全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較して同じであった場合は、分類配列の最初の位置(末尾とも言える)にRL機械語配列に代入されたデーターを代入する。分類配列の最初の位置(末尾とも言える)に代入するRL機械語配列に代入されたデーターが2つ以上あった場合は、複数あるデーターとデーターの区切り文字としてマーク1を既にあったデーターに連結し、その後ろに新たに見つけ出したRL機械語配列に代入されたデーターを連結して分類配列の最初の位置(末尾とも言える)に代入し、右辺配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較し終わったら、右辺配列に代入された次のデーターとRL機械語配列に代入された全てのデーターの右辺に相当するデーターとを比較するという繰り返し処理を行うが、右辺配列に代入されたデーター全ての検査を終了する事で検査繰り返し処理を終了し、配列を分類配列のサイズで作成し、この配列を文字数配列と仮称し、文字数配列を作成する為に分類配列の最初のデーターから最後のデーターまで以下の処理を繰り返し行うが、の繰り返し処理を繰り返し処理1と仮称し、繰り返し処理1では、検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐1と仮称し、分岐1で検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られていない場合は、検査対象の分類配列の最初の位置に位置に代入されたデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列のデーターの位置を示すインデックスが一つだけの場合は同じであったRL機械語配列のデーターの位置を示すインデックスを取得して、文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、マーク2を区切り文字として使用して複数あるデーターとデーターの間に入れてRL機械語配列のインデックスを連結して文字数配列の最初の位置に代入し、分岐1の検査対象の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合は、検査対象の分類配列に代入されたデーターをマーク1で分割したデーターを代入する配列をマーク1で分割できる個数分のデーターを格納できる配列サイズで作成し、この配列を一時配列と仮称し、検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク1で分割してマーク1を削除した状態に加工したデーターを作成して、一時配列の最初の位置から代入する度に一づつ代入する位置をずらして、作成した検査対象の分類配列の最初の位置に代入されたデーターを、複数個にマーク1で分割してマーク1を削除した状態に加工したデーターを全て一つづつ一時配列に代入し、以下の処理を一時配列に代入されたデーター数分、繰り返し処理を行うが、この繰り返し処理を一時配列繰り返し処理と仮称し、一時配列に代入された最初のデーターとRL機械語配列に代入された全てのデーターとを比較し同じであった場合は、同じであったRL機械語配列に代入されたデーターの位置を示すインデックスが一つであった場合は同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを取得して文字数配列の最初のデーターとして代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切りマークとして、マーク2を複数あるデーターとデーターの間に入れて同じであったRL機械語配列に代入されたデーターの位置を示すインデックスを連結して文字数配列の最初の位置に代入し、一時配列のデーターをひとつ検査し終わる度に区切り文字としてマーク1を文字数配列の最初の位置に代入されたデーターに連結して次の一時配列のデーターを検査し、一時配列のデーターを全て検査し終わったら、一時配列繰り返し処理を終了し、これで分岐1を終了し、次に、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行うが、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理1を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理1を終了し、2個のサイズで配列を作成し、この配列を検査機械語配列と仮称し、検査配列に代入された2個のデーターの最初の位置のデーターを機械語に変換して検査機械語配列の最初の位置に代入し、検査配列に代入された最後の位置のデーターを機械語に変換して検査機械語配列の最後の位置に代入し、2個のサイズで配列をふたつ作成し、各々の配列を左機械語配列、右機械語配列と仮称し、検査機械語配列に代入した最初の位置に代入されたデーターの左辺に相当する前述の特殊な4bitの数値を取得して、左機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置に代入されたデーターの左辺に相当する前述の特殊な4bitの数値を取得して、左機械語配列の最後の位置に代入し、検査機械語配列に代入した最初の位置のデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右機械語配列の最初の位置に代入し、検査機械語配列に代入した最後の位置のデーターの右辺に相当する前述の特殊な4bitの数値を取得して、右機械語配列の最後の位置に代入し、2個のサイズで配列を作成し、この配列を番号配列と仮称し、右機械語配列に代入された最初の位置のデーターと右辺配列に代入された全てのデーターとを
    比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最初の位置にデーターとして代入し、右機械語配列に代入された最後の位置のデーターと右辺配列に代入された全てのデーターとを比較して同じデーターであった場合は、同じデーターであった右辺配列のデーターの位置を示すインデックスを番号配列の最後の位置にデーターとして代入し、2個のサイズで配列を作成し、この配列を抽出配列と仮称し、番号配列の最初の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最初の位置に代入し、番号配列の最後の位置に代入されたデーターを分類配列のインデックスとして使用して分類配列のデーターを読み込んで、抽出配列の最後の位置に代入し、抽出配列に代入されたふたつのデーターを処理する為に以下の処理を行うが、この抽出配列に代入された最初の位置に代入されたデーターに対する処理を第一処理と仮称し、抽出配列に代入された最後の位置に代入されたデーターに対する処理を第二処理と仮称し、この第一処理と第二処理では、抽出配列のデーターの中から左機械語配列と同じ左辺に相当する前述の特殊な4bitの数値と同じデーターを探し出すという処理を行う事とし、探し出した結果を代入する為の変数をふたつ作成し、各々の変数を決定変数1、決定変数2と仮称し、配列をふたつ作成し、この配列をそれぞれ分離配列1と分離配列2仮称し、分離配列1と分離配列2に代入されるデーター数が解らないので分離配列1と分離配列2のサイズは、必要だと思われる最低限度以上のサイズで配列を作成し、抽出配列に代入されている最初の位置と最後の位置に代入されている二つのデーターを検査して処理する事とし、第一処理では、抽出配列の最初の位置に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐2と仮称し、分岐2で抽出配列の最初の位置に代入されたデーターが、マーク1で区切られていない場合は、分離配列1の最初の位置に抽出配列の最初の位置に代入されたデーターを代入し、分岐2で抽出配列の最初の位置に代入されたデーターが、マーク1で区切られている場合は、抽出配列の最初の位置に代入されたデーターを区切り文字のマーク1で複数個に分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを作成して、分離配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最初の位置に代入されたデーターを区切り文字のマーク1で複数個に分割して、区切り文字のマーク1を削除した状態のデーターの全てを一つづつ分離配列1に代入し、これで分岐2を終了し、左機械語配列の最初の位置に代入されたデーターと分離配列1に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがあった場合は、同じものがあった分離配列1のデーターの位置を示すインデックスを取得し、決定変数1に取得したインデックスを代入し、左機械語配列の最初の位置に代入されたデーターと分離配列1に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがない場合は、何も行わない事とし、これで第一処理を終了し、次に第二処理を行う事とし、抽出配列の最後の位置に代入されたデーターが、マーク1で区切られていない場合とマーク1で区切られている場合とに分岐し、この分岐を分岐3と仮称し、分岐3で抽出配列の最後の位置に代入されたデーターが、マーク1で区切られていない場合は、分離配列2の最初の位置に抽出配列の最後の位置に代入されたデーターを代入し、分岐3で抽出配列の最後の位置に代入されたデーターが、マーク1で区切られている場合は、抽出配列の最後の位置に代入されたデーターを区切り文字のマーク1で複数個に分離分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを作成して、分離配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出配列の最後の位置に代入されたデーターを区切り文字のマーク1で複数個に分離分割して、区切り文字のマーク1を削除した状態のデーターに加工したデーターを全て一つづつ分離配列2に代入し、これで分岐3を終了し、左機械語配列の最後の位置に代入されたデーターと分離配列2に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがあった場合は、同じものがあった分離配列2のデーターの位置を示すインデックスを取得し、決定変数2に取得したインデックスを代入し、左機械語配列の最後の位置に代入されたデーターと分離配列2に代入された全てのデーターの左辺に相当する前述の特殊な4bitの数値を比較して同じものがない場合は、何も行わない事とし、これで、第二処理を終了し、2個のサイズで配列を作成し、この配列を暫定文字数配列と仮称し、番号配列に代入された最初の位置に代入されたデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最初の位置に代入し、番号配列に代入された最後の位置に代入されたデーターを文字数配列の位置を示すインデックスとして使用して文字数配列のデーターを取得して暫定文字数配列の最後の位置に代入し、ふたつの配列を作成し、このふたつの配列を各々、決定文字数配列1と決定文字数配列2と仮称し、決定文字数配列1と決定文字数配列2の両方ともに代入するデーター数が解らないので必要最低限と思われるサイズ以上の任意のサイズで配列を作成し、暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐4と仮称し、分岐4で暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られていない場合は、決定文字数配列1の最初の位置に暫定文字数配列の最初の位置に代入されたデーターを代入し、分岐4で暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られている場合は、暫定文字数配列の最初の位置に代入されたデーターが、マーク1で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列2と仮称し、暫定文字数配列の最初のデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最初のデーターをマーク1で複数個に分割して、マーク1を削除したデーターを全て一つづつ一時配列2代入し、決定変数1のデーターを一時配列2に代入されたデーターの位置を示すインデックスとして使用して一時配列2のインデックスの位置に代入されたデーターを取得し、取得したデーターを決定文字数配列1の最初の位置に代入し、これで分岐4を終了し、暫定文字数配列の最初の位置に代入されたデーターがマーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐5と仮称し、分岐5で暫定文字数配列の最初のデーターがマーク2で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列1の最初の位置に代入されたデーターを代入し、分岐5で暫定文字数配列の最初のデーターがマーク2で区切られている場合は、マーク2で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称し、決定文字数配列1の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列1の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て一つづつ仮決定行数配列に代入し、これで分岐5を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列1の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列1の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初の位置から最後までの全てのデーターを一つづつ決定文字数配列1に代入し、暫定文字数配列の最後のデーターがマーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐6と仮称し、分岐6で暫定文字数配列の最後の位置に代入されたデーターがマーク1で区切られていない場合は、決定文字数配列2の最初の位置に暫定文字数配列の最後の位置に代入されたデーターを代入し、分岐6で暫定文字数配列の最後の位置に代入されたデーターがマーク1で区切られている場合は、暫定文字数配列の最後の位置に代入されたデーターがマーク1で区切られているデーター数分のサイズで配列を作成し、この配列を一時配列3と仮称し、暫定文字数配列の最後の位置に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列3の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数配列の最後の位置に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ一時配列3に代入し、決定変数2のデーターを一時配列3に代入されたデーターの位置を示すインデックスとして使用して一時配列3のデーターを取得し、取得したデーターを決定文字数配列2の最初の位置に代入し、これで分岐6を終了し、暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐7と仮称し、分岐7で暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られていない場合は、配列のサイズを一個で作成し、この配列を仮決定行数配列と仮称し、仮決定行数配列の最初の位置に決定文字数配列2の最初の位置に代入されたデーターを代入し、分岐7で暫定文字数配列の最後の位置に代入されたデーターが、マーク2で区切られている場合は、マーク2で区切られているデーター数分のサイズで配列を作成し、この配列を仮決定行数配列と仮称し、決定文字数配列2の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、仮決定行数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した決定文字数配列2の最初の位置に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て仮決定行数配列に一つづつ代入し、これで分岐7を終了し、仮決定行数文字数配列の配列を少ない順にソートし、決定文字数配列2の配列サイズを仮決定行数文字数配列に代入されたデーター数と同じに作成しなおして、仮決定行数文字数配列に代入された全てのデーターを決定文字数配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、仮決定行数文字数配列に代入された最初から最後までの全てのデーターを決定文字数配列2に一つづつ代入し、検索対象配列と同じサイズの配列を作成し、この配列を検索結果配列と仮称し、全角半角問わない任意の文字を決定し、これをマーク3と仮称し、マーク3は、マーク1とマーク2の区切り文字と同じであっても良いものとし、決定文字数配列1に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のデーターを代入する位置を示すインデックスの位置にマーク3を代入し、決定文字数配列2に代入されたデーター全てを一つづつ検索結果配列に代入されたデーターの位置を示すインデックスとして使用して、検索結果配列のインデックスの位置にマーク3を代入し、検索結果配列の全てのデーターを検査し、検索結果配
    列を検査してマーク3があったら、検索結果配列の次の位置に代入されたデーターにマーク3があるかどうかを検査し、検索結果配列の次の位置に代入されたデーターにマーク3がある場合は、次の検査データー位置を二つ進めて、検索結果配列の次の位置に代入されたデーターにマーク3がない場合は、注目配列のデーターのマーク3を削除して、次の検査データー位置を二つ進めるという処理を行い、検索結果配列に代入されたデーターの全てを検査し終わらせる事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
  2. コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を機械語と仮称し、以下のソフトウェアで配列や変数を作成する場合は、コンピューター内部の本体メモリーと呼ばれる装置内に配列や変数を作成する事とし、コンピューター本体内部に在るハードディスクドライブなどの記録媒体に本発明のソフトウェアがインストールされているものとし、そのインストールされたソフトウェアに機械語で書かれた命令文がコンピューターのCPUによって処理される事によって、ソフトウェアの目的とする処理を実行するという事をコンピューター上で動作させると言う事し、区切り文字として半角または全角の種類を問わず、数値以外の任意の文字をふたつ選択して区切り文字として使用し、このふたつの区切り文字を各々、マーク1、マーク2と仮称し、検索対象ファイルをバイナリー形式で全て読み込んだ場合に必要となるサイズで配列を作成し、この作成した配列を検索対象配列と仮称し、検索対象ファイルをバイナリー形式で全て読み込んで、読み込んだデーターを検索対象配列の最初の位置から代入する度に一つづつ代入する位置をずらして、読み込んだデーターを一つづつ検索対象配列に代入し、検索対象配列の偶数のインデックスに代入されているデーターを、左辺に相当するデーターと仮称し、奇数のインデックスに代入されているデーターを、右辺に相当するデーターと仮称し、2文字代入できるサイズで配列を作成し、この作成した配列を検査配列と仮称し、検索文字が1文字だけ記録されているテキストファイルをバイナリー形式で読み込んで、検査配列の最初の位置と最後の位置に代入し、検索対象配列の半分のサイズで配列を作成し、この配列を検索対象配列2と仮称し、検索対象配列のインデックスは、0から始まっているものとし、検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、2文字を1文字とした文字列を作成して、検索対象配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した検索対象配列の偶数のインデックスに代入されているデーターと奇数のインデックスに代入されているデーターを区切り文字としてスペースを使用して連結して、2文字を1文字とした文字列を1文字づつ検索対象配列に代入し、検索対象配列2と同じサイズで配列を作成し、この配列をRL検索対象配列2と仮称し、検索対象配列に代入されているデーターを、区切り文字のスペースで区切られた左側のデーターと右側のデーターを入れ替えたデーターを作成するが、このデーターを作成する時、左側の文字と右側の文字とを区切る為の区切り文字のスペースは、そのまま残した文字列を作成し、作成した左右が逆転し、スペースで区切られた1文字の文字をRL検索対象配列2の最初の位置から代入する度に一つづつ代入する位置をずらして、一つづつ全てRL検索対象配列2に代入し、以降、区切り文字の左側の8bitのASCIIコードのデーターの事を右辺に相当するデーターと仮称し、区切り文字の右側の8bitのASCIIコードのデーターの事を左辺に相当するデーターと仮称し、配列を作成し、この配列を出現文字配列と仮称し、RL検索対象配列2に代入されたデーター全てからRL検索対象配列2に代入されたデーターに出現する全文字種を取得して出現文字配列に代入するが、出現文字配列に代入するデーターを全て作成して出現文字配列の最初の位置から最後の位置までに一つづつデーターを代入する処理工程を出現文字配列作成工程と仮称し、出現文字配列作成工程での処理は、配列を作成し、この配列を仮称、ソート配列とし、RL検索対象配列2に代入された全てのデーターを昇順降順を問わず、どちらの方法でも良いのでソートし、ソートしたデーターをソート配列の最初の位置から代入する度に一つづつ代入する位置をずらして、順番通りに全てソート配列に代入し、ソート配列に代入された最初のデーターだけを出現文字配列の最初の位置に代入し、出現検査データーと仮称し、この出現検査データーは、常に出現文字配列に代入された最後のデーターを出現検査データーと呼ぶ事とし、このソート配列に対して以下の繰り返し処理を行うが、この繰り返し処理を出現繰り返し処理と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合と違うデーターであった場合とに分岐し、この分岐を出現検査分岐と仮称し、出現検査データーとソート配列に代入された次のデーターとを比較して同じデーターであった場合は、何もしないでソート配列に代入された次のデーターと出現検査データーとを比較検査し、出現検査データーとソート配列に代入された次のデーターとを比較して違うデーターであった場合は、出現文字配列に代入する次のデーターとしてソート配列に代入された違うデーターであった次のデーターを出現文字配列の末尾に代入し、ここで出現検査分岐を終了し、出現文字配列の末尾に代入したデーターを次の出現検査データーとし、ソート配列に代入された次のデーターを検査し、この処理をソート配列に代入された全てのデーターに対して繰り返し処理する事でRL検索対象配列2に代入された全てのデーターの中から、RL検索対象配列2に代入されたデーターに出現する全文字種を取得して出現文字配列に代入し、ソート配列に代入された全てのデーターに対して出現繰り返し処理を行ったら出現繰り返し処理を終了し、出現文字配列作成工程も終了し、配列を作成し、この配列を右辺配列と仮称し、出現文字配列の最初の位置に代入されたデーターから最後の位置に代入されたデーターまでの全てに以下の処理を行事で右辺配列を完成させるが、この工程を右辺配列作成処理と仮称し、出現文字配列の配列サイズと同じサイズで配列を作成し、仮右辺配列と仮称し、出現文字配列の右辺に相当するデーターを取得して、仮右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、取得した出現文字配列の右辺に相当するデーターを全て一つづつ仮右辺配列に代入し、仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを作成し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て一つづつ右辺配列に代入し、右辺配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した仮右辺配列に代入された全てのデーターを調べて重複したデーターを削除したデーターを全て右辺配列に代入し終わったら、右辺配列作成処理を終了するが、重複したデーターを削除したデーターの作成方法は、出現文字配列作成工程と同じ方法で行う事とし、右辺配列のサイズで配列を作成し、この配列を分類配列と仮称し、右辺配列に代入されたデーターの全てに対して以下の繰り返し処理を行うが、この繰り返し処理を検査繰り返し処理と仮称し、右辺配列に代入された最初の位置に代入されたデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し、同じであった場合は、分類配列の末尾に出現文字配列に代入された同じであったデーターを代入し、分類配列の同じ位置に代入されるデーターが複数ある場合は、区切り文字としてマーク1を複数あるデーターとデーターの間に入れてデーターを連結して分類配列の末尾に代入し、右辺配列に代入された最初のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査し終わったら、右辺配列に代入された次のデーターと出現文字配列に代入された全てのデーターの右辺に相当するデーターとを比較検査するという繰り返し処理を行う事で、右辺配列に代入されたデーターの全てに対してこの繰り返し処理を行って、この検査繰り返し処理を終了し、分類配列に代入された左辺と右辺を逆転させたデーターがRL検索対象配列2または、検索対象配列2のどのインデックスの配列に代入されているかを記録する配列を分類配列のサイズと同じサイズで作成し、この配列を文字数配列と仮称し、以下の繰り返し処理を行うが、この繰り返し処理を繰り返し処理3と仮称し、繰り返し処理3では、分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐8と仮称し、分岐8の分類配列の最初の位置に代入されたデーターがマーク1で区切られていない場合は、分類配列の最初の位置のデーターとRL検索対象配列2に代入された全てのデーターとを比較してデーターが同じであった場合は、同じであったRL検索対象配列2のデーターの位置を示すインデックスが一つだけの場合は同じであったRL検索対象配列2のデーターの位置を示すインデックスを取得して文字数配列の最初の位置に代入するが、文字数配列の最初の位置に代入するデーターが二つ以上ある場合は、区切り文字として、マーク2を既に記録してあるデーターと新たに見つけたRL検索対象配列2のインデックスとの間に入れて連結して代入し、分岐8の分類配列の最初の位置に代入されたデーターがマーク1で区切られている場合は、分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割したデーター数分のサイズで配列を作成し、この配列を一時配列4と仮称し、分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割してマーク1を削除したデーターに加工したデーターを作成して、一時配列4の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した分類配列の最初の位置に代入されたデーターをマーク1で複数個に分割してマーク1を削除したデーターに加工したデーターを全て一つづつ一時配列4に代入し、変数を作成し、この変数を仮一時変数と仮称し、一時配列4に代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を一時配列4繰り返し処理と仮称し、一時配列4の最初の位置のデーターに対してRL検索対象配列2の全てのデーターを検査し、一時配列4の最初の位置のデーターとRL検索対象配列2に代入されたデーターが同じであった場合に、同じであったRL検索対象配列2のデーターの位置を示すインデックスが一つであった場合はデーターが同じであったRL検索対象配列2のデーターの位置を示すインデックスを取得して、仮一時変数に代入するが、仮一時変数に代入するデーターが二個以上の場合は、仮一時変数に代入されたデーターにマーク2を文字区切りとして連結して、新たに見つけたRL検索対象配列2のデーターが代入されている位置を示すインデックスを取得して、その取得したデーターを連結して仮一時変数に代入し、一時配列4の最初の位置のデーターに対してRL検索対象配列2の全てのデーターを検査し終わったら、一時配列4のデーターをひとつ検査し終わる度に区切り文字としてマーク1を仮一時変数に代入されたデーターに連結して次の一時配列4のデーターを検査する事とし、一時配列4に代入されたデーター全てを検査し終わったら、一時配列4繰り返し処理を終了し、文字数配列の最初の位置に仮一時変数のデーターを代入し、これで分岐8を終了し、分類配列の最初の位置に代入されたデーターの次のデーターの処理を行う事とし、分類配列の最初の位置に代入されたデーターの次のデーター以降の処理を行う場合は、文字数配列の末尾に処理結果を代入する事とし、この手順で繰り返し処理3を分類配列に代入されたデーター全てに行い終わったら、繰り返し処理3を終了し、変数を作成し、この変数を番号変数と仮称し、検査配列に代入されたデーターの右辺に相当するデーターと同じデーターを右辺配列に代入された全てのデーターから探し出して、探し出した右辺配列に代入されたデーターの位置を示すインデックスを取得して番号変数に代入し、変数を作成し、この変数を抽出変数と仮称し、番号変数に代入されたデーターを分類配列に代入されたデーターの位置を示すインデックスとして使用
    して分類配列のデーターを読み込んで、抽出変数に代入し、配列を作成し、この配列を分離配列と仮称し、抽出変数に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐9と仮称し、分岐9で抽出変数に代入されたデーターがマーク1で区切られていない場合は、分離配列の最初の位置に抽出変数に代入されたデーターを代入し、分岐9で抽出変数に代入されたデーターがマーク1で区切られている場合は、抽出変数に代入されたデーターをマーク1で分割したデーター数を配列のサイズとして分離配列を作成しなおして、抽出変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、分離配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した抽出変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ分離配列に代入し、これで分岐9を終了し、分離配列のデーターの中から検査配列の最初の位置に代入されたデーターと同じデーターを探し出し、同じデーターが格納された分離配列の位置を示すインデックスを取得し、探し出して取得した分離配列の位置を示すインデックスを代入する為の変数を作成し、この変数を決定変数と仮称し、決定変数に探し出して取得した分離配列の位置を示すインデックスを代入し、変数を作成し、この変数を暫定文字数変数と仮称し、番号変数のデーターを文字数配列に代入されたデーターの位置を示すインデックスとして使用して文字数配列のデーターを読み込んで暫定文字数変数に代入し、配列を作成し、この配列を決定文字数配列と仮称し、変数を作成し、この変数を一時変数2と仮称し、暫定文字数変数に代入されたデーターが、マーク1で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐10と仮称し、分岐10で暫定文字数変数に代入されたデーターが、マーク1で区切られていない場合は、一時変数2に暫定文字数変数に代入されたデーターを代入し、分岐10で暫定文字数変数に代入されたデーターが、マーク1で区切られている場合は、暫定文字数変数に代入されたデーターをマーク1で分割したデーター数を配列のサイズとして配列を作成し、この配列を一時配列5と仮称し、暫定文字数変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを作成して、一時配列5の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した暫定文字数変数に代入されたデーターをマーク1で複数個に分割して、マーク1を削除したデーターに加工したデーターを全て一つづつ一時配列5に代入し、決定変数に代入されたデーターを一時配列5に代入されたデーターの位置を示すインデックスとして使用して一時配列5のデーターを読み込んで一時変数2に代入し、これで分岐10を終了し、一時変数2に代入されたデーターが、マーク2で区切られている場合と区切られていない場合とに分岐し、この分岐を分岐11と仮称し、分岐11で一時変数2に代入されたデーターが、マーク2で区切られていない場合は、決定文字数配列の最初の位置に一時変数2に代入されたデーターを代入し、分岐11で一時変数2に代入されたデーターが、マーク2で区切られている場合は、マーク2で分割したデーター数を配列サイズとして決定文字数配列を作成して、一時変数2に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを作成して、決定文字数配列の最初の位置から代入する度に一つづつ代入する位置をずらして、作成した一時変数2に代入されたデーターをマーク2で複数個に分割して、マーク2を削除したデーターに加工したデーターを全て一つづつ決定文字数配列に代入し、これで分岐11を終了し、決定文字数配列のデーターを少ない順番でソートし、配列を作成し、この配列を決定文字数配列2と仮称し、全角半角問わない任意の文字を指定し、これをマーク3と仮称し、マーク3は、マーク1または、マーク2の区切り文字と同じであっても良いものとし、決定文字数配列に代入された全てのデーターを決定文字数配列2のデーターの位置を示すインデックスとして使用してマーク3を決定文字数配列に代入する事で検索対象ファイルまたは、検索対象配列に代入されたデーターから、検査配列に代入された検索文字を探し出すという事を行わせるコンピューター上で動作するソフトウェア
JP2011127790A 2011-06-08 2011-06-08 2分割文字検索ソフトウェア Expired - Fee Related JP4944266B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011127790A JP4944266B1 (ja) 2011-06-08 2011-06-08 2分割文字検索ソフトウェア

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011127790A JP4944266B1 (ja) 2011-06-08 2011-06-08 2分割文字検索ソフトウェア

Publications (2)

Publication Number Publication Date
JP4944266B1 true JP4944266B1 (ja) 2012-05-30
JP2012256135A JP2012256135A (ja) 2012-12-27

Family

ID=46395373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011127790A Expired - Fee Related JP4944266B1 (ja) 2011-06-08 2011-06-08 2分割文字検索ソフトウェア

Country Status (1)

Country Link
JP (1) JP4944266B1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049645A (ja) * 2000-08-02 2002-02-15 Nec Soft Ltd ハッシュ値算出方法、ハッシュ値算出装置、検索方法、検索装置、記録媒体
JP2009535747A (ja) * 2006-05-02 2009-10-01 エクセジー・インコーポレイテツド 近似パターン合致の方法および装置
WO2010005665A1 (en) * 2008-06-16 2010-01-14 Qualcomm Incorporated Method and apparatus for generating hash mnemonics

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002049645A (ja) * 2000-08-02 2002-02-15 Nec Soft Ltd ハッシュ値算出方法、ハッシュ値算出装置、検索方法、検索装置、記録媒体
JP2009535747A (ja) * 2006-05-02 2009-10-01 エクセジー・インコーポレイテツド 近似パターン合致の方法および装置
WO2010005665A1 (en) * 2008-06-16 2010-01-14 Qualcomm Incorporated Method and apparatus for generating hash mnemonics

Also Published As

Publication number Publication date
JP2012256135A (ja) 2012-12-27

Similar Documents

Publication Publication Date Title
US7814111B2 (en) Detection of patterns in data records
US10360294B2 (en) Methods and systems for efficient and accurate text extraction from unstructured documents
US8332410B2 (en) Bit string merge sort device, method, and program
US8533203B2 (en) Identifying synonyms of entities using a document collection
US8190613B2 (en) System, method and program for creating index for database
US6738957B2 (en) Schematic organization tool
JP2003044267A (ja) データソート方法、データソート装置およびデータソートプログラム
CN111680506A (zh) 数据库表的外键映射方法、装置、电子设备和存储介质
KR101379128B1 (ko) 사전 생성 장치, 사전 생성 방법 및 사전 생성 프로그램을 기억하는 컴퓨터 판독 가능 기록 매체
CN114153496B (zh) 一种基于区块链的高速可并行代码相似度对比方法和系统
JP6343081B1 (ja) 符号符号分類検索ソフトウェアを記録した記録媒体
JP2693914B2 (ja) 検索システム
JP4944266B1 (ja) 2分割文字検索ソフトウェア
JP6355514B2 (ja) ファイル分割システム及び方法
CN114327607A (zh) 一种bs代码自动生成方法
CN1226692C (zh) 基于语义语言的机器翻译系统及方法
Kasthuri et al. An improved rule based iterative affix stripping stemmer for Tamil language using K-mean clustering
JPWO2020157887A1 (ja) 文構造ベクトル化装置、文構造ベクトル化方法、及び文構造ベクトル化プログラム
JPH08221254A (ja) マージソート方法及びマージソート装置
Díaz-Domínguez An index for sequencing reads based on the colored de Bruijn graph
JP6347023B1 (ja) コード自動記述2ソフトウェアを記録した記録媒体
JP6318327B1 (ja) コード自動記述ソフトウェアを記録した記録媒体
JP6096970B1 (ja) マルメ圧縮ソフトウェアを記録した記録媒体
JP2009181524A (ja) 文書検索システム及び文書検索方法
CN117931275A (zh) 基于机器学习的代码合并冲突自动消解方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

R154 Certificate of patent or utility model (reissue)

Free format text: JAPANESE INTERMEDIATE CODE: R154

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees