(57)【要約】      （修正有）【課題】ハフマン符号器による符号化を行わずに、圧縮ファイルを作成するコンピューターソフトウェアを提供する。【解決手段】データーを詰め込む為の詰め込み枠の部分と詰め込み枠に何文字代入したかを記録する為のフッター部というものと詰め込み枠に１文字分の文字列しか入れられなかった場合の終了位置を表す終端文字というものとの組み合わせでファイルを圧縮する。【選択図】図１
2014027573.tif 000002
【特許請求の範囲】
【請求項１】
以下に、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、以下に、配列の末尾にデーターを代入すると記述している場合があるが、配列の最初の位置に代入する場合でも配列の末尾に代入するという記述をする事があるとし、以下の分岐処理に於いて分岐条件に該当しない場合どうするかを記述していない場合があるが、分岐条件に該当しない場合どうするかを記述していない場合は、何も処理を行わないという事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、ASCIIコード２文字で１文字を表す全角文字とASCIIコード１文字で表す半角文字のこと）をテキスト文字と呼んだり、テキスト文字の事を文字コードまたは、文字と呼んだりする事があるとし、また、２進数の数値を２進数と呼んだり、１０進数の数値を１０進数と略して呼ぶ事がある事とし、データーを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに配列に代入する事とし、以下に、配列の型とは、配列に代入する事ができる１個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数を意味するものであり、変数にも同じく型があるが、変数の型も配列の型と全く同じであるとし、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う事とし、string型で配列や変数を作成して、作成したstring型の配列や変数に文字列や文字を代入すると自動的に文字コードに変換されて配列や変数に代入されるものであるが、この様なstring型の配列や変数の事を文字列を代入する事が出来る配列や変数と表現する事とし、文字列を代入する事が出来る配列を作成する場合は、「何bitのstring型で幾つのサイズで配列を作成する」という表現で配列を作成する事とし、文字列を代入する事が出来る変数を作成する場合は、「何byteまたは、何bitのstring型で変数を作成する」という表現をする事とし、string型ではない配列を作成する場合は、「何bitの型で幾つのサイズで配列を作成する」という表現をする事とし、string型ではない変数を作成する場合は、「何bitの型で変数を作成する」という表現で変数を作成する事とし、以下に、配列番号とは、配列に代入されるデーターの位置を示す番号の事を言うという事とし、配列のデーターを代入できる領域の最初の位置に付けられる番号は、0番となり、順次１づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付されるものとし、以下に、65535byteまでのテキスト文字列が書かれたファイルだけを対象に圧縮ファイルを作成する事ができるものとし、圧縮ファイルを作成する為の圧縮対象ファイルと呼ぶ事とし、以下の処理で圧縮対象ファイルを圧縮する工程を行う事とするが、圧縮対象ファイルを圧縮する工程を圧縮工程と呼ぶ事とし、圧縮工程での規則として詰め込み枠は、8bitで作成し、フッター部は、4bitで作成し、終端文字は、8bitで作成する事とし、この規則で以下の処理を進めて圧縮ファイルを作成する事とし、圧縮対象ファイルを1byteの型で1byteづつ読み込むのに必要なサイズの配列を作成し、作成した配列を圧縮対象配列と呼ぶ事とし、圧縮対象ファイルをバイナリー形式で開いて1byteづつデーターを読み込んで、読み込んだ数値データーを圧縮対象配列の最初の位置から1byteづつ圧縮対象配列の最後の位置までに代入する度に1byte分づつ代入する位置をずらして代入し、3byteのstring型で２５６個のサイズで配列を作成し、作成した配列を仮全文字種配列と呼ぶ事とし、仮全文字種配列にデーターを代入する工程を行うが、仮全文字種配列データー代入処理と呼ぶ事とし、仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較して仮全文字種配列データー代入処理を行う事とするが、仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査する仮全文字種配列の配列番号の事を仮全文字種配列の注目配列番号と呼ぶ事とし、仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して、仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の最初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入し、仮全文字種配列の注目配列番号の示す位置に圧縮対象配列のデーターを代入したら、仮全文字種配列の注目配列番号を一つずらして次の仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の最初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入するという処理を繰り返して仮全文字種配列の最初の位置に相当する配列番号から最後の位置に相当する配列番号までの全ての注目配列番号を検査処理する事で仮全文字種配列データー代入処理を終了し、仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーター数をカウントし、カウントした数値を全数１と呼ぶ事とし、3byteのstring型で全数１のサイズで配列を作成して、作成した配列を出現文字配列と呼ぶ事とし、出現文字配列の最初の位置から最後の位置までにデーターを代入する処理を出現文字配列データー代入処理と呼ぶ事とし、仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーターを全て抽出して出現文字配列の最初の位置から最後の位置までに抽出したデーターを代入する度に3byte分づつずらして3byte分づつ代入し、抽出したデーターを代入し終わったら、出現文字配列データー代入処理を終了し、1byteの型で全数１のサイズで配列を作成し、作成した配列を出現回数配列と呼ぶ事とし、出現文字配列の最初の位置から最後の位置までに代入された各々のデーターが圧縮対象配列で何回使われているかという回数を代入する事とするが、この出現回数配列の最初の位置から最後の位置までに��ーターを代入する処理を出現回数処理と呼ぶ事とし、出現回数処理では、出現文字配列に代入された全てのデーターごとに、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、カウントした回数を出現回数配列の最初の位置から最後の位置までに代入する度に代入する位置を1byte分づつずらして1byte分づつ代入するという処理を行う事とするが、検査している出現文字配列に代入されたデーターを出現文字配列の注目配列と呼び、出現文字配列の注目配列と同じ位置の出現回数配列の位置を出現回数配列の注目配列と呼ぶ事とし、出現文字配列の注目配列のデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入し、出現回数配列の注目配列にカウントした回数を代入し終わったら、出現文字配列の注目配列の位置を一つずらして次の配列位置に代入されているデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入するという処理を繰り返して行い、出現文字配列の最初の位置から最後の位置に代入されたデーターを検査処理し終わったら、出現回数処理を終了する事とし、出現回数配列の最初の位置から最後の位置までに代入された全てのデーターを基に出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを出現頻度が多い順にソートし、ソートする事で出現頻度が多い順にソートされた出現文字配列が作られる事になるが、1byteの型で出現文字配列のサイズで配列を作成し、作成した配列を文字出現頻度順文字配列と呼ぶ事とし、文字出現頻度順文字配列の最初の位置から最後の位置までに、出現頻度が多い順にソートされた出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを3byteづつ取得して1byteで表現される数値データーに変換して、代入する度に1byteづつずらして代入し、1byteの型で出現文字配列または、出現回数配列または、文字出現頻度順文字配列と同じサイズで配列を作成し、作成した配列をBit暗号配列と呼ぶ事とし、0から文字出現頻度順文字配列のサイズから1を引き算した数値を最大値として、最初の位置に0が割り当てられて順次数値が1づつ増加する順番で割り当てる事になるようにBit暗号文字配列の末尾に0から代入して代入する度に1づつ代入する数値を増加させて、代入する位置を1byte分ずらして増加させた数値データーを代入し、Bit暗号配列の最初の位置から最後の位置までに代入された全てのデーターの個々の数値をBit暗号と呼ぶ事とし、Bit暗号文字配列の最初の位置から最後の位置までに数値を代入する工程をBit暗号化行程と呼ぶ事とし、これで、Bit暗号化行程を終了する事とし、終端文字を選択する工程を行う事とするが、この工程を終端算出処理工程と呼ぶ事とし、終端算出処理工程では、以下の処理を行う事とし、3byteのstring型で２５６個のサイズで配列を作成し、この作成した配列をソート過程配列と呼ぶ事とし、ソート過程配列の最初の位置から最後の位置までにデーターを代入する処��を行う事とし、以下にソート過程配列の最初の位置から最後の位置までの配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して更に検査結果に応じて処理を行うという処理を行うが、検査中のソート過程配列の配列番号を注目配列番号と呼ぶ事とし、注目配列番号の１個に対して文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い、文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い終わったら、次の注目配列番号に検査対象をずらす事で次の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行うという処理を繰り返して行う事で、ソート過程配列の最初の位置から最後の位置まで文字出現頻度順文字配列に代入されている全データーと比較検査処理を行うものとし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に、同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入し、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査している注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、次の注目配列番号の検査処理は、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入し、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査して
いる注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行うという処理をソート過程配列の最初の位置から最後の位置までの全ての位置に代入されたデーターに対して繰り返して処理を行う事でソート過程配列の最初の位置から最後の位置までにデーターを代入する処理を終了し、ソート過程配列の中から終端文字に使える文字があるかどうかを検査する工程を終端検査繰り返し処理と呼ぶ事とし、終端検査繰り返し処理では、以下の処理を行う事とし、1byteの型で終端変数を作成し、検査結果を代入する為の1byteの型で変数を作成して、作成した変数を終端検査変数と呼ぶ事とし、ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号を探し出して、探し出した配列番号の中から最も配列番号が255に近い数値（255を含む）の配列番号を探し出して、その配列数値を終端文字の文字コードとし、終端変数に代入し、終端検査変数に0という数値を代入して終端検査繰り返し処理を終了し、ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号が存在しなかった場合は、終端検査変数に1という数値を代入して終端検査繰り返し処理を終了し、終端検査変数に代入されている数値が１の場合と0の場合とに分岐し、この分岐を終端文字決定分岐と呼ぶ事とし、終端文字決定分岐で終端検査変数に代入されている数値が１の場合は、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの中から、最も出現頻度が少ない文字コードを抽出して、抽出した文字コードを終端文字として決定して数値として終端変数に代入し、終端検査変数に代入されている数値が0の場合は、既に終端文字が終端検査繰り返し処理で決定されて、終端変数に代入されているので何も行わない事とし、終端文字決定分岐を終了し、8byteのstring型で変数を作成して、作成した変数をYKM終端変数と呼ぶ事とし、終端変数に代入された数値を半角の0と1の文字列で表現された２進数に変換して、変換した文字列の２進数を逆順に並べ替えてYKM終端変数に代入し、YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁の場合は、何も行わないが、YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁に満たない場合は、YKM終端変数に代入した文字列で出来た２進数の最後に8桁に満たない分だけ下桁に半角の0という文字を連結した文字列を作成して、YKM終端変数に上書きで代入し、終端算出処理工程を終了し、Bit暗号を使用して圧縮対象ファイルから読み込んだ全てのデーターを暗号化する工程を行うが、この工程をBit暗号YKMライン作成工程と呼ぶ事とし、Bit暗号YKMライン作成工程では、以下の処理を行う事とし、1byteの型で圧縮対象配列のサイズで配列を作成して、作成した配列をBit配列と呼ぶ事とし、Bit配列の最初の位置から最後の位置までの全ての位置にデーターを代入する工程を行うが、この工程をBit暗号ライン作成工程と呼ぶ事とし、Bit暗号ライン作成工程では以下の処理を行う事とし、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査するが、比較検査する際の圧縮対象配列に代入されているデーターの位置を圧縮対象配列の注目配列と仮称する事とし、圧縮対象配列の注目配列に代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入し、次に、圧縮対象配列の注目配列を一つずらして次の圧縮対象配列の注目配列とする事で次の注目配列のデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入するという処理を行うという繰り返し処理によって、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して、Bit配列の最初の位置から最後の位置までのデーターを全て代入し終わったら、Bit暗号ライン作成工程を終了し、8byteのstring型でBit配列のサイズで配列を作成し、作成した配列をBit暗号YKMライン配列と呼ぶ事とし、Bit配列の最初の位置から最後の位置までに代入された全てのデーターを配列に代入されている順番どおりに半角の0と1という文字列で表現した２進数に変換して、２進数に変換した文字列で出来た数値を全て逆順に並べ替えてBit暗号YKMライン配列の最初の位置から最後の位置までにBit配列に代入されているデーターの順番通りに代入し、これで、Bit暗号YKMライン作成工程を終了し、詰め込み枠とフッター部と終端変数の値を代入する為の配列を作成するが、この配列を詰込フッター配列と呼ぶ事とし、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターを詰め込み枠とフッター部と終端文字という形のデーター構成に作成しなおした場合に必要になるデーター数を全数２と呼ぶ事とし、詰込フッター配列は、8byteのstring型で全数２のサイズで配列を作成し、1byteの型で変数を２個作成し、作成した２個���変数を各々、先読み桁数１変数、先読み桁数２変数と呼ぶ事とし、1byteの型で変数を１個作成し、作成した変数を検査変数と呼ぶ事とし、1byteの型で変数を３個作成し、作成した３個の変数を各々第１変数、第２変数、第３変数と呼ぶ事とし、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を詰込フッター文字列作成工程と呼ぶ事とし、ここを詰込フッター文字列作成工程の開始点と呼ぶ事とし、先読み桁数１変数と先読み桁数２変数と検査変数と第１変数と第２変数と第３変数の６個の変数に0という数値を代入する事で初期化し、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の処理を行うが、処理を行うBit暗号YKMライン配列に代入されているデーターの位置をBit暗号YKMライン配列の注目配列と言う事とし、Bit暗号YKMライン配列の注目配列の位置が最後の位置を越えていないかどうかを検査して、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えている場合は、詰込フッター文字列作成工程を終了する事とし、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えていない場合は、以下の詰込フッター文字列作成工程の処理を行う事とし、先読み桁数１変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入し、Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来るかどうかを検査して、Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合とBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合とその他の場合に分岐し、この分岐を最後分岐と呼ぶ事とし、最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合は、Bit暗号YKMライン配列の注目配列を一つ進める事とし、先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入し、先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入したら、Bit暗号YKMライン配列の注目配列の位置を一つ戻すという処理を行う事とし、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合と違う場合とその他の場合に分岐し、この分岐を先読み桁数分岐と呼ぶ事とし、先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合は、検査変数に１を代入し、先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して違う場合は、検査変数に0を代入し、先読み桁数分岐でその他の場合は、有りえないので何も行わない事とし、これで先読み桁数分岐を終了し、最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程を終了する事とし、最後分岐でその他の場合は、有りえないので何も行わない事とし、ここで、最後分岐を終了し、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合と、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合とその他の場合に分岐し、この分岐を桁数分岐と呼ぶ事とし、桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐し、この分岐を連続１分岐と呼ぶ事とし、連続１分岐で検査変数に代入された数値が1の場合は、1byteの型で変数を作成し、作成した変数をカウント１変数と呼ぶ事とし、Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウントした事によって得られた数値を連続していた回数（文字列の個数）として代入し、同じ文字数の文字列が幾つ連続しているかによって分岐し、２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐し、この分岐をカウント１分岐と呼ぶ事とし、カウント１分岐で２文字のみ同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMラ
イン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進めて、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント１分岐で３文字以上同じ文字数の文字列が連続している場合は、先読み桁数１変数に代入されている数値が3または4である場合と先読み桁数１変数に代入されている数値が2以下の数値である場合とその他の場合に分岐し、この分岐を個数分岐と呼ぶ事とし、個数分岐で先読み桁数１変数に代入されている数値が3または4である場合は、カウント１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ以下の処理を繰り返す事とし、この繰り返し処理を２文字書込処理と呼ぶ事とし、２文字書込処理では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、ここまでの処理をカウ��ト１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ処理を繰り返したら、２文字書込処理を終了し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、個数分岐で先読み桁数１変数に代入されている数値が2以下の数値である場合は、以下の処理を行う事とし、カウント１変数に代入されている数値に先読み桁数１変数に代入されている数値を掛け算して得た数値を第１変数に代入し、第１変数に代入された数値を8で割り算を行って得た数値の小数点以下を切り捨てた数値を第２変数に代入し、第２変数に代入された数値が1以下の場合と2以上の場合とその他の場合に分岐し、この分岐をループ代入分岐と呼ぶ事とし、ループ代入分岐で第２変数に代入された数値が1以下の場合は、カウント１変数に代入されている数値を第３変数に代入し、8byteのstring型で変数を作成して、作成した変数を連結１変数と呼ぶ事とし、第３変数に代入された数値分以下の処理を繰り返すが、この繰り返し処理を連結文字列作成１工程と呼ぶ事とし、連結文字列作成１工程では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結１変数に代入するが、連結１変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入し、ここまでの処理を第３変数に代入された数値分繰り返したら、連結文字列作成１工程を終了し、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結１変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合に分岐し、この分岐をループ代入フッター１分岐と呼ぶ事とし、ループ代入フッター１分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を１文字連続Ａ分岐と呼ぶ事とし、１文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する事とし、１文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで１文字連続Ａ分岐を終了し、ループ代入フッター１分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を２文字連続Ａ分岐と呼ぶ事とし、２文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する事とし、２文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、２文字連続Ａ分
岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、２文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで２文字連続Ａ分岐を終了し、ループ代入フッター１分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入フッター１分岐を終了し、ループ代入分岐で第２変数に代入された数値が2以上の場合は、カウント１変数に代入されている数値を第２変数に代入されている数値で割り算して得た数値の小数点以下を切り捨てた数値を第３変数に代入し、以下の繰り返し処理を回数ループ代入処理工程と呼ぶ事し、回数ループ代入処理工程では、以下の処理を第２変数に代入された数値分だけ繰り返し処理を行う事とし、8byteのstring型で変数を作成して、作成した変数を連結２変数と呼ぶ事とし、第３変数に代入された数値分だけ以下の処理を繰り返す事とし、この繰り返し処理を連結文字列作成２工程と呼ぶ事とし、連結文字列作成２工程では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結２変数に代入するが、連結２変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入し、ここまでの処理を第３変数に代入された数値分だけ繰り返したら、連結文字列作成２工程を終了し、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結２変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合とに分岐し、この分岐をループ代入フッター２分岐と呼ぶ事とし、ループ代入フッター２分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を１文字連続Ｂ分岐と呼ぶ事とし、１文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する事とし、１文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成し��文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで１文字連続Ｂ分岐を終了し、ループ代入フッター２分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を２文字連続Ｂ分岐と呼ぶ事とし、２文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する事とし、２文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、２文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、２文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないの��何も行わない事とし、ここで２文字連続Ｂ分岐を終了し、ここまでの処理を回数ループ代入処理工程と呼ぶが、この回数ループ代入処理工程は、第２変数に代入された数値分だけ繰り返し処理を行ったら、回数ループ代入処理工程を終了する事とし、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、ループ代入フッター２分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入フッター２分岐を終了し、ループ代入分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入分岐を終了し、個数分岐でその他の場合は、有りえないので何も行わない事とし、ここで個数分岐を終了し、カウント１分岐でその他の場合は、有りえないので何も行わない事とし、ここでカウント１分岐を終了し、連続１分岐で検査変数に代入された数値が0の場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結して文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、ここで連続１分岐を終了して、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、連続１分岐でその他の場合は、有りえないので何も行わない事
とし、ここで、連続１分岐を終了し、桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐し、この分岐を連続２分岐と呼ぶ事とし、連続２分岐で検査変数に代入された数値が1の場合は、以下の処理を行う事とし、1byteの型で変数を作成し、作成した変数をカウント２変数と呼ぶ事とし、Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウント２変数にカウントした事によって得られた数値を連続していた回数（文字列の個数）として代入し、同じ文字数の文字列が幾つ連続しているかによって分岐し、２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐する事とし、この分岐をカウント２分岐と呼ぶ事とし、カウント２分岐で２文字のみ同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント２分岐で３文字以上同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライ��配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、カウント２変数に代入されている数値から１を引き算して得た数値分だけ以下の処理を繰り返す事とし、この繰り返し処理をカウント繰返処理と呼ぶ事とし、カウント繰返処理では、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進めるという処理をカウント２変数に代入されている数値から１を引き算して得た数値分だけ処理を繰り返し終わったら、カウント繰返処理を終了し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント２分岐でその他の場合は、有りえないので何もしない事とし、ここで、カウント２分岐を終了し、連続２分岐で検査変数に代入された数値が0の場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の文字数を調べて8文字（桁）の場合は、そのまま詰込フッター配列に代入し、調べた文字数が8文字に満たない場合は、8文字（桁）になる様にBit暗号YKMライン配列の注目配列の位置に代入されている文字列の下桁に半角の0という文字を8文字に満たない分だけ連結して文字列を作成して、作成した文字列を詰込フッター配列の末尾に代入し、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、連続２分岐でその他の場合は、有りえないはずなので何も処理を行わない事とし、ここで連続２分岐を終了し、桁数分岐でその他の場合は、有りえないはずなので何も処理を行わない事とし、ここで桁数分岐を終了し、ここまでの処理をBit暗号YKMライン配列の最初の位置に代入されたデーターから最後の位置までに代入されたデーター全てに対して行い終わったら、詰込フッター文字列作成工程を終了し、詰込フッター文字列作成工程で詰込フッター配列の最初の位置から最後の位置までにデーターを代入したが、詰込フッター配列の最初の位置から最後の位置までにデーター全てを代入出来るサイズ（文字数）でstring型の変数を作成し、この変数を全データー文字列変数と呼ぶ事とし、全データー文字列変数に詰込フッター配列の最初の位置から最後の位置までにデーター全てを連結した文字列を作成して代入し、全データー文字列変数に代入されている文字列の文字数をカウントする事とし、カウントした数値が8以下の場合とカウントした数値が9以上の場合とその他の場合に分岐し、この分岐を数値化前分岐と呼ぶ事とし、数値化前分岐でカウントした数値が8以下の場合は、有りえないので何も行わない事とし、数値化前分岐でカウントした数値が9以上の場合は、カウントした数値を8で割り算して余りがある場合とカウントした数値を8で割り算して余りがない場合とその他の場合に分岐し、この分岐をカウント余り分岐と呼ぶ事とし、カウント余り分岐でカウントした数値を8で割り算して余りがある場合は、以下の処理を行う事とし、1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とし、カウントした数値を8で割り算して余りを整数値に計算しなおして、8から整数値に計算しなおした数値を減算して得た数値を調整変数に代入し、調整変数に代入された数値分、0という文字列を連結した文字列を作成して、全データー文字列変数に代入された文字列の末尾に作成した文字列を連結し、8byteのstring型でカウントした数値を8で割り算した数値の小数点以下を切り上げた数値のサイズで配列を作成し、この配列を数値化前文字列配列と呼ぶ事とし、数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とし、カウント余り分岐でカウントした数値を8で割り算して余りがない場合は、以下の処理を行う事とし、1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とし、調整変数に0という数値を代入し、8byteのstring型でカウントした数値を8で割り算した数値のサイズで配列を作成し、この配列を数値化前文字列配列と呼ぶ事とし、数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とし、カウント余り分岐でその他の場合は、有りえないので何も行わない事とし、ここでカウント余り分岐を終了し、数値化前分岐でその他の場合は、有りえないので何も行わない事とし、ここで数値化前分岐を終了し、1byteの型で数値化前文字列配列のサイズの配列を作成し、作成した配列を数値化配列と呼ぶ事とし、数値化前文字列配列の最初の位置から最後の位置までに代入された文字列の２進数を8byteづつ取得して１０進数の数値に変換して、変換した数値を数値化配列の末尾に1byteづつ代入する事で、数値化配列の最後の位置まで代入処理を行う事とし、ヘッダー部を作成する事とし、ヘッダー部の作成記録順番として以下のデーターを記述順番で作成記録する事とし、各データーの後に記述している個数は、記録する為に必要とする配列サイズを示すものとし、ヘッダー部のサイズを記録する為に２個と調整変数の値を代入する為に１個と圧縮対象ファイルのファイルサイズを記録する為に２個と文字出現頻度順文字配列のサイズを記録する為に１個と文字出現頻度順文字配列のサイズ分の個数と終端文字を記録する為に１個の合計を算出して、算出した数値をヘッダー数と呼ぶ事とし、1byteの型でヘッダー数のサイズで配列を作成し、作成した配列をヘッダー配列と呼ぶ事とし、ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を行う事とし、ヘッダー部のサイズを2byteの分割された数値にする為に、数値配列作成処理工程にヘッダー部のサイズに相当するヘッダー数を送る事とし、数値配列作成処理工程では、送られて来た数値を処理して配列に代入するという処理を行うものとし、16byteのstring型で変数を作成して、作成した変数を１６バイト変数と仮称し、送られて来た１０進数の「65535」までの数値を文字コードの半角文字の0と1で表現された２進数の数値に変換して、作成した文字列の２進数の文字数（桁数）が16文字（桁）の場合は、そのまま１６バイト変数に代入し、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない場合は、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない分だけ、作成した文字列の２進数の左側に0という文字を連結した文字列を作成して１６バイト変数に代入し、１６バイト変数に代入された半角の0と1で表現された２進数の先頭から8byte分と後方の8byte分との二つに分割し、分割した文字コードの半角文字の0と1で表現された２進数の文字列の先頭から8byte分を先頭8と仮称し、後方の8byte分を後方8と仮称し、1byteの型で２個の配列サイズで配列を作成して、作成した配列を数値配列と仮称し、数値配列の最初のデーターを代入する事が出来る位置に先頭8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列の最後のデーターを代入する事が出来る位置に後方8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列に代入できる２個の数値を代入し終わったところで数値配列作成処理工程を終了し、数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入し、ヘッダー配列の末尾に調整変数に代入された数値を代入し、圧縮対象配列のサイズを取得して、取得した数値を数値配列作成処理工程に送る事とし、数値配列作成処理工程では、送られて来た数値を処理して配列に代入するという処理を行うものとし、16byteのstring型で変数を作成
して、作成した変数を１６バイト変数と仮称し、送られて来た１０進数の「65535」までの数値を文字コードの半角文字の0と1で表現された２進数の数値に変換して、作成した文字列の２進数の文字数（桁数）が16文字（桁）の場合は、そのまま１６バイト変数に代入し、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない場合は、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない分だけ、作成した文字列の２進数の左側に0という文字を連結した文字列を作成して１６バイト変数に代入し、１６バイト変数に代入された半角の0と1で表現された２進数の先頭から8byte分と後方の8byte分との二つに分割し、分割した文字コードの半角文字の0と1で表現された２進数の文字列の先頭から8byte分を先頭8と仮称し、後方の8byte分を後方8と仮称し、1byteの型で２個の配列サイズで配列を作成して、作成した配列を数値配列と仮称し、数値配列の最初のデーターを代入する事が出来る位置に先頭8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列の最後のデーターを代入する事が出来る位置に後方8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列に代入できる２個の数値を代入し終わったところで数値配列作成処理工程を終了し、数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入し、ヘッダー配列の末尾に文字出現頻度順文字配列のサイズを取得して代入し、文字出現頻度順文字配列の最初の位置から最後の位置に代入された全てのデーターを1byteづつ取得して、ヘッダー配列の末尾に1byteづつ代入し、次に、ヘッダー配列の末尾に終端変数に代入されている終端文字のデーターを代入し、これで、ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を終了し、バイナリー形式でファイルを作成して、作成したファイルに、ヘッダー配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込んで、全てのデーターを書き込み終わったら、次に、数値化配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込む事で圧縮ファイルの作成をする処理を行うプログラムを記録したコンピューターが読み取る事が可能な記録媒体
【請求項２】
以下に、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、以下に、配列の末尾にデーターを代入すると記述している場合があるが、配列の最初の位置に代入する場合でも配列の末尾に代入するという記述をする事があるとし、以下の分岐処理に於いて分岐条件に該当しない場合どうするかを記述していない場合があるが、分岐条件に該当しない場合どうするかを記述していない場合は、何も処理を行わないという事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、ASCIIコード２文字で１文字を表す全角文字とASCIIコード１文字で表す半角文字のこと）をテキスト文字と呼んだり、テキスト文字の事を文字コードまたは、文字と呼んだりする事があるとし、また、２進数の数値を２進数と呼んだり、１０進数の数値を１０進数と略して呼ぶ事がある事とし、データーを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに配列に代入する事とし、以下に、配列の型とは、配列に代入する事ができる１個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数を意味するものであり、変数にも同じく型があるが、変数の型も配列の型と全く同じであるとし、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う事とし、string型で配列や変数を作成して、作成したstring型の配列や変数に文字列や文字を代入すると自動的に文字コードに変換されて配列や変数に代入されるものであるが、この様なstring型の配列や変数の事を文字列を代入する事が出来る配列や変数と表現する事とし、文字列を代入する事が出来る配列を作成する場合は、「何bitのstring型で幾つのサイズで配列を作成する」という表現で配列を作成する事とし、文字列を代入する事が出来る変数を作成する場合は、「何byteまたは、何bitのstring型で変数を作成する」という表現をする事とし、string型ではない配列を作成する場合は、「何bitの型で幾つのサイズで配列を作成する」という表現をする事とし、string型ではない変数を作成する場合は、「何bitの型で変数を作成する」という表現で変数を作成する事とし、以下に、配列番号とは、配列に代入されるデーターの位置を示す番号の事を言うという事とし、配列のデーターを代入できる領域の最初の位置に付けられる番号は、0番となり、順次１づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付されるものとし、〔請求項１〕で作成した圧縮ファイルを圧縮されていない元のファイルの状態に戻す工程の事を復元工程と呼ぶ事とし、復元工程で作成するファイルを復元ファイルと呼ぶ事とし、圧縮ファイルを１byteづつ読み込む為に1byteの型で圧縮ファイルを１byteづつ読み込む事が出来るサイズで配列を作成し、作成した配列をＤ圧縮データー配列と呼ぶ事とし、圧縮ファイルを１byteづつ読み込んでＤ圧縮データー配列の最初の位置から最後の位置までに1byteづつ代入する度に代入する位置をずらして代入し、1byteの型で２個のサイ��の配列を作成し、この作成した配列をＤ作業用配列と呼ぶ事とし、Ｄ作業用配列の末尾にＤ圧縮データー配列の最初の位置に代入されたデーターと２番目に代入されたデーターを順番に1byteづつ代入し、16bitの型で変数を作成し、この作成した変数をＤヘッダーサイズ変数と呼ぶ事とし、データーを代入したＤ作業用配列を１６bit数値復元工程に送る事とし、１６bit数値復元工程では、送られて来た２個の1byteのデーターが代入された配列を受け取って、受け取ったデーターを代入する為に1byteの型で２個のサイズで配列を作成し、作成した配列をＤ数値配列と呼ぶ事とし、送られて来た２個の1byteのデーターが代入された配列のデーターを作成したＤ数値配列の最初の位置と最後の位置に1byteづつデーターを代入し、8byteの型で変数を２個作成し、作成した変数を各々、Ｄ先頭８変数、Ｄ後方８変数と呼ぶ事とし、Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ先頭８変数に代入し、Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ先頭８変数に代入し、Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ後方８変数に代入し、Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ後方８変数に代入し、16byteの型で変数を作成して、Ｄ１６バイト変数と呼ぶ事とし、Ｄ１６バイト変数に、Ｄ先頭８変数に代入されたデーターとＤ後方８変数に代入されたデーターを連結した文字列を作成して代入し、16bitの型で変数を作成して、作成した変数をＤ１６ビット変数と呼ぶ事とし、Ｄ１６バイト変数に代入された文字コードの半角文字の0と1で構成された２進数を１０進数の数値に変換する事で元の16bitの２進数に戻し、元の16bitの２進数に戻した数値をＤ１６ビット変数に代入し、ここまでで１６bit数値復元工程を終了する事とし、１６bit数値復元工程が終了したら、Ｄ１６ビット変数に代入された数値をＤヘッダーサイズ変数に代入し、1byteの型で変数を作成し、作成した変数をＤ調整変数と呼ぶ事とし、Ｄ調整変数にＤ圧縮データー配列の３番目の位置に代入された数値を代入し、Ｄ圧縮データー配列の４番目の位置に代入された数値とＤ圧縮データー配列の５番目の位置に代入された数値をＤ作業用配列の末尾に順番通りに1byteづつ上書きで代入し、16bitの型で変数を作成し、作成した変数をＤファイルサイズ変数と呼ぶ事とし、データーを代入したＤ作業用配列を１６bit数値復元工程に送る事とし、１６bit数値復元工程では、送られて来た２個の1byteのデーターが代入された配列を受け取って、受け取ったデーターを代入する為に1byteの型で２個のサイズで配列を作成し��作成した配列をＤ数値配列と呼ぶ事とし、送られて来た２個の1byteのデーターが代入された配列のデーターを作成したＤ数値配列の最初の位置と最後の位置に1byteづつデーターを代入し、8byteの型で変数を２個作成し、作成した変数を各々、Ｄ先頭８変数、Ｄ後方８変数と呼ぶ事とし、Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ先頭８変数に代入し、Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ先頭８変数に代入し、Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ後方８変数に代入し、Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ後方８変数に代入し、16byteの型で変数を作成して、Ｄ１６バイト変数と呼ぶ事とし、Ｄ１６バイト変数に、Ｄ先頭８変数に代入されたデーターとＤ後方８変数に代入されたデーターを連結した文字列を作成して代入し、16bitの型で変数を作成して、作成した変数をＤ１６ビット変数と呼ぶ事とし、Ｄ１６バイト変数に代入された文字コードの半角文字の0と1で構成された２進数を１０進数の数値に変換する事で元の16bitの２進数に戻し、元の16bitの２進数に戻した数値をＤ１６ビット変数に代入し、ここまでで１６bit数値復元工程を終了する事とし、１６bit数値復元工程が終了したら、Ｄ１６ビット変数に代入された数値をＤファイルサイズ変数に代入し、1byteの型で変数を作成し、作成した変数をＤBit暗号サイズ変数と呼ぶ事とし、ＤBit暗号サイズ変数にＤ圧縮データー配列の６番目の位置に代入された数値を代入し、1byteの型でＤBit暗号サイズ変数に代入された数値で配列を作成して、作成した配列をＤ文字出現頻度順文字配列と呼ぶ事とし、Ｄ文字出現頻度順文字配列の末尾に、Ｄ圧縮データー配列の７番目からＤBit暗号サイズ変数に代入された数値までの個数分の1byteのデーターを1byteづつ代入し、1byteの型でＤBit暗号サイズ変数に代入された数値をサイズとして配列を作成し、作成した配列をＤBit暗号配列と呼ぶ事とし、ＤBit暗号文字配列に、0からＤBit暗号サイズ変数に代入された数値から1を引き算した数値を最大値として、最初の位置に0が割り当てられて順次数値が1づつ増加する順番で割り当てる事になるようにＤBit暗号文字配列の末尾に0から代入して代入する度に1づつ代入する数値を増加させて代入する位置を1byte分ずらして増加させた数値データーを代入し、ＤBit暗号文字配列に代入した1個のデーターをＤBit暗号と呼ぶ事とし、1byteの型で変数を作成し、作成した変数をＤ終端変数と呼ぶ事とし、Ｄ圧縮データー配列のＤBit暗号サイズ変数に代入された数値に8を足し算して得た数値の位置のデーターを取���してＤ終端変数に代入し、Ｄ圧縮データー配列のサイズからＤヘッダーサイズ変数に代入された数値を引き算した数値を求めて、引き算して求めた数値をＤサイズ数と呼ぶ事として、1byteの型でＤサイズ数のサイズで配列を作成して、作成した配列をＤ数値化配列と呼ぶ事とし、Ｄ圧縮データー配列のＤヘッダーサイズ変数に代入された数値の位置から最後の位置までに代入されたデーターを1byteづつＤ数値化配列の末尾に代入し、8byteのstring型で変数を作成し、作成した変数をＤ終端YKM変数と呼ぶ事とし、Ｄ終端変数を半角文字の0と1で構成された２進数の文字列に変換してＤ終端YKM変数に代入し、Ｄ終端YKM変数に代入された文字列を逆順に並べ替えた文字列を作成して、Ｄ終端YKM変数に上書きで代入し、Ｄ終端YKM変数に代入された文字列の文字数（桁数）を調べて8文字の場合は、何も行わない事とし、Ｄ終端YKM変数に代入された文字列の文字数（桁数）を調べて8文字に満たない場合は、8文字（桁）になる様に文字列の下桁に半角の0という文字を8文字に満たない分だけ連結して文字列を作成して、作成した文字列をＤ終端YKM変数に上書きで代入する事とし、8byteのstring型でＤ数値化配列のサイズで配列を作成し、作成した配列をＤ数値化前文字列配列と呼ぶ事とし、Ｄ数値化配列の最初の位置から最後の位置までに代入された全ての数値を半角文字の0と1で構成された２進数の文字列に変換してＤ数値化前文字列配列の末尾に代入し、Ｄ数値化前文字列配列の最初から最後までに代入された全ての文字列を検査して、8文字数（桁数）に満たない文字列があったら、文字列の左側に8文字数（桁数）に満たない分だけ0という文字を連結した文字列を作成して、Ｄ数値化前文字列配列の8文字数（桁数）に満たない文字列あった位置に上書きで代入する事とし、Ｄ調整変数に代入された数値が0である場合と0より大きい値の場合とその他の場合とに分岐し、この分岐をＤ調整分岐と呼ぶ事とし、Ｄ調整分岐でＤ調整変数に代入された数値が0である場合は、何も行わない事とし、Ｄ調整分岐でＤ調整変数に代入された数値が0より大きい値の場合は、Ｄ数値化前文字列配列の最後の位置に代入された文字列の下桁にある文字列をＤ調整変数に代入された数値分だけ削除する事とし、Ｄ調整分岐でその他の場合は、何も行わない事とし
、ここまででＤ調整分岐を終了し、Ｄ数値化前文字列配列の最初の位置から最後の位置までに代入された全てのデーターを連結した文字列を代入できるサイズのstring型で変数を作成し、作成した変数をＤ全データー文字列変数と呼ぶ事とし、Ｄ全データー文字列変数にＤ数値化前文字列配列の最初の位置から最後の位置までに代入された全てのデーターを連結した文字列を作成して代入し、8byteのstring型でＤファイルサイズ変数に代入された数値をサイズとして配列を作成し、作成した配列をＤ詰込フッター配列と呼ぶ事とし、1byteの型で変数を２個作成し、作成した各々の変数をＤ区切変数、Ｄカウント変数と呼ぶ事とし、8byteのstring型で変数を作成し、作成した変数をＤ詰め込み枠変数と呼ぶ事とし、8byteのstring型で変数を作成し、作成した変数をＤ作業用変数と呼ぶ事とし、4byteのstring型で変数を作成し、この変数をＤフッター読込変数と呼ぶ事とし、Ｄ詰込フッター配列の最初の位置から最後の位置までにデーターを代入処理するが、このＤ詰込フッター配列の最初の位置から最後の位置までにデーターを代入処理する工程をＤ詰込フッター作成処理工程と呼ぶ事とし、Ｄ詰込フッター作成処理工程では以下の繰り返し処理を行う事とし、ここをＤ詰込フッター作成処理工程の開始点とし、Ｄ区切変数に99を代入して初期化し、Ｄカウント変数に0を代入して初期化し、Ｄ作業用変数に空白文字を代入して初期化し、Ｄ詰め込み枠変数に空白文字を代入して初期化し、Ｄフッター読込変数に空白文字を代入して初期化し、Ｄ全データー文字列変数に代入された文字列を先頭位置から8文字数分読み込んでＤ詰め込み枠変数に代入し、続いて4文字分を読み込んでＤフッター読込変数に代入するという処理をＤ全データー文字列変数に代入された文字列の最後の位置まで行うので、読み込んだ位置をＤ全データー文字列変数の注目位置と呼ぶ事とし、Ｄ全データー文字列変数の注目位置を進める場合は、Ｄ全データー文字列変数の注目位置を8byteまたは4byte進めるという表現で説明を行う事とし、Ｄ全データー文字列変数に代入されている文字列の最後の位置まで注目位置をずらす事で、Ｄ全データー文字列変数に代入されている文字列の最後の位置に相当する文字まで処理を終了したら、このＤ詰込フッター作成処理工程を終了する事とし、Ｄ全データー文字列変数に代入された文字列の注目位置から8byte分の文字列を読み込んで、Ｄ詰め込み枠変数に代入し、注目位置を4byte進める事とし、Ｄ全データー文字列変数に代入された文字列の注目位置から4byte分の文字列を読み込んで、Ｄフッター読込変数に代入し、Ｄフッター読込変数に代入された文字列の下桁に0がある場合と下桁が1である場合とその他の場合に分岐し、この分岐をＤ0検査分岐と呼ぶ事とし、Ｄ0検査分岐でＤフッター読込変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を削除する事とし、但し、Ｄフッター読込変数に代入された文字列の全が0の場合は、必ず１個0を削除せずに残した文字列を作成して、作成した文字列をＤフッター読込変数に上書きで代入する事とし、Ｄ0検査分岐でＤフッター読込変数に代入された文字列の下桁が1である場合は、何も行わない事とし、Ｄ0検査分岐でその他の場合は、有りえないので何も行わない事とし、これでＤ0検査分岐を終了し、Ｄフッター読込変数に代入された文字列を全て逆順に並べた文字列を作成して、作成した文字列を１０進数の数値に変換して、変換した数値をＤ区切変数に代入し、Ｄ区切変数に代入された数値が1以上7以下の場合とＤ区切変数に代入された数値が8以上13以下の場合とＤ区切変数に代入された数値が14または15の場合とＤ区切変数に代入に代入された数値が0の場合とその他の場合に分岐し、この分岐をＤ区切分岐と呼ぶ事とし、Ｄ区切分岐でＤ区切変数に代入された数値が1以上7以下の場合は、Ｄ詰め込み枠変数に代入された文字列をＤ区切変数に代入された数値で切り分けて、切り分けた前方の文字列をＤ作業用変数に代入し、Ｄ文字列加工処理を行う事とし、以下の処理をＤ文字列加工処理と呼ぶ事とし、ここをＤ文字列加工処理の開始点とし、Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐し、この分岐をＤ作業分岐と呼ぶ事とし、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を全て削除する事とし、但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とし、この処理で作成した文字列をＤ作業用変数に上書きで代入し、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない事とし、Ｄ作業分岐でその他の場合は、有りえないので何もしない事とし、これでＤ作業分岐を終了し、Ｄ文字列加工処理を終了する事とし、Ｄ詰込フッター配列の末尾にＤ作業用変数に代入された文字列を代入し、Ｄ詰め込み枠変数に代入された文字列をＤ区切変数に代入された数値で切り分けて、切り分けた後方の文字列をＤ作業用変数に代入し、Ｄ文字列加工処理を行う事とし、以下の処理をＤ文字列加工処理と呼ぶ事とし、ここをＤ文字列加工処理の開始点とし、Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐し、この分岐をＤ作業分岐と呼ぶ事とし、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を全て削除する事とし、但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とし、この処理で作成した文字列をＤ作業用変数に上書きで代入し、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない事とし、Ｄ作業分岐でその他の場合は、有りえないので何もしない事とし、これでＤ作業分岐を終了し、Ｄ文字列加工処理を終了する事とし、Ｄ詰込フッター配列の末尾にＤ作業用変数に代入された文字列を代入し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切分岐でＤ区切変数に代入された数値が8以上13以下の場合は、Ｄ区切変数に代入された数値が8の場合と9の場合と10の場合と11の場合と12の場合と13の場合とその他の場合に分岐し、この分岐をＤ区切Ａ分岐と呼ぶ事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が8の場合は、１桁の文字が３文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から３文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が9の場合は、１桁の文字が４文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から４文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が10の場合は、１桁の文字が５文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から５文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が11の場合は、１桁の文字が６文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から６文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が12の場合は、１桁の文字が７文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から７文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でＤ区切変数に代入された数値が13の場合は、１桁の文字が８文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から８文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ａ分岐でその他の場合は、有りえないので何も行わない事とし、これでＤ区切Ａ分岐を終了し、Ｄ区切分岐でＤ区切変数に���入された数値が14または15の場合は、Ｄ区切変数に代入された数値が14の場合と15の場合とその他の場合に分岐し、この分岐をＤ区切Ｂ分岐と呼ぶ事とし、Ｄ区切Ｂ分岐でＤ区切変数に代入された数値が14の場合は、２桁の文字が３文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を2byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を2byteづつずらして読み込んでＤ詰込フッター配列の末尾に2byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から６文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ｂ分岐でＤ区切変数に代入された数値が15の場合は、２桁の文字が４文字の場合であるが、Ｄ詰め込み枠変数に代入された文字列を2byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を2byteづつずらして読み込んでＤ詰込フッター配列の末尾に2byteづつ代入し、この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から８文字分行ったら、この処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ区切Ｂ分岐でその他の場合は、有りえないので何も行わない事とし、これでＤ区切Ｂ分岐を終了し、Ｄ区切分岐でＤ区切変数に代入された数値が0の場合は、詰め込み枠に１文字のみ代入している場合の開始点である事を意味している場合であるので、最後の位置に終端文字が記録されているので終端文字まで文字が幾つ在るかをカウントする事とし、カウントするには、以下の繰り返し処理を行うが、この繰り返し処理をＤ連続カウント処理と呼ぶ事とし、Ｄ連続カウント処理では、一回検査する度に、Ｄ全データー文字列変数の注目位置を8byteづつずらして読み込んで、読み込んだ文字列をＤ作業用変数に代入し、Ｄ文字列加工処理を行う事とし、以下の処理をＤ文字列加工処理と呼ぶ事とし、ここをＤ文字列加工処理の開始点とし、Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐し、この分岐をＤ作業分岐と呼ぶ事とし、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁
にある全ての0を全て削除する事とし、但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とし、この処理で作成した文字列をＤ作業用変数に上書きで代入し、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない事とし、Ｄ作業分岐でその他の場合は、有りえないので何もしない事とし、これでＤ作業分岐を終了し、Ｄ文字列加工処理を終了する事とし、Ｄ作業用変数に代入された文字列とＤ終端YKM変数に代入された文字列を比較して同じ文字列でない場合にカウントするという処理をＤ作業用変数に代入された文字列とＤ終端YKM変数に代入された文字列が同じ文字列だと確認できるまでこの繰り返し処理を行う事とし、Ｄ連続カウント処理が終了したら、Ｄカウント変数にカウントした数値を代入し、Ｄ連続カウント処理でずらした注目位置を元の位置に戻す事とし、Ｄカウント変数に代入された数値が0の場合と1以上の場合とその他の場合に分岐し、この分岐をＤ連続分岐と呼ぶ事とし、Ｄ連続分岐でＤカウント変数に代入された数値が1以上の場合は、文字が連続している場合であるが、Ｄ作業用変数にＤ詰め込み枠変数に代入された文字列を代入し、Ｄ文字列加工処理を行う事とし、以下の処理をＤ文字列加工処理と呼ぶ事とし、ここをＤ文字列加工処理の開始点とし、Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐し、この分岐をＤ作業分岐と呼ぶ事とし、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を全て削除する事とし、但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とし、この処理で作成した文字列をＤ作業用変数に上書きで代入し、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない事とし、Ｄ作業分岐でその他の場合は、有りえないので何もしない事とし、これでＤ作業分岐を終了し、Ｄ文字列加工処理を終了する事とし、Ｄ作業用変数に代入された文字列をＤ詰込フッター配列の末尾に代入し、Ｄカウント変数に代入された数値分以下の処理を繰り返し行う事とし、この繰り返し処理をＤ連続代入処理と呼ぶ事とし、Ｄ連続代入処理では、Ｄ全データー文字列変数の注目位置のデーターを取得して、Ｄ作業用変数に代入し、Ｄ文字列加工処理を行う事とし、以下の処理をＤ文字列加工処理と呼ぶ事とし、ここをＤ文字列加工処理の開始点とし、Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐し、この分岐をＤ作業分岐と呼ぶ事とし、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を全て削除する事とし、但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とし、この処理で作成した文字列をＤ作業用変数に上書きで代入し、Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない事とし、Ｄ作業分岐でその他の場合は、有りえないので何もしない事とし、これでＤ作業分岐を終了し、Ｄ文字列加工処理を終了する事とし、Ｄ作業用変数に代入された文字列をＤ詰込フッター配列の末尾に代入し、Ｄ全データー文字列変数の注目位置を8byte進める事���し、ここまでの処理をＤカウント変数に代入された数値分繰り返して処理を行ったら、Ｄ連続代入処理を終了し、Ｄ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う事とし、Ｄ連続分岐でその他の場合は、有りえないので何も行わない事とし、これでＤ連続分岐を終了し、Ｄ区切分岐でその他の場合は、有りえないので何も行わない事とし、これでＤ区切分岐を終了し、Ｄ詰込フッター作成処理工程は、ここまでの処理を行うものとし、Ｄ全データー文字列変数に代入されている文字列の最後の位置に相当する文字まで処理を終了したら、このＤ詰込フッター作成処理工程を終了する事とし、8byteのstring型でＤ詰込フッター配列のサイズで配列を作成し、作成した配列をＤ２進数配列と呼ぶ事とし、Ｄ詰込フッター配列の最初の位置から最後の位置までに代入された全てのデーターを8byteづつ読み込んで、読み込んだ文字列を逆順に並べ替えて、並べ替えた文字列をＤ２進数配列の末尾に代入し、1byteの型でＤ２進数配列のサイズで配列を作成し、Ｄ詰込枠数値化配列と呼ぶ事とし、Ｄ２進数配列の最初の位置から最後の位置までに代入されている全ての文字列を8byteづつ読み込んで、読み込んだ文字列を１０進数に変換してＤ詰込枠数値化配列の末尾に代入し、Ｄ詰込枠数値化配列に代入されている全ての数値を元の普通の文字コードに復元する処理を行う事とし、この工程をＤ全復元データー作成工程と呼ぶ事とし、Ｄ全復元データー作成工程では以下の処理を行う事とし、1byteの型でＤ詰込枠数値化配列のサイズの配列を作成し、作成した配列をＤ全復元データー配列と呼ぶ事とし、Ｄ詰込枠数値化配列の最初の位置から最後の位置までに代入されたデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査し、比較検査する際のＤ詰込枠数値化配列に代入されているデーターの位置をＤ詰込枠数値化配列の注目配列と仮称する事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、Ｄ詰込枠数値化配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと同じであったＤ文字出現頻度順文字配列のデーターが代入されているＤ文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をＤBit暗号配列の配列番号として使用してＤBit暗号配列に代入されたデーターを取得して配列Ａ番号の位置に相当するＤ全復元データー配列の位置に代入し、Ｄ詰込枠数値化配列の注目配列を一つずらして次のＤ詰込枠数値化配列の注目配列とする事で次の注目配列のデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、Ｄ詰込枠数値化配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと同じであったＤ文字出現頻度順文字配列のデーターが代入されているＤ文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をＤBit暗号配列の配列番号として使用してＤBit暗号配列に代入されたデーターを取得して配列Ａ番号の位置に相当するＤ全復元データー配列の位置に代入するという処理を行うという繰り返し処理によって、Ｄ詰込枠数値化配列の最初の位置から最後の位置までに代入されたデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して、Ｄ全復元データー配列の最初の位置から最後の位置までのデーターを全て代入し終わったら、Ｄ全復元データー作成工程を終了する事とし、Ｄ全復元データー配列の最初の位置から最後の位置までに代入された全てのデーターをバイナリー形式でファイルの末尾に1byteづつ書き加える事で復元ファイルを作成するという処理をコンピューターに実行させるプログラムを記録したコンピューターが読み取る事が可能な記録媒体
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターで使用するファイルの圧縮に関する
【背景技術】
【０００２】
圧縮技術に関する文献としては、〔非特許文献１〕と〔非特許文献2〕がある。
【非特許文献１】奥村晴彦・山崎敏  著  LHAとZIP  圧縮アルゴリズム×プログラミング入門  ソフトバンク  パブリッシング株式会社  2003/12/6初版
【非特許文献２】亀山渉  金子格  渡辺裕  著  そこが知りたい最新技術  オーディオ・ビデオ圧縮技術入門  株式会社インプレスR&D2007年4月1日初版第1刷発行
【０００３】
〔非特許文献１〕は、ZIP形式とLZH形式の圧縮技術を説明する為に、ハフマン符号の説明をしているものである。それとともに、今日までに開発された圧縮技術を紹介しているが、本発明のYKM形式圧縮プログラムを記録した記録媒体の様な詰め込み枠とフッター部と終端文字という様な組み合わせによる特殊な形式を持つ圧縮方式は記載されていない。
【０００４】
〔非特許文献２〕は、基礎的な圧縮技術として可逆圧縮と非可逆圧縮の説明がされている。その説明の後でJPEGやMPEGやH.264/AVCなどの圧縮技術を説明している。しかし、本発明のYKM形式圧縮プログラムを記録した記録媒体の様な詰め込み枠とフッター部と終端文字という組み合わせによる様な特殊な形式を持つ圧縮方式は、一切記載されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現在の圧縮ソフトウェアによる圧縮よりも、高圧縮率のソフトウェアを開発する事で、通信時間の短縮や記録媒体に記録した場合の記録容量の利用効率を上げる事を目的とする。
【課題を解決するための手段】
【０００６】
本発明は、YKM形式圧縮プログラムを記録した記録媒体という題名であるが、コンピューターに実行させるYKM形式圧縮プログラムを記録したコンピューターが読み取る事が可能な記録媒体の事である。
【０００７】
辞書形式の圧縮技術とは、予め圧縮する為の辞書を作成して、その辞書を利用して文字列を圧縮する方式である。辞書を圧縮ファイルに添付する場合と添付しない場合と２種類ある。圧縮処理と復元処理を行うソフトウェアの事をアーカイバーと呼ぶ事とする。辞書を圧縮ファイルに添付しない場合は、アーカイバー側に予め辞書を準備して処理するものである。スライド辞書形式の圧縮技術とは、ZIP形式の圧縮技術やLZH形式の圧縮技術で使用されている圧縮技術である。予め辞書を作成せずに、ソフトウェアの処理工程に従ってコンピューターに自動処理させる事で辞書を作成させる技術であり、作成させた辞書を使用して圧縮ファイルを作成する技術である。ZIP形式の圧縮技術やLZH形式の圧縮技術の場合、圧縮処理を行うファイルを一定のサイズに分割して辞書を作成するのでスライド辞書という名称が付けられた圧縮用辞書である。スライド辞書形式の圧縮技術で作成された圧縮ファイルの場合は、圧縮ファイルに圧縮する際に作成した辞書を添付しなければならなくなるのが特徴である。
【０００８】
本発明の実施例では、基本的に、スライド辞書形式の圧縮を行う処理工程を想定して本発明のYKM形式圧縮プログラムを記録した記録媒体を作成しているが、辞書圧縮形式と呼ばれる圧縮形式で本発明の技術を使用した圧縮も可能であるから、後述のヘッダー部の作成工程及びヘッダー部の読み込み処理工程は、発明に含まない。実施例のステップ番号と段落で説明する。ステップ１０２の段落〔０１３４〕から段落〔０１３５〕までは、ヘッダー部の作成工程である。ステップ１０５の段落〔０１３９〕から段落〔０１４２〕までの処理は、ヘッダー部の読み込み処理工程である。これらの処理を発明に含まないものとする。
【０００９】
また、コンピューターで普通に使われているテキスト文字（日本国では、ASCIIコード２文字で１文字を表す全角文字とASCIIコード１文字で表す半角文字の事）を、テキスト文字と略して記述する事とする。また、テキスト文字の事を文字コードまたは、文字という事がある。また、２進数の数値を２進数値または、２進数と呼んだり、１０進数の数値を１０進数値と呼んだり、１０進数と呼ぶ事がある。
【００１０】
文字種とは、１文字の文字の事を言う事とする。例えば、日本語で言うところのひらがなの５１音を表す文字で文字種を説明すると、ひらがなの５１音を表す文字の１文字づつを文字種と呼ぶ事となり、ひらがなの５１音を表す文字の全種類とは、５１種類であるとなる。
【００１１】
また、配列とは、データーを１個から複数のデーターを代入する事が出来るものを言い、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列のサイズの事を配列サイズと言ったり、配列サイズの事を略してサイズと言ったりする事がある。配列に代入したデーターの事を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶ事とする。従って、配列のサイズとは、配列要素数または、配列の要素数と同じものであり、言い換えたものである。配列の型とは、配列に代入する事ができる１個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数を意味するものである。この型は、配列を作成する場合に指定するものであり、作成する配列のデーターを代入する事ができる領域の全てに適用されるものである。前述の「作成する配列のデーターを代入する事ができる領域の全てに適用されるものである」という意味は、配列のデーターを代入する事ができる領域に型の違うデーターを代入する事ができる領域を混在させることが出来ないという事である。配列を作成する場合に、「何bitの型で幾つのサイズで配列を作成する」という表現をする事とする。これを8bitの型で10の配列サイズで配列を作成するという表現で説明している場合で意味を説明する。この場合は、配列の要素１個に8bitのデーターを１個代入できる様なものとして、配列要素数10個で配列を作成するという意味である。変数にも配列と同じく型が存在し、変数の型の意味は、配列の型の場合と全く同じである。「何bitの型で変数を作成する」という表現で変数を作成する事とする。8bitの型で変数を作成するという表現で説明している場合の意味は、8bitのデーターを代入する事ができる変数を作成するという事である。また、配列のインデックスとは、一般的に配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成する時点で配列のインデックスを何番から作成するという具合に配列のインデックスを指定せずに配列を作成すると通常、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは０番となり順次１づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。これによって、プログラマーは、配列のインデックスを指定する事で簡便に配列に代入されたデーターの位置を指定する事ができる様にしているものである。インデックスを取得する場合、数値として取得される。この配列のインデックスまたは、添え字または、配列番号をプログラム上から指定する場合は、数値として指定するものであり、その数値に使用するサイズも指定する事が必要になる。以下で配列番号を使用する場合の配列番号１個で使用するサイズが指定されていない場合は、本発明の場合は、２進数という表記方法で16bitまでのサイズで表す事ができる限界数値を扱えるファイルサイズの最大値としたので、変数に代入する場合は、16bitの型で変数��作成して16bitの２進数で代入するものとする。配列に配列番号を代入する場合は、16bitの型で数個の数値を代入できる配列を作成して、その配列の数値を代入できる位置に16bitの２進数で代入するものとする。また、本発明の明細書で配列番号を取得して、取得した配列番号を代入する配列や変数のサイズを指定している場合は、指定しているサイズを使用する事とする。また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置とい表現を配列の最後の位置という様に略した表現を行う場合がある。
【００１２】
string型で配列や変数を作成する場合がある。string型とは、文字列を代入する事ができる配列や変数の型を意味するものである。言い換えるとstring型とは、文字列型と言う言い方が出来るものである。string型で配列や変数を作成して、作成したstring型の配列や変数に文字列や文字を代入すると自動的に文字コードに変換されて配列や変数に代入されるものである。従って、string型とは、文字や文字列を代入する事が出来る配列や変数の型をstring型と言う事が出来るものである。実施例で使用しているMicroSoft株式会社のVisual Stadio2005 C#というコンパイラを使用した場合は、string型で変数を作成すると約２０億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約２０億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。string型で変数を作成する場合と同じく、配列の型をstring型で作成する場合も自動的に１個のデーターを代入する事が出来る領域のサイズが代入された文字コードの文字数分のサイズに可変する配列が作成される。１個のデーターを代入する事が出来る領域のサイズは、string型で変数を作成した場合と同様に約２０億個の文字コードによって表現される文字を代入出来る変数になるのであるが、その作成された変数に文字列を代入するとその文字列を代入するのに必要な最小限度のサイズに自動的にサイズ変更されるようになっている。この様にstring型で変数や配列を作成するとメモリーの使用領域が自動的に代入されるデーターの量によって変化するものになっている。使用するコンパイラによっては、この様な自動的に代入される文字列の文字数によって変数のサイズを変更する機能が無い場合がある。そこで、本発明の明細書では、string型で配列や変数を作成する場合、型として使用するメモリー使用量を指定する事とする。MicroSoft株式会社のVisual Stadio2005 C#というコンパイラを使用した場合、実際には、型として使用するメモリー使用量を指定して変数や配列を作成する事はできない。string型と呼ばれる文字列を代入する事が出来る配列を作成する場合の表現は以下の様になる。「何bitのstring型で幾つのサイズで配列を作成する」という表現で配列を作成する事とする。string型と呼ばれる文字列を代入する事が出来る変数を作成する場合の表現は以下の様になる。「何byteまたは、何bitのstring型で変数を作成する」という表現をする事とする。言い換えると、1byteのstring型で変数を作成するとか、2byteのstring型で変数を作成するとか、8bitのstring型で変数を作成するとか、16bitのstring型で１０のサイズで配列を作成すると記述する事とする。16bitのstring型で１０個のサイズで配列を作成すると記述した場合は、配列の１個のデーターを代入する事が出来る領域の１個のデーターが使用するメモリー量が2byteであるとし、１０個のデーターを代入する事が出来る配列を作成するという事である。この16bitのstring型で１０個のサイズで配列を作成する場合のメモリーの総使用量は、16bit×10という計算が可能となり、答えは、160bit(または、20byte)となる。
【００１３】
配列のインデックスを取得する方法について記述する。配列のサイズが１０の配列の場合で説明する事とする。配列のサイズが１０の配列を作成するとインデックスは、０から９までの数値がコンパイラと呼ばれるプログラムを書く為に一般的に使われるプログラムによって自動的に付けられる。０から９までの数値が配列のインデックスとなるのである。そのインデックスを取得する方法は無い。そこで、最初の位置から配列の最後の位置までの連番として「0,1,2,3,4,5,6,7,8,9」という0番から9番までの連番を作成して、その連番の中から１個づつ順番に数値を取得する事で実現するものである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に代入されたデーターからインデックスを取得する事は出来ない。代入されたデーターの位置を０から１づつ数値を積算する事で得た数値をインデックスと同じ数値として使用するというのが普通のインデックスと呼ばれる数値の取得方法である。
【００１４】
バイナリー形式でファイルを読み込むという場合は、1byteづつ文字コードとして配列に読み込む事を言い、テキスト形式でファイルを読み込むという場合は、テキスト文字を１文字分づつ読み込む場合を言う。テキスト形式でファイルを読み込むという場合、半角文字は、1byteとなるが、通常、処理速度の関係上から半角文字の場合であっても、2byteづつ読み込むものである。従って、テキスト形式でファイルを読み込む場合は、2byteづつ読み込む事とする。以下に、配列の最初の位置から代入する度に代入する位置を一つづつずらして、一つづつデーターを配列に代入するという具合に一つづつという表現で説明している場合があるが、正確には、上記の様に、バイナリー形式でファイルを読み込んでいる場合は、1byteづつとし、テキスト形式でファイルを読み込んでいる場合は、2byteづつとする。注目配列の位置を一つずらすという表現をおこなっている場合の一つ分の意味も一つづつという表現で説明している場合と同じ意味であるり、ずらすサイズは、配列の型として定義しているか、または、代入されているデーターのサイズ1個分の事で、1byteや2byteや3byteや4bitや10bitなどの数値量となる。また、ファイルを作成する時も形式指定がある。バイナリー形式でファイルに記録して保存する場合とテキスト形式でファイルに記録して保存する場合である。バイナリー形式でファイルに記録して保存する場合に使う表現のデーター一つづつは、1byteづつとなる。テキスト形式でファイルに記録して保存する場合に使う表現のデーター一つづつは、2byteづつとなる。但し、配列や変数に1bitづつデーターを代入している場合や4bitづつデーターを代入している場合もある。この配列や変数に1bitづつデーターを代入している場合のデーターの一つづつとは、1bitづつとなり、4bitづつデーターを代入している場合のデーターの一つづつとは、4bitづつとなる。また、1byteづつデーターを代入している場合のデーターの一つづつとは、8bitづつとなる。
【００１５】
画像ファイルやデーターファイルなど、多種多様のファイルを圧縮する場合、現在、殆どの圧縮ソフトウェアは、ハフマン符号器を使用して符号化している。ハフマン符号器を使用して符号化した符号は、単信符号と呼ばれる符号となり効率が非常に悪いものなのである。実際のコンピューターで使用されている0から255までの数値の内、１０進数の「255」という数値1個をハフマン符号で表現すると128bit必要になる計算になる。
【００１６】
符号と符号との間を詰めて記録するという方法は、圧縮技術で使用している圧縮原理のひとつである。コンピューターで使用している文字コードの0から255までを全て２進数の数値で表記すると、最大で8bitあれば全て表記できるものである。しかし、8bitよりも少ない桁数で表現できる２進数も全て8bitで表記するものなのである。「11111」は、１０進数の「31」である。また、「100」は、１０進数の「4」である。つまり、0から127までは、8bit未満の桁数で表現する事が可能なのである。この8bitに満たない数値を8bitに無理やり揃えて表記するというのが現在使われているコンピューターの表記方法なのである。この表記方法だと文字と文字の間に不必要な部分が必ず存在するというものなのである。この不必要な文字と文字の間に存在する本来いらない部分を無くして文字と文字をくっ付けてファイルに記録する事で圧縮する事を実現しているのがハフマン符号というものである。しかしながら、前述の様に、１０進数の「255」という数値1個を表現するのに128bit必要になるハフマン符号は、あまり、合理的とは言えないものである。本発明のYKM形式圧縮プログラムを記録した記録媒体は、ハフマン符号を使用しない事で文字と文字の間にある無駄な部分を極力無くすという技術であり、ハフマン符号が抱えている問題を回避する技術である。ハフマン符号が抱えている問題は、二つある。第一の問題は、意外とbit数を必要としてしまうという問題である。第二の問題は、日本国特許第５００１４５８号「２分割処理圧縮プログラムを記録した記録媒体」などの圧縮技術を使用して前方と後方の両方で同じ暗号文字(ハフマン符号)を使用しても再圧縮が出来ないという問題である。再圧縮とは、圧縮対象ファイルを圧縮処理して作成した圧縮ファイルに再度圧縮処理を行って圧縮ファイルを作成する処理の事である。
【００１７】
第一の問題のハフマン符号を使用すると意外とbit数を必要としてしまうという欠点を克服する為に考えたのが、ハフマン符号を使用せずに文字と文字の間を詰めるという圧縮技術であり、このハフマン符号を使用せずに文字と文字の間を詰めるという圧縮技術が本発明のYKM形式圧縮プログラムを記録した記録媒体である。詰め込み枠というものとフッター部というものを作成し、その作成した詰め込み枠とフッター部というものに一定の規則を決めて、決めた通りにデーターを代入して圧縮する方法である。本発明のYKM形式圧縮プログラムを記録した記録媒体では、詰め込み枠とフッター部というもの以外に終端文字というものも使用している。この終端文字を無くす事で、ハフマン符号が抱えている第二の問題の日本国特許第５００１４５８号「２分割処理圧縮プログラムを記録した記録媒体」などの圧縮技術を使用して前方と後方の両方で同じ暗号文字(ハフマン符号)を使用しても再圧縮が出来ないという問題を克服する事も可能になる可能性があると考えられる。従って、終端文字を無くして、詰め込み枠とフッター部だけで構成した圧縮形式のものであっても本発明の単純なレパートリーであると明言する。実施例では第一の問題の克服を行っているが、第二の問題の克服は行っていない。
【００１８】
圧縮工程の説明を行う事とする。
【００１９】
配列を作成して、作成した配列を出現文字配列と呼ぶ事とする。この出現文字配列に、圧縮処理を行う圧縮対象ファイルに使用されている文字を１文字づつ検査し、圧縮処理を行う圧縮対象ファイルに使用されている文字を全て配列に１文字づつ代入する。圧縮対象ファイルに使用されている文字を全て配列に代入するという事は、圧縮対象ファイルに使用されている全ての文字の中から圧縮対象ファイルに使用されている文字種を探し出して配列に代入するという事である。出現文字配列の各配列要素の文字ごとに圧縮対象ファイルに使用されている文字とを１文字づつ検査し、出現頻度を算出する。そうして、算出した出現頻度を基に、出現文字配列をソートする。この出現頻度を基に、出現文字配列をソートした配列を文字出現頻度順文字配列と呼ぶ事とする。この出現文字配列を作成する工程から文字出現頻度順文字配列を作成する工程までの工程を文字出現頻度算出処理行程と呼ぶ事とする。
【００２０】
出現文字配列に代入された文字種全てを１文字づつ検査して、コンピューターで使用している文字コードの0から255までの数値と比較する。圧縮処理を行う圧縮対象ファイルに使用されていない文字コードの0から255までの数値を探し出し、探し出した数値の一番大きな数値を選択する。圧縮処理を行う圧縮対象ファイルに使用されていない文字コードの0から255までの数値がないのであるならば、圧縮対象ファイルに使用されている文字の中から、最も出現頻度が低い文字コードの0から255までの数値の中から最も255に近い数値を探し出し選択する。この選択した文字コードの0から255までの数値で表した１文字を終端文字に使用する文字とする。この出現文字配列に代入された文字種全てを１文字づつ検査して、コンピューターで使用している文字コードの0から255までの文字コードと比較して終端文字を決定する処理行程を終端算出処理行程と呼ぶ事とする。終端算出処理行程で行う処理の圧縮対象ファイルで使用されていない文字の内、最大な数値を文字コードとする文字を探し出すという処理を、もう少し詳しく説明すると以下の様になる。
【００２１】
配列番号を配列の最初の位置が０番として順次一つづつ増加する番号を付して、最後の位置の配列番号が２５５番となる２５６個のデーターが代入できる配列を作成する。この作成した配列をソート過程配列と仮称する事とする。以下にソート過程配列の最初の位置から最後の位置までの配列番号と出現文字配列または、文字出現頻度順文字配列に代入されている全データーを比較検査して更に検査結果に応じて処理を行うという処理を行うが、検査中のソート過程配列の配列番号を注目配列番号と呼ぶ事とする。注目配列番号の１個に対して出現文字配列または、文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い、出現文字配列または、文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い終わったら、次の注目配列番号に検査対象をずらす事で次の検査を行う事とし、ソート過程配列の最初の位置から最後の位置まで検査処理を行うものとする。ソート過程配列の注目配列番号と出現文字配列または、文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当する配列の位置に同じであった出現文字配列または、文字出現頻度順文字配列に代入されているデーターを代入する。ソート過程配列の注目配列番号と出現文字配列または、文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが代入されている配列が無かった場合は、ソート過程配列の検査中の注目配列番号に相当する配列の位置には何も代入せずに、次の注目配列番号を検査するという処理をソート過程配列の最初の位置から最後の位置までの全ての配列に対して繰り返して処理を行う事で完了させる。そうして、ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査する。ソート過程配列の配列要素が何も代入されていない状態の配列要素の配列番号が圧縮対象ファイルで使用されていない文字となるので、ソート過程配列の配列要素が何も代入されていない状態の配列要素の配列番号を抽出する。この抽出した番号は、文字コードの0から255までの数値と一致する。抽出した配列番号と同じ文字コードの0から255までの数値の文字を終端文字とする処理を行う事となる。圧縮対象ファイルで全ての文字コード(ASCIIコードやANSIコードなどで使用されている0から255までの数値)が使用されている場合は、文字出現頻度順文字配列に代入されているデーターは、出現頻度が低い順または、出現頻度が高い順に文字出現頻度順文字配列にデーターが代入されているので、文字出現頻度順文字配列の最初の位置に代入されているデーターを取得するかまたは、文字出現頻度順文字配列の最後の位置に代入されているデーターを取得して、取得したデーターを終端文字とする処理を行う。
【００２２】
文字出現頻度算出行程で算出した最も出現頻度が高い文字に、「0」または、「1」という1bitの数値を割り当てる。次の出現頻度の文字には、最も出現頻度が高い文字に、1bitの数値の「0」を割り当てた場合は、1bitの数値の「1」を割り当て、最も出現頻度が高い文字に、1bitの数値の「1」を割り当てた場合は、1bitの数値の「0」を割り当てる事とする。次は、三番目に出現頻度が高い文字の割り当てを行うのであるが、これには、「2」という２進数の2bitの数値を割り当てる事とする。これ以降は、同じ様に出現頻度が高い文字から低い文字の順に２進数の数値を割り当てるという処理を全ての出現文字種に対して行う事とする。ここで割り当てた２進数の数値をBit暗号と呼ぶ事とする。このBit暗号を文字の出現頻度で、最も出現回数が多い文字に最も桁数の少ない２進数の数値を割り当てる事で圧縮を可能にするのである。この２進数の数値を出現頻度の高い文字に割り当てる処理行程をBit暗号化行程と呼ぶ事とする。このBit暗号化行程で割り当てる２進数の数値は、YKMコードの数値ではなく、正順の２進数の数値を割り当てる事とする。出現文字種分のサイズで配列を作成し、作成した配列をBit暗号文字配列と呼ぶ事とする。ここで出来上がった出現頻度順に並べた出現文字種に割り当てたBit暗号を順番通りにBit暗号文字配列の最初の位置から最後の位置までに１文字分づつ代入する。Bit暗号文字配列のデーターを代入できる領域の全てにデーターを代入し終わったら、この処理を終了する。
【００２３】
Bit暗号文字配列の最初の位置から最後の位置までにBit暗号の１文字分づつ代入してBit暗号文字配列のデーターを代入できる領域の全てにBit暗号のデーターを代入する処理は、今までに無い新技術の圧縮工程の様にも思われるかもしれないが、このBit暗号文字配列にデーターを代入する処理を行う工程は、ZIP形式の圧縮方法やLZH形式の圧縮方法で使用されているスライド辞書を１文字単位で作成する工程である。作成されたBit暗号文字配列は、圧縮用の辞書として使用するものである。Bit暗号文字配列のデーターを全て代入する処理工程は、スライド辞書を１文字単位で作成する工程であり、スライド辞書の改良技術でしかないものである。〔非特許文献１〕などでスライド辞書圧縮技術や辞書圧縮技術での辞書の作成方法を原理的に説明するのに用いている辞書の作成方式である。この部分は、発明に相当しない技術である事を明言する。しかし、辞書圧縮または、スライド辞書圧縮を行い、更に、ランレングス圧縮を行った後に、この１文字単位のスライド辞書圧縮を行う等の圧縮処理も従来からある技術のZIP形式やLZH形式の圧縮技術よりも更に効果のある有効な処理として使用できるものである。
【００２４】
完全に逆順に表した２進数をYKMコードと呼ぶ事とする。以下に、YMKコードの数値と記述している場合があるが、YMKコードの事を言い換えているだけである。これは、最後の桁を必ず「1」にする事で桁数の調整を可能にする為のものである。また、普通の２進数の数値だと、１０進数の数値に変換した際に上桁(一番先頭)に「0」を加えた場合「0」が消えてしまい圧縮したファイルを復元出来なくなる不具合を回避する為のものである。例えば、「0001」という4bitのデーターを普通に２進数から１０進数の数値に変換すると「1」となる。反対に、「1」を普通に２進数の数値にすると、「1」になってしまい、元の「0001」には戻らないという事になる。YKMコードなら、「8」に変換される事になるのである。「8」からYKMコードに変換した場合は、「0001」となる。この様に、正確に元の２進数の数値に変換する為に必要になるものがYKMコードである。しかし、何も２進数の数値を逆順に書き換えなくても同じ様に正確に元の２進数の数値に戻す事が可能である事がLZH形式の圧縮技術で確認されている。ZIP形式の圧縮技術では、本発明のYKMコードと同じく２進数の数値を逆順に書き換えた数値を使用して圧縮するものである。しかし、LZH形式の圧縮技術では、２進数の数値を逆順に書き換えた数値を使用せず、２進数の数値をそのまま使用して圧縮するものであるという事が広く知られている。とは言え、本発明のYKM形式圧縮プログラムを記録した記録媒体では、完全に逆順に表した２進数を使用して圧縮するものとした。正順の２進数を使用した場合でも、本発明のYKM形式圧縮プログラムを記録した記録媒体と同じ技術であるという事を明言する。以下に突然、詰め込み枠やフッター部というものを記述して説明を始めるが、ここでの説明は、何故完全に逆順の２進数を使用するのかの説明を行う事にする。従って、詰め込み枠やフッター部というものの概念の説明は後述する事とする。詰め込み枠やフッター部では、枠の桁数に満たなかった場合に、下桁に文字コードの半角文字で「0」を代入する事で調整を行う事とする。また、詰め込み枠では、文字コードの半角文字で「0」や文字コードの半角文字で「1」を１文字とした文字を詰め込むものとする。詰め込む際、先頭が文字コードの半角文字で「0」になる場合がある。この調整を行う関係上と、詰め込み枠の先頭に文字コードの半角文字で「0」が入力される場合があると言う事から詰め込み枠とフッター部の両方にYKMコードを使うと効率良く元の２進数に戻す事が出来るものになるのである。
【００２５】
圧縮対象ファイルと同じサイズで配列を作成して、作成した配列をBit配列と呼ぶ事とする。Bit暗号文字配列の最初の位置から最後の位置までに代入されたデーターを使って、圧縮対象ファイルの文字列を全てBit暗号に書き換えて、Bit配列の最初の位置から最後の位置までにBit暗号に書き換えたデーターを代入する。
【００２６】
Bit配列に代入された全てのデーターをYKMコードに変換する。次に、終端算出行程で決定した終端文字をYKMコードに変換する。YKMコードに変換した終端文字は、8bitに満たない桁数の場合があるので、8bitに満たない桁数の場合は、8bitになる様に「0」を下桁に付け加える事で調整する。終端文字は、8桁に満たない場合は、8桁になる様に調整するが、Bit配列に代入されたデーターは、8桁に満たない場合でも8桁に調整しない。
【００２７】
詰め込み枠というものの概念を説明する事とする。文字を詰め込む為の枠の事を詰め込み枠と呼ぶものとする。どれくらいの大きさとするのが最適なものであるかについては、未だ研究する必要があると考えている。本発明のYKM形式圧縮プログラムを記録した記録媒体では、8bitのサイズを１個の詰め込み枠のサイズとする事とした。この詰め込み枠のサイズを１単位と呼ぶ事とする。普通使われている文字コードの場合は、8bitで１文字を表現するものである。しかし、文字コードを「0」と「1」で構成された２進数で表現すると文字と文字の間を詰める事ができる。これは、0から255までの文字コードを２進数にすると、必ずしも8bitにならないからである。つまり、文字コードを「0」と「1」で構成された２進数で表現すると8bitに満たない２進数になる場合があるという事である。文字と文字の隙間を無くすという方法は、圧縮する技術のひとつの方法である。文字と文字を出来るだけ多く、この文字を詰め込む枠に詰め込む事で圧縮を行うものである。
【００２８】
Bit配列に代入された全てのデーターをYKMコードに変換したデーターをBit配列の最初の位置から最後の位置までに上書きで代入しなおしたデーターの１文字づつの桁数を検査する。詰め込み枠を8bit一単位として、同じ桁数(bit数)の文字が連続している場合は、詰め込めるだけ詰め込む。同じ桁数(bit数)ではない文字が続いている場合は、１単位の詰め込み枠に２文字まで詰め込む事とする。２文字を１単位の詰め込み枠に詰め込めない場合は、１文字だけを１単位の詰め込み枠に代入する事とする。１単位の詰め込み枠に詰め込んだ文字の桁数の総和が8bitに満たない場合は、下桁に必要な量だけ「0」を付け加えて8bitに調整する。
【００２９】
圧縮するには、隙間を無くすのが基本原理である。ハフマン符号器で作成される長い符号で最大値に相当する「255」を表現を表現すると128bit必要になる。２進数の数値は、最大値に相当する「255」を表現しても8bitで表現できる。従って、ハフマン符号とBit暗号化処理行程で暗号化された文字とを比較すると、Bit暗号化処理行程で暗号化された文字は、かなり短いbit長の文字になるのである。圧縮対象ファイルに使われている全ての文字の最大桁数が8bitに満たない場合は、8bitよりも、もっと短いbit長を１単位とする事もできると考えられる。この様な圧縮対象ファイルを圧縮する場合は、１文字しか入れられない場合のbit枠の節約が可能になる。しかしながら、普通は、この様な圧縮対象ファイルであるはずが無いので、最大8bitの暗号化された文字を１単位の詰め込み枠に１文字分の文字を入れる事になる。従って、最低必要bit枠は、8bitという事になる。最低必要bit枠の最適化は、Bit暗号化処理行程で暗号化された文字の最大bit数で枠を決定する方法、または、終端文字に使用する文字の桁数(bit数)で枠を決定する方法などが考えられる。
【００３０】
次にフッター部というものの概念を説明する事とする。フッター部には、１単位の詰め込み枠に文字を何文字入れたのかというデーターを代入するものとする。本発明のYKM形式圧縮プログラムを記録した記録媒体では、フッター部のサイズは、１単位で4bitとする事とした。前述の詰め込み処理工程で詰め込んだ8bitを１単位とする詰め込み枠の中に、基本的には、最大２文字の文字を詰め込む事になる。しかし、「0」や「1」などの1bitで表現されたYKMコード化された文字や「01」や「11」などの2bitで表現されたYKMコード化された文字などは、詰め込み枠に入れられるだけ入れる事とする。また、１文字だけしか入れられない場合がある。これらの場合を記録する為にフッター部を使うのである。4bitあれば、２進数で0から15という数値を記録できるからである。１単位の詰め込み枠に２文字代入した場合は、代入した文字と文字の区切り位置を示した数値をこの4bitのフッター部に代入する事とする。例えば、8bitを１単位とする詰め込み枠に7桁の２進数の数値が代入されている場合で説明する。フッター部に代入された数値を読み取り、読み取ったデーターが文字区切り位置を示す数値で3という数値が代入されていた場合は、１単位の詰め込み枠に文字区切り位置の数値の3を文字と文字の区切り位置として２文字代入されているという事が判明する事になる分けである。つまり、前方の３文字と後方の４文字が２つの文字と文字であるという事が判明するのである。この様な、文字と文字の区切り位置を示す数値をフッター部に代入する事とする。8bitを１単位とする詰め込み枠に２文字の文字を詰め込んだ場合は、YKMコードの1から7を使う事とする。しかし、他の数値を使用する事も可能である。他の数値を文字区切りとして使用する場合も本発明のYKM形式圧縮プログラムを記録した記録媒体の単純なレパートリーであると明言する。
【００３１】
１単位の詰め込み枠に「0」や「1」などの1bitで表現されたYKMコード化された文字を詰め込めるだけ詰め込んだ場合は、この4bitのフッター部には、１単位の詰め込み枠に詰め込んだ文字の文字数を代入する事とする。8bitを１単位とする詰め込み枠には、８文字まで詰め込む事が出来るので、8bitを１単位とする詰め込み枠の場合の必要数字は、1から8までとなる。しかし、既に、1から7と言う数値は、詰め込み枠に２文字入れた場合の文字と文字の区切り位置を示す数値として使用するように予約済みであるから、３文字を１単位の詰め込み枠に代入した事を示す、３文字数を意味する「3」の代わりに「8」を使用し、４文字を１単位の詰め込み枠に代入した事を示す、４文字数を意味する「4」の代わりに「9」を使用し、５文字を１単位の詰め込み枠に代入した事を示す、５文字数を意味する「5」の代わりに「10」を使用し、６文字を１単位の詰め込み枠に代入した事を示す、６文字数を意味する「6」の代わりに「11」を使用し、７文字を１単位の詰め込み枠に代入した事を示す、７文字数を意味する「7」の代わりに「12」を使用し、８文字を１単位の詰め込み枠に代入した事を示す、８文字数を意味する「8」の代わりに「13」を使用する事とする。この詰め込み枠に1bitの桁数の文字を何文字詰め込んだかを示す数値も、使用する数値を変更する事が可能である。この詰め込み枠に1bitの桁数の文字を何文字詰め込んだかを示す数値を変更したものも、本発明のYKM形式圧縮プログラムを記録した記録媒体の単純なレパートリーであると明言する。
【００３２】
「01」や「11」などの2bitで表現されたYKMコード化された文字を詰め込み枠に詰め込んだ場合は、この4bitの枠には、詰め込み枠に代入した文字数を代入する。2bitで表現されたYKMコード化された文字を１単位が8bitのサイズとする詰め込み枠に詰め込んだ場合は、最大で４文字までしか詰め込む事が出来ない計算になる。従って、３文字を詰め込み枠に入れた場合は、4bitの枠に、３文字を意味する「3」の代わりに「14」をYKMコード化して代入し、４文字を詰め込み枠に入れた場合は、4bitの枠に、４文字を意味する「4」の代わりに「15」をYKMコード化して代入する。3bitで表現されたYKMコード化された文字を１単位が8bitのサイズとする詰め込み枠に詰め込んだ場合は、最大で２文字しか入れられない計算になる。詰め込み枠に２文字を詰め込んだ場合と同じとなるので文字の区切り位置を4bitの枠に代入する。詰め込み枠に、１文字のみしか入れられなかった場合は、YKMコードの「0」をこの4bitのフッター部に代入する。最後に、この4bitの枠に代入したYKMコードが4bitに満たない場合は、下桁に「0」を付け加えて4bitになる様に調整する。この4bitの枠をフッター部と呼ぶ事とする。
【００３３】
詰め込み枠にデーターを代入する工程とフッター部にデーターを代入する工程までを処理して出来上がるデーター構成は、以下の様になる。8bitの詰め込み枠に２文字以上入れられる場合は、「8bitの詰め込み枠＋4bitのフッター部」となる。8bitの詰め込み枠に１文字しか代入出来ない文字の場合は、「8bitの詰め込み枠＋4bitのフッター部＋終端文字」となる。8bitの詰め込み枠に１文字しか入れられない文字の場合が連続してあった場合は、8bitの詰め込み枠＋フッター部＋連続文字数分だけ8bitの詰め込み枠を連続させて最後に終端文字を書き込む事とする。従って、例えば、8bitの詰め込み枠に１文字しか入れない文字の場合が３文字連続してあった場合で説明するならば、「8bitの詰め込み枠＋4bitのフッター部＋8bitの詰め込み枠＋8bitの詰め込み枠＋終端文字」となる。以上の様な多種類のデーターの代入方法でデーター構成するので、そのデーターの構成の組み合わせは、多種多様になる。圧縮対象ファイルに8bitの詰め込み枠に１文字しか入れない文字が１文字も無い場合は、終端文字がいらない場合に相当するが、実施例では、圧縮対象ファイルに終端文字が必要か否かによって処理を分けていない。どの様な圧縮対象ファイルを圧縮する場合でも、全て終端文字を使用する事を前提として処理する様な処理工程としているが、終端文字が必要ない場合に処理工程を変化させた処理にする事で圧縮対象ファイルに終端文字がいらない場合のファイルの圧縮や圧縮されたファイルの復元処理に対応したものは、本発明のYKM形式圧縮プログラムを記録した記録媒体の単純なレパートリーであると明言する。
【００３４】
圧縮したファイルを復元する際に最低限必要な情報を記録する部分を作成する。この部分をヘッダー部と呼ぶ事とする。圧縮したファイルを復元する際に必要な情報または、記録しておくと復元する際に便利だと思われるデーターは、以下の様なものがあると考えられる。
(1)終端文字（最低限必要な情報とは言えない、圧縮したファイルを復元する際に使うプログラム側で何という文字を終端文字として使用しているかを規則とする事で問題を回避できる）
(2)圧縮対象ファイルで使われていない文字が無い場合は、最も出現頻度が低い文字を終端文字として使用する事となるが、この場合は、圧縮対象ファイルのどこに終端文字として使用した文字が使用されているかを指し示す配列番号を記録する。圧縮対象ファイルのどこに終端文字として使用した文字が使用されているかを指し示す配列番号を記録するのではなく、反対に終端文字に使用した位置を記録する事も可能である。（どちらの記録であっても最低限必要なデーターであるが、圧縮対象ファイルで使われていない文字が有る場合は、必要ないデーターとなる。また、詰め込み枠に１文字しか代入出来ない文字が無い圧縮対象ファイルを圧縮した場合は、必要ないデーターとなる）
(3)文字出現頻度順文字配列のサイズ(つまり、出現文字の種類数であるが、記録した方が圧縮ファイルを圧縮前の状態に戻す複元工程で楽に複元できる程度のデーターである)
(4)文字出現頻度順文字配列(出現頻度順にソートされた文字コードであるが、これはスライド辞書形式の圧縮を行った場合に最低限必要になるデーターであり、辞書圧縮形式の圧縮を行った場合は必要ないデーターである)
(5)圧縮前の圧縮対象ファイルのサイズ（最低限必要な情報とは言えない、正確に復元できたかどうかの検査を行う為の数値として使用するか、復号する為の配列を作成する時の配列サイズを指定するのに使用する程度である）
【００３５】
詰め込み枠とフッター部と終端文字とからできた文字列をYKMコードに書き換えた文字列の全体のbit数を8の倍数に調整する必要がある。MicroSoft株式会社のVisual
Stadio2005 C#というコンパイラを使用した場合は、8bitづつファイルに記録する処理しか行えない為にどうしても、8の倍数に調整する必要が発生するのである。これは、MicroSoft株式会社のVisual Stadio2005 C#というコンパイラを使用した場合に必要になる調整である。MicroSoft株式会社のVisual Stadio2005 C#というコンパイラを使用せずに、他のコンパイラを使用した場合で、その使用したコンパイラがファイルに記録する場合に1bitづつ記録する機能やファイルを読み込む場合に1bitづつ読み込む機能がある場合は、調整する必要がない処理となる。ファイルのサイズを8の倍数に調整する場合は、ファイルの末尾に「0」を付け加える事で行う事とする。しかしながら、ファイルの末尾の「0」を削除するという処理を行う事でファイルのサイズを8の倍数に調整する事ができる場合が考えられる。ファイルの末尾の「0」を削除するという処理を行う事でファイルのサイズを8の倍数に調整する場合は、末尾が必ずしも「0」ではないという問題とファイルの末尾が「0」であったとしても調整するbit数分だけファイルの末尾に「0」が有るとはかぎらないという問題が発生する。この二つの問題を解決して、ファイルの末尾の「0」を削除するという処理を行う事でファイルのサイズを8の倍数に調整する事ができる用にした処理を行うものも、本発明の単純なるレパートリーである事を明記する。ファイルのサイズを8の倍数に調整するという調整を行ってから、ヘッダー部に、詰め込み枠とフッター部と終端文字とからできたYKMコードの文字列を連結して、圧縮データーを作成し、作成したファイルに圧縮データーを1byteづつバイナリー形式で記録する事で圧縮ファイルを作成する。
【００３６】
5bit単位の詰め込み枠でフッターが3bitの場合
8bit単位の詰め込み枠でフッターが4bitの場合
8bit単位の詰め込み枠でフッターが5bitの場合
8bit単位の詰め込み枠でフッターが6bitの場合
9bit単位の詰め込み枠でフッターが5bitの場合
9bit単位の詰め込み枠でフッターが7bitの場合
10bit単位の詰め込み枠でフッターが6bitの場合
10bit単位の詰め込み枠でフッターが7bitの場合
など、多種多様な詰め込み枠とフッター部の組み合わせが考えられる。終端文字も必ずしも8bitで無ければならないという訳ではないと考えている。実施例では、終端文字は8bitで行っているので、圧縮ファイルを復元する工程で終端文字であるか否かの確認を行う処理で圧縮ファイルのデーターを詰め込み枠も終端文字も8bitで読み込んで確認しているが、詰め込み枠のサイズで読み込んで処理する工程と終端文字のサイズで圧縮ファイルのデーターを読み込んで終端文字が書き込まれいるか否かを確認するという処理工程の二種類の処理工程で復元処理を行うという改良を行う事で終端文字のサイズ（bit数）も自由に変更できるものであると確信している。この様な終端文字のサイズも変更可能なので本発明の終端文字と詰め込み枠とフッター部との組み合わせは、殆んど無限にあると言い得るものである。実施例では、8bit単位の詰め込み枠でフッターが4bitとしているが、その他の多種多様な詰め込み枠とフッター部と終端文字の組み合わせのものも全て本発明のYKM形式圧縮プログラムを記録した記録媒体の単純なレパートリーであるという事を明言する。
【００３７】
フッター部の補足説明を行う事とする。実施例では、フッター部の最適化ルーチンが無い処理となっているが、このフッター部の最適化を行う処理があった方が良いというのは言うまでも無い事の様に思われる事である。このフッター部の最適化を行うルーチンを付け加えたソフトウェアも本発明の単なるレパートリーである事を明言する。また、詰め込み枠も最適化する事が出来ると考えている。詰め込み枠も圧縮対象ファイルごとに最適化する処理を行うものも本発明の単なるレパートリーである事を明言する。
【００３８】
フッター部で、問題になるのは、詰め込み枠に１文字しか代入できない文字が圧縮する前のファイル（圧縮対象ファイル）に連続して存在している場合である。この場合、フッター部を２文字目以降は、作成しない事を規則とする事にした。これによって、フッター部によるbit数の消費を最小限にする。しかしながら、この様にフッター部を作成しないで詰め込み枠のみの連続としてしまうと、詰め込み枠に１文字しか入れられない文字が連続している場合の終わりの境界部分が解らなくなってしまうという問題が発生する。そこで、１文字しか詰め込み枠に代入出来ない文字が連続している場合の終わりの目印として何かを使用する事とする。つまり、この目印として使用する何かが終端文字というものに相当するものなのである。圧縮対象ファイルで使われていない文字か、または、最低出現頻度の文字を抽出する。抽出した文字を終端文字として使用する為に終端文字をYKMコードに変換して目印として使用する。
【００３９】
圧縮されたファイルの復元工程は、基本的に圧縮工程の逆を行えば復元可能である。実施例で詳しく説明する事とする。
【００４０】
本発明のYKM形式圧縮プログラムを記録した記録媒体は、数値を２進数で表現して16bitで表現できる最大値までのファイルサイズの圧縮対象ファイルを圧縮する事ができるものとする事とした。16bitで表現できる２進数の数値の最大値とは、「1111111111111111」である。「1111111111111111」は、１０進数に変換すると「65535」である。つまり、65535byteまでの圧縮対象ファイルを圧縮する事が出来るものとするのが、本発明のYKM形式圧縮プログラムを記録した記録媒体である。１０進数の「0」から「65535」までの数値を2byteの数値にして配列に記録する処理は、以下の様になる。この処理を数値配列作成処理工程と呼ぶ事とする。数値配列作成処理工程を終了させた後にファイルに記録する場合の処理も数値配列作成処理工程を終了した後に説明する。数値配列作成処理工程では、送られて来た数値を処理して配列に代入するという処理を行うものとする。16byteのstring型で変数を作成して、作成した変数を１６バイト変数と仮称する。数値配列作成処理工程に他の処理工程から送られて来た１０進数の「65535」までの数値を文字コードの半角文字の0と1で表現された２進数の数値に変換して、作成した文字列の２進数の文字数（桁数）が16文字（桁）の場合は、そのまま１６バイト変数に代入する。作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない場合は、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない分だけ、作成した文字列の２進数の左側に0という文字を連結した文字列を作成して１６バイト変数に代入する。１６バイト変数に代入された半角の0と1で表現された２進数の先頭から8byte分と後方の8byte分との二つに分割する。分割した文字コードの半角文字の0と1で表現された２進数の文字列の先頭から8byte分を先頭8と仮称し、後方の8byte分を後方8と仮称する。1byteの型で２個の配列サイズで配列を作成して、作成した配列を数値配列と仮称する。数値配列の最初のデーターを代入する事が出来る位置に先頭8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列の最後のデーターを代入する事が出来る位置に後方8の８個の文字列で出来た２進数を0から255までの数値に変換して代入する。数値配列に代入できる２個の数値を代入し終わったところで数値配列作成処理工程を終了する。完成した数値配列を1byteづつバイナリー形式でファイルに保存する事で16bitの２進数を保存する事が可能になる。この処理は、ZIP形式の圧縮技術やLZH形式の圧縮技術で行われている常識的技術である。
【００４１】
ファイルに記録された１０進数の「0」から「65535」までの数値をファイルから読み取る処理を説明する。数値配列作成処理工程で作成した数値配列を1byteづつバイナリー形式でファイルに保存したファイルからデーターを読み込む為に1byteの型で２個のサイズの配列を作成する。作成した配列をＤ読込配列と呼ぶ事にする。数値配列作成処理工程で作成した数値配列を1byteづつバイナリー形式でファイルに保存したファイルをバイナリー形式で1byteづつ読み込んでＤ読込配列の最初の位置と最後の位置に代入する。Ｄ読込配列を以下の１６bit数値復元工程に送る。以下の処理を１６bit数値復元工程と呼ぶ事とする。１６bit数値復元工程では、送られて来た２個の1byteのデーターが代入された配列を受け取って、受け取ったデーターを代入する為に1byteの型で２個のサイズで配列を作成する。作成した配列をＤ数値配列と呼ぶ事にする。送られて来た２個の1byteのデーターが代入された配列のデーターを作成したＤ数値配列の最初の位置と最後の位置に1byteづつデーターを代入する。8byteの型で変数を２個作成し、作成した変数を各々、Ｄ先頭８変数、Ｄ後方８変数と呼ぶ事とする。Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ先頭８変数に代入する。Ｄ数値配列の最初の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ先頭８変数に代入する。Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字に満たない場合は、満たない分だけ左側に文字コードの半角文字の0を連結する事で文字列を８文字にしてＤ後方８変数に代入する。Ｄ数値配列の最後の位置に代入された数値を文字コードの半角文字の0と1で構成された２進数に変換し、変換した２進数の文字列の文字数が８文字の場合は、そのままの文字列をＤ後方８変数に代入する。16byteの型で変数を作成して、Ｄ１６バイト変数と呼ぶ事とする。Ｄ１６バイト変数に、Ｄ先頭８変数に代入されたデーターとＤ後方８変数に代入されたデーターを連結した文字列を作成して代入する。16bitの型で変数を作成して、作成した変数をＤ１６ビット変数と呼ぶ事とする。Ｄ１６バイト変数に代入された文字コードの半角文字の0と1で構成された２進数を１０進数の数値に変換する事で元の16bitの２進数に戻し、元の16bitの２進数に戻した数値をＤ１６ビット変数に代入する。ここまでで１６bit数値復元工程を終了する。Ｄ１６ビット変数に代入された１０進数の数値がファイルから読み取った16bitの数値である。
【００４２】
本発明のYKM形式圧縮プログラムを記録した記録媒体では、終端文字を使用しているが、この終端文字を無くす事が最大の圧縮率を生み出すのではなかろうかと考えている。詰め込み枠とフッター部のサイズを変更する事によって終端文字を使用しなくて済む様に変更する事もできると考えている。詰め込み枠とフッター部のサイズを変更する事によって終端文字を無くしたものも簡単なレパートリーにすぎないもので本発明のYKM形式圧縮プログラムを記録した記録媒体と同じものである事を明言する。終端文字として使用する文字は、ASCIIコードやANSIコードなどで使用されている0から255までの２進数の数値のどれかを使用するものである。圧縮対象ファイルの殆どで0から255までの２進数の数値のどれかひとつ位は使用していないはずなので圧縮対象ファイルで終端文字が使われているという場合は、殆どの場合有り得ないとも考えられる。従って、終端文字を使用している圧縮方式で本発明の実施例の場合と異なり、終端文字が圧縮対象ファイルに使われているか否かによって処理工程を分岐していない処理工程のものが作成可能である可能性があるが、この様な終端文字が圧縮対象ファイルに使われているか否かによって処理工程を分岐していない処理工程のものであっても本発明のYKM形式圧縮プログラムを記録した記録媒体のレパートリーである事を明言する。また、実施例で使用した圧縮対象ファイルの内容は、図９の＜本発明の実施例で使用した圧縮対象ファイルの内容図＞に示した様な内容のファイルを使用して実施したものである。
【００４３】
実施例では、段落〔０１１５〕に記述している様に、連続１分岐で検査変数に代入された数値が0の場合は、先読み桁数１変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の事）と先読み桁数２変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列の事）を連結した文字列を作成して、作成した文字列を加工処理して詰め込み枠の末尾に代入するという処理を行っている。この処理は、フッター部が4bitだと詰め込み枠に代入した文字列のパターンを実施例の処理よりも細かく表現する事が出来ない為に残念ながら、実施例では２文字列分を詰め込み枠に代入するという処理を行う事にした為である。ここの処理でのパターンは、多種多様なパターンがあり得ると考えている。例えば「1桁,2桁,1桁,2桁,1桁」で7桁（7bit）、「2桁,1桁,2桁,1桁,2桁」で8桁（8bit）、「2桁,3桁,2桁」で7桁（7bit）、「3桁,2桁,3桁」で8桁（8bit）、「2桁,3桁,2桁,1桁」で8桁（8bit）、「1桁,1桁,1桁,1桁,2桁,2桁」で8桁（8bit）、など多種多様なパターンが考えられる。全てのパターンをフッター部で表す事が出来るようにするとか、多少でも多くのパターンをフッター部で表現するとかを考えるとフッター部は、5bitや6bit等に変化させる必要が出てくると考えている。この様に、パターンを大量にするともっと効率の良い圧縮技術になる事が明白である。フッター部のサイズを大きくして詰め込み枠に代入した文字列の桁数のパターンを多くしたものも本発明の単純なるレパートリーである事を明言する。
【発明の効果】
【００４４】
今までよりも、圧縮ファイルが小さくなる事で通信時間の短縮や記録媒体の有効利用が可能になる。通常、ファイルを圧縮する場合、一つの圧縮技術で圧縮を行わず、二つ以上の技術を使用してファイルを圧縮するという処理を行っている。ZIP形式やLZH形式は、最初にスライド辞書を使用して圧縮し、この圧縮後に、ランレングス圧縮を行い、その次に、ハフマン符号器による符号化を行う事で圧縮処理を行うものである。本発明のYKM形式圧縮プログラムを記録した記録媒体の場合は、最初にスライド辞書を使用して圧縮し、この圧縮後に、ランレングス圧縮を行い、最後に本発明のYKM形式圧縮プログラムを記録した記録媒体の技術を使用して圧縮する事となる。また、日本国特許第５００１４５８号「２分割処理圧縮プログラムを記録した記録媒体」などの圧縮技術との組み合わせも考えられる等、本発明のYKM形式圧縮プログラムを記録した記録媒体は、今後の技術的貢献度が大きいと確信している。
【００４５】
以下の実施例では、1文字分の文字列のみ詰め込み枠に代入できる場合に於いて、同じ桁数の文字列が連続している場合と連続していない場合とに分岐処理している。実施例で説明している分岐名で説明すると連続２分岐で検査変数に代入された数値が0の場合と連続２分岐で検査変数に代入された数値が1の場合で分岐して処理している部分の事である。連続２分岐で検査変数に代入された数値が0の場合と、連続２分岐で検査変数に代入された数値が1の場合とは、どんな場合に相当するのかという事をもっと平易に説明する。連続２分岐で検査変数に代入された数値が0の場合とは、1文字分の文字列のみ詰め込み枠に代入できる場合に於いて、同じ桁数の文字列が連続していない場合である。また、連続２分岐で検査変数に代入された数値が1の場合とは、1文字分の文字列のみ詰め込み枠に代入できる場合に於いて、同じ桁数の文字列が連続している場合の事である。この連続２分岐を行う理由は、出来るだけ桁数が少ない文字列を一つの詰め込み枠に代入しようとした結果の分岐処理である。日本国特許第５００１４５８号「２分割処理圧縮プログラムを記録した記録媒体」などの圧縮技術との組み合わせて使用する事を考えると本発明の効果の大きさが期待できる部分である。
【図面の簡単な説明】
【００４６】
【図１】本発明のYKM形式圧縮プログラムを記録した記録媒体のフローチャート図
【図２】本発明に使用した機材の説明図
【図３】本発明のYKM形式圧縮プログラムを記録した記録媒体の操作画面図
【図４】本発明の実施例で圧縮対象ファイルを圧縮して圧縮ファイルを作成した画面図
【図５】本発明の実施例で作製した圧縮ファイルを復元して復元ファイルを作成した画面図
【発明を実施するための形態】
【００４７】
図２は、実際とは、多少異なる事を明記する。本発明のYKM形式圧縮プログラムを記録した記録媒体は、図２の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源で動作するプログラムである。図２の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源は、図符号Ｂのコンピューター本体と図符号Ａのモニターと図符号Ｃのキーボードと図符号Ｄのマウスの合計４個のパーツで構成された機材であるが、これらの合計４個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Ｂのコンピューター本体は、DOS/V機コンピューターと呼ばれるコンピューターであり、パソコンと一般的に呼ばれているコンピューターである。図符号Ｂのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明のYKM形式圧縮プログラムを記録した記録媒体は、図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のYKM形式圧縮プログラムを記録した記録媒体がインストールされていて、図符号Ｂのコンピューター本体から本発明のYKM形式圧縮プログラムを記録した記録媒体を起動する事が出来る場合は、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のYKM形式圧縮プログラムを記録した記録媒体がインストールされているものとする。本発明のYKM形式圧縮プログラムを記録した記録媒体がインストールされている図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明のYKM形式圧縮プログラムを記録した記録媒体を起動すると本発明のYKM形式圧縮プログラムを記録した記録媒体は、図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明のYKM形式圧縮プログラムを記録した記録媒体に書かれたCPUが処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューターによって本発明のYKM形式圧縮プログラムを記録した記録媒体が動作する。従って、本発明のYKM形式圧縮プログラムを記録した記録媒体がハードウェア資源を利用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明のYKM形式圧縮プログラムを記録した記録媒体に書かれた命令文は、コンピューター本体のCPUによって処理されると表現しなおす事ができるものである。
【００４８】
図２の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源で動作するソフトウェアであると段落〔００４７〕にて説明したが、コンピューターの形状は、図２の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源に限定できるものではなく、図符号Ａのモニター、図符号Ｂのコンピューター本体、図符号Ｃのキーボード、図符号Ｄのマウスが一体化したものや、図符号Ｄのマウスが存在しない構成のものや、図符号Ａのモニター、図符号Ｂのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後ももっと、いろいろな形状のコンピューターが開発されていくであろうと考えられる。図２の＜本発明に使用した機材の説明図＞に示した様なハードウェア資源でなくても、類似と言い得る、いわゆるコンピューターを使用して本発明のYKM形式圧縮プログラムを記録した記録媒体で動作させている場合も本発明のYKM形式圧縮プログラムを記録した記録媒体であると明言する。
【実施例】
【００４９】
図３、図４、図５は、実際とは、多少異なる事を明記する。実施例の分岐で分岐条件に該当しない場合どうするかを記述していない場合があるが、この場合何も処理しないという事とする。実施に於いては、MicroSoft株式会社のVisual Stadio2005 C#というコンパイラを使用してプログラムを作成した。また、図１の＜本発明のYKM形式圧縮プログラムを記録した記録媒体のフローチャート図＞を参照の事。図１の＜本発明のYKM形式圧縮プログラムを記録した記録媒体のフローチャート図＞の図符号Ｅの人為的な手動による操作または入力と図符号ＦのYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理工程には、ステップ番号を付してある。ステップ１００とステップ１０４の二つのステップは、人為的処理である。ステップ１０１からステップ１０３までとステップ１０５からステップ１０７までは、コンピューターと本発明のYKM形式圧縮プログラムを記録した記録媒体による自動処理である。本発明は、図４の＜本発明の実施例で圧縮対象ファイルを圧縮して圧縮ファイルを作成した画面図＞で示す図符号Ｉの圧縮対象ファイルの内容を表示するボックスに表示された内容の様に、テキスト文字列が書かれたファイルだけを対象に圧縮工程で処理して、圧縮したファイルを作成し、作成した圧縮ファイルを復元工程で処理して復元したファイルを作成するものである。圧縮対象ファイルの内容は、「あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもらりるれろやいゆえよわいうえをん
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤイユエヨワイウエヲン
1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz」という文字列である。一般的に改行と呼ばれる文字列も含まれている。また、英数字は、半角文字でひらがなとカタカナは全角文字である。また、圧縮対象ファイルに使用したテキストファイルの文字コードは、ANSIコードである。
【００５０】
以下の段落に於いて、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、図符号Ｂのコンピューター本体の内部にある本体メモリーに作成される。但し、ＯＳと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Ｂのコンピューター本体の内部にある本体メモリーまたは、図符号Ｂのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、配列や変数などを作成すると記述している場合の配列や変数などが作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されるという表現になる。
【００５１】
以下の段落に於いて、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものとする。1byteの型で作成された配列の場合で説明する。配列の最初の位置から代入する度に1byteづつ代入する位置をずらして、データーを1byteづつ代入していく場合、配列の最初の位置にデーターを代入した後は、配列に代入されたデーターの最後の位置にあるデーターの次の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の位置の指定を末尾と表現する事が出来る。未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に1byteづつ代入する位置をずらして1byteづつデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現する事が出来ると考えられる。そこで、配列の最初の位置から代入する度に1byteづつ代入する位置をずらして、1byteづつデーターを配列に代入していく場合は、配列の最初の位置に代入する場合であっても、配列の末尾に代入すると記述している場合がある。
【００５２】
以下の段落に於いて、配列の最初の位置から代入する度に数byteづつまたは、数bitづつ代入する位置をずらして、数byteづつまたは、数bitづつデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーター、取得したデーター、読み込んだデーター、元の配列に代入されたデーターなど）の順番通りに数byteづつまたは、数bitづつ配列に代入するものとする。
【００５３】
以下の段落に於いて、全て一次元配列を利用してプログラムを作成しているが、多次元配列を利用する事や、ファイルを利用する事でも同じ処理が出来ると考えられる。また、一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明の単純なレパートリーでしかないという事を明言する。
【００５４】
また、以下の段落で、本発明のYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理の場合は、いちいち、本発明のYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理である事を記述しない。記述していない場合は、本発明のYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理である。しかし、図１の＜本発明のYKM形式圧縮プログラムを記録した記録媒体のフローチャート図＞には、図符号Ｅの人為的な手動による操作または入力と、図符号ＦのYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理工程の二つに分けて示す事とした。以下の本発明のYKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理工程の部分の処理工程を記述したCPUに対する命令文の事をプログラムと呼ぶ事とする。
【００５５】
配列のサイズの調整なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、配列の型の変換処理なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、変数の型の変換処理についても当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、以下の段落で、テキスト文字列として文字コードの種別を指定して読み込むという記述をしているが、この場合の文字コードの種別とは、ASCIIコードやANSIコードやUNICODEやUTF-8コードなどの文字コード形式の事である。
【００５６】
図１の＜本発明のYKM形式圧縮プログラムを記録した記録媒体のフローチャート図＞を参照の事。図符号Ｅと図符号Ｆには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明のYKM形式圧縮プログラムを記録した記録媒体を起動すると、図３の＜本発明のYKM形式圧縮プログラムを記録した記録媒体の操作画面図＞の様な操作画面が図符号Ａのモニターに表示される。
【００５７】
圧縮工程の説明を行う事とする。ステップ１００は、人為的な手動による操作または入力である。ステップ１００では、以下の処理を人為的な処理として行う。図符号Ｇの圧縮するファイルの指定ボックスにファイル名をフルパスで図符号Ｃのキーボードを使用して入力する事で指定する。図符号Ｃのキーボードから入力せずに、図符号Ｄのマウスなどの入力デバイスを使用して、図符号Ｑの参照ボタン１をクリックする事でファイルを選択して指定する事ができる。図符号Ｇの圧縮するファイルの指定ボックスに入力したファイルを圧縮ファイルを作成する為の圧縮対象ファイルと呼ぶ事とする。次に、図符号Ｈの圧縮したファイルを保存するホルダー指定ボックスに圧縮したファイルを保存するホルダーをフルパスで図符号Ｃのキーボードを使用して入力して指定する。図符号Ｃのキーボードから入力せずに、図符号Ｄのマウスなどでファイルを選択して入力する事で指定する事が出来る。図符号Ｈの圧縮したファイルを保存するホルダー指定ボックスの横にある図符号Ｒの参照ボタン２を図符号Ｄのマウスなどの入力デバイスを使用してクリックする事でホルダーを選択して指定する事ができるように作成してある。この図符号Ｇと図符号Ｈの二つの入力ボックスにデーターを入力し終わったら、図符号Ｄのマウスなどの入力デバイスを使用して図符号Ｎの圧縮ボタンをクリックすると圧縮工程がスタートする。
【００５８】
次に、ステップ１０１に進む。ここでは、以下の処理で圧縮対象ファイルを圧縮する工程を行う。圧縮対象ファイルを圧縮する工程を圧縮工程と呼ぶ事とする。圧縮工程での規則として詰め込み枠は、8bitで作成し、フッター部は、4bitで作成し、終端文字は、8bitで作成する事とする。また、作成工程では、詰め込み枠は、8byteで処理し、フッター部は、4byteで処理し、終端文字は、8byteで処理する事とする。この規則で以下の処理を進めて圧縮ファイルを作成する事とする。図符号Ｇで指定された圧縮対象ファイルをテキスト文字列として文字コードの種別を指定して読み込んで（実施例では、圧縮対象ファイルがANSIコードで記録されているのでANSIコードを指定した）図符号Ｉの圧縮対象ファイルの内容を表示するボックスにテキスト文字列として全て表示する。図符号Ｇで指定された圧縮対象ファイルを1byteづつ配列に読み込む処理を行う。圧縮対象ファイルを1byteの型で1byteづつ読み込むのに必要なサイズの配列を作成する。この配列を仮称、圧縮対象配列とする。図符号Ｇで指定された圧縮対象ファイルをバイナリー形式で開いて1byteづつデーターを読み込んで、読み込んだ数値データーを圧縮対象配列の最初の位置から1byteづつ圧縮対象配列の最後の位置までに代入する度に1byte分づつ代入する位置をずらして代入する。圧縮対象ファイルに使われている文字種全てを圧縮対象配列に代入された全てのデーターから抽出する為の作業用配列を作成する。この作業用配列を仮称、仮全文字種配列と呼ぶ事とする。仮全文字種配列は、3byteのstring型で２５６個のサイズで配列を作成する。仮全文字種配列のサイズを何故２５６個で作成するのかという理由は、現在の文字コードは、8bitの0から255までの数値を使用しているので２５６個のデーターが代入できるサイズで全ての文字を表す数値を代入する事が出来るからである。また、文字列として0から255までの数値を表すデーターを代入する事が出来るサイズは、半角文字列の場合は、3byteとなる。作成した仮全文字種配列にデーターを代入する工程を行う。仮全文字種配列データー代入処理と呼ぶ事とする。仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較して仮全文字種配列データー代入処理を行う事とするが、仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査する仮全文字種配列の配列番号の事を仮全文字種配列の注目配列番号と呼ぶ事とする。仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して、仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の最初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入する。仮全文字種配列の注目配列番号の示す位置に圧縮対象配列のデーターを代入したら、仮全文字種配列の注目配列番号を一つずらして次の仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の���初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入するという処理を繰り返して仮全文字種配列の最初の位置に相当する配列番号から最後の位置に相当する配列番号までの全ての注目配列番号を検査処理する事で仮全文字種配列データー代入処理を終了する。仮全文字種配列に代入された文字を示す文字列で記録された数値は、圧縮対象配列で使用している数値のみであるから、必ずしも0から255までの数値の全てを使用してはいないので仮全文字種配列には空白の配列データーがある。仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーター数をカウントし、カウントした数値を全数１と呼ぶ。3byteのstring型で全数１のサイズで配列を作成して、作成した配列を出現文字配列と呼ぶ事とする。出現文字配列の最初の位置から最後の位置までにデーターを代入する処理を出現文字配列データー代入処理と呼ぶ。仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーターを全て抽出して出現文字配列の最初の位置から最後の位置までに抽出したデーターを代入する度に3byte分づつずらして3byte分づつ代入する。抽出したデーターを代入し終わったら、出現文字配列データー代入処理を終了する。
【００５９】
出現文字配列の最初の位置から最後の位置までに代入された各々のデーターが圧縮対象配列で何回使われているかを計算させた結果を代入する為に1byteの型で出現文字配列のデーター数で配列を作成する。言い換えると、1byteの型で全数１のサイズで配列を作成するという事である。この作成した配列を仮称、出現回数配列と呼ぶ事とする。この出現回数配列に、圧縮対象ファイルに使われている文字のどれが何回使われているかという回数を代入する事とするが、この出現回数配列の最初の位置から最後の位置までにデーターを代入する処理を出現回数処理と呼ぶ事とする。出現回数処理では、出現文字配列に代入された全てのデーターごとに、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、カウントした回数を出現回数配列の最初の位置から最後の位置までに代入する度に代入する位置を1byte分づつずらして1byte分づつ代入するという処理を行う事とするが、検査している出現文字配列に代入されたデーターを出現文字配列の注目配列と呼び、出現文字配列の注目配列と同じ位置の出現回数配列の位置を出現回数配列の注目配列と呼ぶ事とする。出現文字配列の注目配列のデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入する。出現回数配列の注目配列にカウントした回数を代入し終わったら、出現文字配列の注目配列の位置を一つずらして次の配列位置に代入されているデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入するという処理を繰り返して行い、出現文字配列の最初の位置から最後の位置に代入されたデーターを検査処理し終わったら、出現回数処理を終了する。出現回数処理を行う事で圧縮対象ファイルに使われている文字のどれが何回使われているかを計算した結果を収めた配列が出現回数配列であるが、この出現回数配列の最初の位置から最後の位置までに代入された全てのデーターを基に出現回数が多い順(出現頻度順)に出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを並べ替える。つまり、出現回数配列を基に出現文字配列に代入されている全てのデーターを出現頻度が多い順にソートするという事である。なぜ、ソートするかと言うと、圧縮するには、出現頻度が一番多い文字を一番少ない桁数(bit数)にするのであるから、出現頻度が一番多い文字から順次、出現頻度が少ない文字の順番で、0から255までの文字コードを割り当てる為である。出現回数配列を基に出現文字配列に代入されている全てのデーターを出現頻度が多い順にソートする事で出現頻度が多い順にソートされた出現文字配列が作られる。1byteの型で出現文字配列のサイズで配列を作成する。作成した配列を文字出現頻度順文字配列と呼ぶ事とする。文字出現頻度順文字配列の最初の位置から最後の位置までに、出現頻度が多い順にソートされた出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを3byteづつ取得して1byteで表現される数値データーに変換して、代入する度に1byteづつずらして代入する。
【００６０】
1byteの型で出現文字配列または、出現回数配列または、文字出現頻度順文字配列と同じサイズで配列を作成する。作成した配列をBit暗号配列と呼ぶ事とする。Bit暗号文字配列に、0から文字出現頻度順文字配列のサイズから1を引き算した数値を最大値として、最初の位置に0が割り当てられて順次数値が1づつ増加する順番で割り当てる事になるようにBit暗号文字配列の末尾に0から代入して代入する度に1づつ代入する数値を増加させて、代入する位置を1byte分ずらして増加させた数値データーを代入する。文字出現頻度順文字配列は、既に出現頻度順にソートされている。文字出現頻度順文字配列に代入されたデーターの中で出現頻度が一番多い文字を表す0から255までの数値が「0」になる様にし、出現頻度が一番少ない文字を表す0から255までの数値の内、最も「255」に近い数値なる様に割り当てる事とする。Bit暗号配列の最初の位置から最後の位置までに代入された全てのデーターの個々の数値をBit暗号と呼ぶ事とする。Bit暗号という言葉を使用して言い換えると、Bit暗号は、0から文字出現頻度順文字配列の配列サイズから1を引き算した数値までとし、文字出現頻度順文字配列に代入された最も出現回数が多いものにBit暗号の0を割り当てて、文字出現頻度順文字配列に代入された最も出現回数が少ないものにBit暗号の最大値を割り当てるという事である。この割り当てを行ってBit暗号文字配列の最初の位置から最後の位置までに数値を代入する工程をBit暗号化行程と呼ぶ事とする。Bit暗号文字配列に代入された最初の位置から最後の位置までに代入されたデーターの並び順を説明する。圧縮対象ファイルに使われている文字種類ごとの出現頻度順のデーターが代入されている出現回数配列の配列番号または、文字出現頻度順文字配列の配列番号と同じ位置に、Bit暗号文字配列に代入された最初の位置から最後の位置までの各々のデーターが並ぶ事になる。例を用いてBit暗号化行程を説明する。「110,10,7,75,54,220,0,18」という文字コードが文字出現頻度順文字配列に代入されているものと仮定する。この中で一番出現頻度が多い文字コードが110であり、一番出現頻度が少ない文字コードが、18であり、出現頻度の順番通りに数値が並んでいるものと仮定する。文字出現頻度順文字配列は、既にソートされた配列であるから出現頻度の順番で数値が並んでいるという事を説明する必要は無いが記述した。この場合のBit暗号の割り当ては、順番に「0,1,2,3,4,5,6,7」になるという事である。また、Bit暗号文字配列に代入される数値は、順番通りに「0,1,2,3,4,5,6,7」を代入する事になるという事である。これで、Bit暗号化行程を終了する事とする。
【００６１】
終端文字を選択する工程を行う事とするが、この工程を終端算出処理工程と呼ぶ事とする。終端算出処理工程では、圧縮対象ファイルで使われていない文字を探し出して、探し出した文字を終端文字とする処理を行う。しかしながら、圧縮対象ファイルで使われていない文字が無い場合は、圧縮対象ファイルで最も使われていない文字の中で最も255の数値に近い数値を終端文字とするという処理を行う。何故、255に最も近い数値を終端文字とするかについては、簡単な理由からである。詰め込み枠を8bitとして、終端文字の枠も8bitというサイズにした結果、終端文字を代入する枠が8bitなのだから、8bitよりも少ない桁数になる数値を選択する意味が無いからである。終端文字を8bitではなくて7bitとか6bitとか5bitとか4bitとか3bitとか2bitとか1bitの桁数にするのならば、0に最も近い数値を終端文字とする処理形式にすべきであるが、実施例では、終端文字を8bitにしたので255に最も近い数値を終端文字とする処理形式にしただけである。
【００６２】
終端算出処理工程では、以下の処理を行う。3byteのstring型で２５６個のサイズで配列を作成する。この作成した配列をソート過程配列と仮称する事とする。ソート過程配列の最初の位置から最後の位置までにデーターを代入する処理を行う。以下にソート過程配列の最初の位置から最後の位置までの配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して更に検査結果に応じて処理を行うという処理を行うが、検査中のソート過程配列の配列番号を注目配列番号と呼ぶ事とする。注目配列番号の１個に対して文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い、文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い終わったら、次の注目配列番号に検査対象をずらす事で次の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行うという処理を繰り返して行う事で、ソート過程配列の最初の位置から最後の位置まで文字出現頻度順文字配列に代入されている全データーと比較検査処理を行うものとする。ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に、同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入する。ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う。ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査している注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う。次の注目配列番号の検査処理は、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入する。ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う。ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査している注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う、という様に処理をソート過程配列の最初の位置から最後の位置までの全ての位置に代入されたデーターに対して繰り返して処理を行う事でソート過程配列の最初の位置から最後の位置までにデーターを代入する処理を終了する。
【００６３】
ソート過程配列の中から終端文字に使える文字があるかどうかを検査する工程を終端検査繰り返し処理と呼ぶ事とする。終端検査繰り返し処理では、以下の処理を行う。1byteの型で終端変数を作成する。検査結果を代入する為の1byteの型で変数を作成して、作成した変数を終端検査変数と呼ぶ。ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号を探し出して、探し出した配列番号の中から最も配列番号が255に近い数値（255を含む）の配列番号を探し出して、その数値を終端文字の文字コードとし、終端変数に代入し、終端検査変数に0という数値を代入して終端検査繰り返し処理を終了する。ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号が存在しなかった場合は、終端検査変数に1という数値を代入して終端検査繰り返し処理を終了する。
【００６４】
終端検査変数に代入されている数値が１の場合と0の場合とに分岐する。この分岐を終端文字決定分岐と呼ぶ事とする。終端文字決定分岐で終端検査変数に代入されている数値が１の場合は、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの中から、最も出現頻度が少ない文字コードを抽出して、抽出した文字コードを終端文字として決定して数値として終端変数に代入する。実施例では、テキスト文字だけで構成されたファイルを圧縮するものとして本発明のYKM形式圧縮プログラムを記録した記録媒体を作成した。この終端文字決定分岐で終端検査変数に代入されている数値が１の場合の処理を行っているが、この分岐条件に該当する場合が実施例では殆んど無いと考えられる。また、圧縮対象ファイルに終端文字として使用する文字が使用されているのだから圧縮対象ファイルで終端文字が使われている位置を記録する配列を作成するのが本来のここでの処理であるが、圧縮対象ファイルで終端文字が使われている可能性は殆どないと考えられるので実施例では、終端文字が圧縮対象ファイルのどの位置で使用されているのかを取得して配列に記録する処理を割愛した。勿論、圧縮対象ファイルが画像ファイルまたはプログラムが書かれた実行ファイルなどの場合は、終端文字が圧縮対象ファイルで使用されている場合に圧縮対称ファイルのどの位置で使用されているのかを取得して配列に記録する処理が必要不可欠な処理であると考えられるので、この点を圧縮処理工程で改良したものと復元処理工程で改良したものも、本発明の単純なるレパートリーである事を明言する。終端検査変数に代入されている数値が0の場合は、既に終端文字が終端検査繰り返し処理で決定されて、終端変数に代入されているので何も行わない。これで、終端文字決定分岐を終了する。ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの中で最も出現頻度が少ない文字コードが代入されているデーターは、ソート過程配列の最後の位置に代入されているデーターである。次に、8byteのstring型で変数を作成して、作成した変数をYKM終端変数と呼ぶ事とする。終端変数に代入された数値を半角の0と1の文字列で表現された２進数に変換して、変換した文字列の２進数を逆順に並べ替えてYKM終端変数に代入する。YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁の場合は、何も行わないが、YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁に満たない場合は、YKM終端変数に代入した文字列で出来た２進数の最後に8桁に満たない分だけ下桁に半角の0という文字を連結した文字列を作成して、YKM終端変数に上書きで代入する。これで、終端算出処理工程を終了する。
【００６５】
Bit暗号を使用して圧縮対象ファイルから読み込んだ全てのデーターを暗号化する工程を行うが、この工程をBit暗号YKMライン作成工程と呼ぶ事とする。Bit暗号YKMライン作成工程では、以下の処理を行う。1byteの型で圧縮対象配列のサイズで配列を作成して、作成した配列をBit配列と呼ぶ事とする。Bit配列の最初の位置から最後の位置までの全ての位置にデーターを代入する工程を行うが、この工程をBit暗号ライン作成工程と呼ぶ事とする。Bit暗号ライン作成工程では以下の処理を行う。圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査する。比較検査する際の圧縮対象配列に代入されているデーターの位置を圧縮対象配列の注目配列と仮称する事とし、圧縮対象配列の注目配列に代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入する。次に、圧縮対象配列の注目配列を一つずらして次の圧縮対象配列の注目配列とする事で次の注目配列のデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入するという処理を行うという繰り返し処理によって、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して、Bit配列の最初の位置から最後の位置までのデーターを全て代入し終わったら、Bit暗号ライン作成工程を終了する。8byteのstring型でBit配列のサイズで配列を作成する。作成した配列をBit暗号YKMライン配列と呼ぶ事とする。Bit配列のサイズとは、何かについて説明する。段落〔００１１〕で配列のサイズとは何かという説明をしたが再度説明する。Bit配列に代入されているデーターの数であり、一般的な言い方で説明すると配列の要素数の事である。Bit配列の最初の位置から最後の位置までに代入された全てのデーターを配列に代入されている順番どおりに半角の0と1という文字列で表現した２進数に変換して、２進数に変換した文字列で出来た数値を全て逆順に並べ替えてBit暗号YKMライン配列の最初の位置から最後の位置までにBit配列に代入されているデーターの順番通りに代入する。これで、Bit暗号YKMライン作成工程を終了する。
【００６６】
突然だが、詰め込み枠の最適化について説明する事とする。圧縮対象ファイルで使われていない文字があるならば、終端変数に代入された文字のbit数を詰め込み枠の最低必要桁数(bit数)とする。圧縮対象ファイルで使われていない文字があって、例えば、その圧縮対象ファイルで使われていない文字が5桁の２進数で表す事が出来る数値であるならば詰め込み枠の最低必要枠は、5bitになるという事である。圧縮対象ファイルで使われていない文字がないのであるならば、詰め込み枠の最低必要桁数(bit数)は、8bitという事になる。終端文字に決定する文字コードの数値を２進数で表した場合の桁数を最低必要桁数として詰め込み枠を作成する際の基準とする事が可能になるのである。また、詰め込み枠とフッター部の組み合わせを数種類試して、最高の圧縮率で圧縮する事が出来た詰め込み枠とフッター部の組み合わせを使用するという最適化方法も考えられるのである。この様な詰め込み枠のサイズを最適なサイズに変更する事が可能であると考えられるが、実施例では、この詰め込み枠の最適化をしないで処理するものとした。詰め込み枠の最適なサイズを求めて詰め込み枠のサイズを変更する処理を本発明に付けたとしても、単なるレパートリーである事を明言する。
【００６７】
詰め込み枠とフッター部と終端変数の値を代入する為の配列を作成するが、この配列を詰込フッター配列と呼ぶ事とする。Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターを詰め込み枠とフッター部と終端文字という形のデーター構成に作成しなおした場合に必要になるデーター数を全数２と呼ぶ事とするが、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターを詰め込み枠とフッター部と終端文字という形のデーター構成に作成する方法は、以下に詳しく記述する。詰込フッター配列は、8byteのstring型で全数２のサイズで配列を作成する。突然であるが全数２についての注釈を述べる事とする。全数２を予め計算する事が出来ないので、実際には、Bit暗号YKMライン配列のサイズを３倍したサイズで詰込フッター配列を作成して、代入処理を行い、その後、全数２のサイズに配列を小さく作成しなおすという処理を行っている。さて、説明を実施例の説明に戻す事にする。1byteの型で変数を２個作成する。作成した２個の変数を各々、先読み桁数１変数、先読み桁数２変数と呼ぶ事とする。1byteの型で変数を１個作成する。作成した１個の変数を検査変数と呼ぶ事とする。1byteの型で変数を３個作成する。作成した３個の変数を各々第１変数、第２変数、第３変数と呼ぶ事とする。Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の繰り返し処理を行う。この繰り返し処理を詰込フッター文字列作成工程と呼ぶ事とする。
【００６８】
説明の都合上、ここを詰込フッター文字列作成工程の開始点と仮称する。先読み桁数１変数と先読み桁数２変数と検査変数と第１変数と第２変数と第３変数の６個の変数に0という数値を代入する事で初期化する。Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の処理を行うが、処理を行うBit暗号YKMライン配列に代入されているデーターの位置をBit暗号YKMライン配列の注目配列と言う事とする。まず、Bit暗号YKMライン配列の注目配列の位置が最後の位置を越えていないかどうかを検査して、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えている場合は、詰込フッター文字列作成工程を終了する事とし、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えていない場合は、以下の詰込フッター文字列作成工程の処理を行う事とする。先読み桁数１変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入する。Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来るかどうかを検査して、Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合とBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合とその他の場合に分岐する。この分岐を最後分岐と呼ぶ事とする。
【００６９】
最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合は、Bit暗号YKMライン配列の注目配列を一つ進める。先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入する。先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入したら、Bit暗号YKMライン配列の注目配列の位置を一つ戻すという処理を行う。Bit暗号YKMライン配列の注目配列の位置を一つ戻すという処理を行う理由は、これ以降の処理を行う都合上、Bit暗号YKMライン配列の注目配列の位置を一つ戻すという処理を行う必要があるからである。先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合と違う場合とその他の場合に分岐する。この分岐を先読み桁数分岐と呼ぶ。
【００７０】
先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合は、検査変数に１を代入する。
【００７１】
先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して違う場合は、検査変数に0を代入する。
【００７２】
先読み桁数分岐でその他の場合は、有りえないので何も行わない。これで先読み桁数分岐を終了する。
【００７３】
最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入する。詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入する。詰込フッター配列の末尾にYKM終端変数の文字列を代入する。詰込フッター文字列作成工程を終了する事とする。
【００７４】
最後分岐でその他の場合は、有りえないので何も行わない。ここで、最後分岐を終了する。
【００７５】
先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合と、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合とその他の場合に分岐する。この分岐を桁数分岐と呼ぶ事とする。
【００７６】
桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐する。この分岐を連続１分岐と呼ぶ事とする。
【００７７】
連続１分岐で検査変数に代入された数値が1の場合は、1byteの型で変数を作成する。作成した変数をカウント１変数と呼ぶ事とする。Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウント１変数にカウントした事によって得られた数値を連続していた回数（文字列の個数）として代入する。同じ文字数の文字列が幾つ連続しているかによって分岐する。２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐する。この分岐をカウント１分岐と呼ぶ事とする。
【００７８】
カウント１分岐で２文字のみ同じ文字数の文字列が連続している場合は、先読み桁数１変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の事）と先読み桁数２変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列の事）を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進めて、段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００７９】
カウント１分岐で３文字以上同じ文字数の文字列が連続している場合は、先読み桁数１変数に代入されている数値が3または4である場合と先読み桁数１変数に代入されている数値が2以下の数値である場合とその他の場合に分岐する。この分岐を個数分岐と呼ぶ事とする。
【００８０】
個数分岐で先読み桁数１変数に代入されている数値が3または4である場合は、詰め込み枠が8文字数（桁）であるから、詰め込み枠には、最大で２文字まで代入できる計算になるので、カウント１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ以下の処理を繰り返す。この繰り返し処理を２文字書込処理と呼ぶ事とする。２文字書込処理では、以下の処理を行う。Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。ここまでの処理をカウント１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ処理を繰り返したら、２文字書込処理を終了する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００８１】
個数分岐で先読み桁数１変数に代入されている数値が2以下の数値である場合は、以下の処理を行う。カウント１変数に代入されている数値に先読み桁数１変数に代入されている数値を掛け算して得た数値を第１変数に代入する。第１変数に代入された数値を8で割り算を行って得た数値の小数点以下を切り捨てた数値を第２変数に代入する。第２変数に代入された数値が1以下の場合と2以上の場合とその他の場合に分岐する。この分岐をループ代入分岐と呼ぶ事とする。
【００８２】
ループ代入分岐で第２変数に代入された数値が1以下の場合は、カウント１変数に代入されている数値を第３変数に代入する。8byteのstring型で変数を作成して、作成した変数を連結１変数と呼ぶ事とする。第３変数に代入された数値分以下の処理を繰り返す。この繰り返し処理を連結文字列作成１工程と呼ぶ事とする。連結文字列作成１工程では、以下の処理を行う。Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結１変数に代入するが、連結１変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入する。ここまでの処理を第３変数に代入された数値分繰り返したら、連結文字列作成１工程を終了する。連結１変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結１変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。
【００８３】
先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合に分岐する。この分岐をループ代入フッター１分岐と呼ぶ事とする。この分岐条件の第３変数に代入された数値が3以上の場合とは、３文字以上同じ文字数の文字列が連続している場合の事である。
【００８４】
ループ代入フッター１分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐する。この分岐を１文字連続Ａ分岐と呼ぶ事とする。１文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する。
【００８５】
１文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００８６】
１文字連続Ａ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００８７】
１文字連続Ａ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００８８】
１文字連続Ａ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００８９】
１文字連続Ａ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００９０】
１文字連続Ａ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００９１】
１文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない。ここで１文字連続Ａ分岐を終了する。
【００９２】
ループ代入フッター１分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐する。この分岐を２文字連続Ａ分岐と呼ぶ事とする。２文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する。
【００９３】
２文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００９４】
２文字連続Ａ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【００９５】
２文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない。ここで２文字連続Ａ分岐を終了する。
【００９６】
ループ代入フッター１分岐でその他の場合は、有りえないので何も行わない。ここでループ代入フッター１分岐を終了する。
【００９７】
ループ代入分岐で第２変数に代入された数値が2以上の場合は、同じ文字数（桁数）の文字列が連続している回数が多くて詰め込み枠に文字列を連続回数分代入すると詰め込み枠を２個以上使用してしまう場合の事である。ループ代入分岐で第２変数に代入された数値が2以上の場合は、カウント１変数に代入されている数値を第２変数に代入されている数値で割り算して得た数値の小数点以下を切り捨てた数値を第３変数に代入する。以下の繰り返し処理を回数ループ代入処理工程と呼ぶ事にする。回数ループ代入処理工程では、以下の処理を第２変数に代入された数値分だけ繰り返し処理を行う。8byteのstring型で変数を作成して、作成した変数を連結２変数と呼ぶ事とする。第３変数に代入された数値分だけ以下の処理を繰り返す。この繰り返し処理を連結文字列作成２工程と呼ぶ事とする。連結文字列作成２工程では、以下の処理を行う。Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結２変数に代入するが、連結２変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入する。ここまでの処理を第３変数に代入された数値分だけ繰り返したら、連結文字列作成２工程を終了する。連結２変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結２変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。
【００９８】
先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合とに分岐する。この分岐をループ代入フッター２分岐と呼ぶ事とする。この分岐条件の第３変数に代入された数値が3以上の場合とは、３文字以上同じ文字数の文字列が連続している場合の事である。
【００９９】
ループ代入フッター２分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐する。この分岐を１文字連続Ｂ分岐と呼ぶ事とする。１文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する。
【０１００】
１文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０１】
１文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０２】
１文字連続Ｂ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０３】
１文字連続Ｂ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０４】
１文字連続Ｂ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０５】
１文字連続Ｂ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０６】
１文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない。ここで１文字連続Ｂ分岐を終了する。
【０１０７】
ループ代入フッター２分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐する。この分岐を２文字連続Ｂ分岐と呼ぶ事とする。２文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する。
【０１０８】
２文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１０９】
２文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。
【０１１０】
２文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない。ここで２文字連続Ｂ分岐を終了する。ここまでの処理を回数ループ代入処理工程と呼ぶが、この回数ループ代入処理工程は、第２変数に代入された数値分だけ繰り返し処理を行ったら、回数ループ代入処理工程を終了する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【０１１１】
ループ代入フッター２分岐でその他の場合は、有りえないので何も行わない。ここでループ代入フッター２分岐を終了する。
【０１１２】
ループ代入分岐でその他の場合は、有りえないので何も行わない。ここでループ代入分岐を終了する。
【０１１３】
個数分岐でその他の場合は、有りえないので何も行わない。ここで個数分岐を終了する。
【０１１４】
カウント１分岐でその他の場合は、有りえないので何も行わない。ここでカウント１分岐を終了する。
【０１１５】
連続１分岐で検査変数に代入された数値が0の場合は、先読み桁数１変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の事）と先読み桁数２変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列の事）を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結して文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入する。先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入する。作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。ここで連続１分岐を終了して、段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【０１１６】
連続１分岐でその他の場合は、有りえないので何も行わない。ここで、連続１分岐を終了する。
【０１１７】
桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐する。この分岐を連続２分岐と呼ぶ事とする。
【０１１８】
連続２分岐で検査変数に代入された数値が1の場合は、以下の処理を行う。1byteの型で変数を作成する。作成した変数をカウント２変数と呼ぶ事とする。Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウント２変数にカウントした事によって得られた数値を連続していた回数（文字列の個数）として代入する。同じ文字数の文字列が幾つ連続しているかによって分岐する。２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐する。この分岐をカウント２分岐と呼ぶ事とする。
【０１１９】
カウント２分岐で２文字のみ同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。詰込フッター配列の末尾にYKM終端変数の文字列を代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【０１２０】
カウント２分岐で３文字以上同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。カウント２変数に代入されている数値から１を引き算して得た数値分だけ以下の処理を繰り返す。この繰り返し処理をカウント繰返処理と呼ぶ事とする。カウント繰返処理では、以下の処理を繰り返す事とする。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。以上の処理をカウント２変数に代入されている数値から１を引き算して得た数値分だけ処理を繰り返し終わったら、カウント繰返処理を終了する。詰込フッター配列の末尾にYKM終端変数の文字列を代入する。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【０１２１】
カウント２分岐でその他の場合は、有りえないので何もしない。ここで、カウント２分岐を終了する。
【０１２２】
連続２分岐で検査変数に代入された数値が0の場合は、先読み桁数１変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の事）の文字数を調べて8文字（桁）の場合は、そのまま詰込フッター配列に代入し、調べた文字数が8文字に満たない場合は、8文字（桁）になる様に先読み桁数１変数に代入された数値を算出する際に取得したBit暗号YKMライン配列に代入されている文字列（Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の事）の下桁に半角の0という文字を8文字に満たない分だけ連結して文字列を作成して、作成した文字列を詰込フッター配列の末尾に代入する。詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入する。詰込フッター配列の末尾にYKM終端変数の文字列を代入する。Bit暗号YKMライン配列の注目配列の位置を一つ進める。段落〔００６８〕の詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す。
【０１２３】
連続２分岐でその他の場合は、有りえないはずなので何も処理を行わない。ここで連続２分岐を終了する。
【０１２４】
桁数分岐でその他の場合は、有りえないはずなので何も処理を行わない。ここで桁数分岐を終了する。
【０１２５】
詰込フッター文字列作成工程は、ここまでである。ここまでの処理をBit暗号YKMライン配列の最初の位置に代入されたデーターから最後の位置までに代入されたデーター全てに対して行い終わったら、詰込フッター文字列作成工程を終了する。
【０１２６】
詰込フッター文字列作成工程で詰込フッター配列の最初の位置から最後の位置までにデーターを代入したが、詰込フッター配列の最初の位置から最後の位置までにデーター全てを代入出来るサイズ（文字数）でstring型の変数を作成する。この変数を全データー文字列変数と呼ぶ事とする。全データー文字列変数に詰込フッター配列の最初の位置から最後の位置までにデーター全てを連結した文字列を作成して代入する。全データー文字列変数に代入されている文字列の文字数をカウントする。カウントした数値が8以下の場合とカウントした数値が9以上の場合とその他の場合に分岐する。この分岐を数値化前分岐と呼ぶ事とする。
【０１２７】
数値化前分岐でカウントした数値が8以下の場合は、有りえないので何も行わない。
【０１２８】
数値化前分岐でカウントした数値が9以上の場合は、カウントした数値を8で割り算して余りがある場合とカウントした数値を8で割り算して余りがない場合とその他の場合に分岐する。この分岐をカウント余り分岐と呼ぶ事とする。
【０１２９】
カウント余り分岐でカウントした数値を8で割り算して余りがある場合は、以下の処理を行う。1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とする。カウントした数値を8で割り算して余りを整数値に計算しなおして、8から整数値に計算しなおした数値を減算して得た数値を調整変数に代入する。調整変数に代入された数値分、0という文字列を連結した文字列を作成して、全データー文字列変数に代入された文字列の末尾に作成した文字列を連結する。8byteのstring型でカウントした数値を8で割り算した数値の小数点以下を切り上げた数値のサイズで配列を作成する。この配列を数値化前文字列配列と呼ぶ事にする。数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とする。
【０１３０】
カウント余り分岐でカウントした数値を8で割り算して余りがない場合は、以下の処理を行う。1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とする。調整変数に0という数値を代入する。8byteのstring型でカウントした数値を8で割り算した数値のサイズで配列を作成する。この配列を数値化前文字列配列と呼ぶ事にする。数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とする。
【０１３１】
カウント余り分岐でその他の場合は、有りえないので何も行わない。ここでカウント余り分岐を終了する。
【０１３２】
数値化前分岐でその他の場合は、有りえないので何も行わない。ここで数値化前分岐を終了する。
【０１３３】
1byteの型で数値化前文字列配列のサイズの配列を作成する。作成した配列を数値化配列と呼ぶ事とする。数値化前文字列配列の最初の位置から最後の位置までに代入された文字列の２進数を8byteづつ取得して１０進数の数値に変換して、変換した数値を数値化配列の末尾に1byteづつ代入する事で、数値化配列の最後の位置まで代入処理を行う。
【０１３４】
ステップ１０２に進む。ステップ１０２では、ヘッダー部を作成する。圧縮されたファイルを復元する為のデーターを記述する部分の作成である。段落〔００３４〕に記述した５つの情報をヘッダー部に記録する事になるのが普通であろうと考えている。ヘッダー部の作成記録順番として以下のデーターを記述順番で作成記録する事とする。また、各データーの後に記述している個数は、記録する為に必要とする配列サイズを示すものとする。ヘッダー部のサイズを記録する為に２個と調整変数の値を代入する為に１個と圧縮対象ファイルのファイルサイズを記録する為に２個と文字出現頻度順文字配列のサイズを記録する為に１個（最大で255までの数値なので1個）と文字出現頻度順文字配列のサイズ分の個数と終端文字を記録する為に１個の合計を算出して、算出した数値をヘッダー数と呼ぶ事とする。1byteの型でヘッダー数のサイズで配列を作成する。作成した配列をヘッダー配列と呼ぶ事とする。
【０１３５】
ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を行う。ヘッダー部のサイズを2byteの分割された数値にする為に、段落〔００４０〕の数値配列作成処理工程にヘッダー部のサイズに相当するヘッダー数を送る。数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入する。ヘッダー配列の末尾に調整変数に代入された数値を代入する。圧縮対象配列のサイズを取得して、取得した数値を段落〔００４０〕の数値配列作成処理工程に送る。数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入する。ヘッダー配列の末尾に文字出現頻度順文字配列のサイズを取得して代入する。文字出現頻度順文字配列の最初の位置から最後の位置に代入された全てのデーターを1byteづつ取得して、ヘッダー配列の末尾に1byteづつ代入する。次に、ヘッダー配列の末尾に終端変数に代入されている終端文字のデーターを代入する。これで、ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を終了する。
【０１３６】
ステップ１０３に進む。ヘッダー配列の最初の位置から最後の位置までに代入された全てのデーターと数値化配列の最初の位置から最後の位置までに代入された全てのデーターをファイルに書き込む事で圧縮ファイルを作成する事とする。作成したファイル名を書き込む事が出来るサイズでstring型の変数を作成して、その作成した変数を圧縮フ名変数と呼ぶ事とする。圧縮対象ファイルの拡張子無しのファイル名を取得して、取得したファイル名の末尾に圧縮ファイルである目印として.ykmという拡張子を付けたファイル名を作成して、圧縮フ名変数に代入する。圧縮フ名変数に代入されたファイル名でバイナリー形式でファイルを作成して、作成したファイルに、ヘッダー配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込んで、全てのデーターを書き込み終わったら、次に、数値化配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込む事で圧縮ファイルの作成を行う。
【０１３７】
ステップ１０４に進む。ステップ１０４は、人為的な手動による操作または入力として以下の処理を行う。復元工程の説明を行う事とする。前記、圧縮工程で作成した圧縮ファイルを圧縮されていない元のファイルの状態に戻す工程の事を復元工程と呼ぶ事とする。復元工程で作成するファイルを復元ファイルと呼ぶ。図３の＜本発明のYKM形式圧縮プログラムを記録した記録媒体の操作画面図＞を参照の事。図符号Ｋの復元するファイルの指定ボックスにフルパスで復元する圧縮ファイルの名前を図符号Ｃのキーボードを使用して入力して指定する。図符号Ｃのキーボードを使わずに、図符号Ｄのマウスなどの入力デバイスを使用して、図符号Ｋの復元するファイルの指定ボックスに、フルパスで圧縮されたファイルの名称を入力して指定する事が出来る様に、図符号Ｋの復元するファイルの指定ボックスの横に図符号Ｓの参照ボタン３を作成してある。この図符号Ｓの参照ボタン３を図符号Ｄのマウスなどの入力デバイスでクリックするとファイルを選択して指定する事が出来る。次に、図符号Ｊの復元したファイルの拡張子指定ボックスに、復元工程で作成されたファイルに付ける拡張子を図符号Ｃのキーボードを使用して入力する。実施例では、「．ｔｘｔ」という拡張子を使用する事とした。図符号Ｌの復元したファイルを保存するホルダー指定ボックスに復元したファイルを保存する為のホルダーをフルパスで図符号Ｃのキーボードを使用して入力する事で指定する。図符号Ｃのキーボードを使わずに、図符号Ｄのマウスなどの入力デバイスを使用して、図符号Ｌの復元したファイルを保存するホルダー指定ボックスに、フルパスで圧縮されたファイルの名称を入力して指定する事が出来る様に、図符号Ｌの復元したファイルを保存するホルダー指定ボックスの横に図符号Ｔの参照ボタン４を作成してある。この図符号Ｔの参照ボタン４を図符号Ｄのマウスなどの入力デバイスでクリックするとホダーを選択して指定する事が出来る。その後、図符号Ｏの復元ボタンを図符号Ｄのマウスなどの入力デバイスを使用してクリックして復元工程をスタートさせる。
【０１３８】
ステップ１０５に進む。図符号Ｋの復元するファイルの指定ボックスに入力された圧縮ファイルを１byteづつ読み込む為に1byteの型で圧縮ファイルを１byteづつ読み込む事が出来るサイズで配列を作成する。作成した配列をＤ圧縮データー配列と呼ぶ事とする。図符号Ｋの復元するファイルの指定ボックスに入力された圧縮ファイルを１byteづつ読み込んでＤ圧縮データー配列の最初の位置から最後の位置までに1byteづつ代入する度に代入する位置をずらして代入する。
【０１３９】
1byteの型で２個のサイズの配列を作成する。この作成した配列をＤ作業用配列と呼ぶ事にする。Ｄ作業用配列の末尾にＤ圧縮データー配列の最初の位置に代入されたデーターと２番目に代入されたデーターを順番に1byteづつ代入する。16bitの型で変数を作成する。この作成した変数をＤヘッダーサイズ変数と呼ぶ事にする。データーを代入したＤ作業用配列を段落〔００４１〕の１６bit数値復元工程に送る。１６bit数値復元工程が終了したら、Ｄ１６ビット変数に代入された数値をＤヘッダーサイズ変数に代入する。
【０１４０】
1byteの型で変数を作成する。作成した変数をＤ調整変数と呼ぶ事とする。Ｄ調整変数にＤ圧縮データー配列の３番目の位置に代入された数値を代入する。
【０１４１】
Ｄ圧縮データー配列の４番目の位置に代入された数値とＤ圧縮データー配列の５番目の位置に代入された数値をＤ作業用配列の末尾に順番通りに1byteづつ上書きで代入する。16bitの型で変数を作成する。作成した変数をＤファイルサイズ変数と呼ぶ事とする。データーを代入したＤ作業用配列を段落〔００４１〕の１６bit数値復元工程に送る。１６bit数値復元工程が終了したら、Ｄ１６ビット変数に代入された数値をＤファイルサイズ変数に代入する。
【０１４２】
1byteの型で変数を作成する。作成した変数をＤBit暗号サイズ変数と呼ぶ事とする。ＤBit暗号サイズ変数にＤ圧縮データー配列の６番目の位置に代入された数値を代入する。1byteの型でＤBit暗号サイズ変数に代入された数値で配列を作成して、作成した配列をＤ文字出現頻度順文字配列と呼ぶ事とする。Ｄ文字出現頻度順文字配列の末尾に、Ｄ圧縮データー配列の７番目からＤBit暗号サイズ変数に代入された数値までの個数分の1byteのデーターを1byteづつ代入する。
【０１４３】
ステップ１０６に進む。1byteの型でＤBit暗号サイズ変数に代入された数値をサイズとして配列を作成する。作成した配列をＤBit暗号配列と呼ぶ事とする。ＤBit暗号文字配列に、0からＤBit暗号サイズ変数に代入された数値から1を引き算した数値を最大値として、最初の位置に0が割り当てられて順次数値が1づつ増加する順番で割り当てる事になるようにＤBit暗号文字配列の末尾に0から代入して代入する度に1づつ代入する数値を増加させて代入する位置を1byte分ずらして増加させた数値データーを代入する。ＤBit暗号文字配列に代入した1個のデーターをＤBit暗号と呼ぶ事とする。
【０１４４】
1byteの型で変数を作成する。作成した変数をＤ終端変数と呼ぶ事とする。Ｄ圧縮データー配列のＤBit暗号サイズ変数に代入された数値に8を足し算して得た数値の位置のデーターを取得してＤ終端変数に代入する。
【０１４５】
Ｄ圧縮データー配列のサイズからＤヘッダーサイズ変数に代入された数値を引き算した数値を求めて、引き算して求めた数値をＤサイズ数と呼ぶ事として、1byteの型でＤサイズ数のサイズで配列を作成して、作成した配列をＤ数値化配列と呼ぶ事とする。Ｄ圧縮データー配列のＤヘッダーサイズ変数に代入された数値の位置から最後の位置までに代入されたデーターを1byteづつＤ数値化配列の末尾に代入する。
【０１４６】
8byteのstring型で変数を作成する。作成した変数をＤ終端YKM変数と呼ぶ事にする。Ｄ終端変数を半角文字の0と1で構成された２進数の文字列に変換してＤ終端YKM変数に代入する。Ｄ終端YKM変数に代入された文字列を逆順に並べ替えた文字列を作成して、Ｄ終端YKM変数に上書きで代入する。Ｄ終端YKM変数に代入された文字列の文字数（桁数）を調べて8文字の場合は、何も行わない。Ｄ終端YKM変数に代入された文字列の文字数（桁数）を調べて8文字に満たない場合は、8文字（桁）になる様に文字列の下桁に半角の0という文字を8文字に満たない分だけ連結して文字列を作成して、作成した文字列をＤ終端YKM変数に上書きで代入する。
【０１４７】
8byteのstring型でＤ数値化配列のサイズで配列を作成する。作成した配列をＤ数値化前文字列配列と呼ぶ事にする。Ｄ数値化配列の最初の位置から最後の位置までに代入された全ての数値を半角文字の0と1で構成された２進数の文字列に変換してＤ数値化前文字列配列の末尾に代入する。Ｄ数値化前文字列配列の最初から最後までに代入された全ての文字列を検査して、8文字数（桁数）に満たない文字列があったら、文字列の左側に8文字数（桁数）に満たない分だけ0という文字を連結した文字列を作成して、Ｄ数値化前文字列配列の8文字数（桁数）に満たない文字列あった位置に上書きで代入する。
【０１４８】
Ｄ調整変数に代入された数値が0である場合と0より大きい値の場合とその他の場合とに分岐する。この分岐をＤ調整分岐と呼ぶ事にする。Ｄ調整分岐でＤ調整変数に代入された数値が0である場合は、何も行わない。Ｄ調整分岐でＤ調整変数に代入された数値が0より大きい値の場合は、Ｄ数値化前文字列配列の最後の位置に代入された文字列の下桁にある文字列をＤ調整変数に代入された数値分だけ削除する。Ｄ調整分岐でその他の場合は、何も行わない。ここまででＤ調整分岐を終了する。
【０１４９】
Ｄ数値化前文字列配列の最初の位置から最後の位置までに代入された全てのデーターを連結した文字列を代入できるサイズのstring型で変数を作成する。作成した変数をＤ全データー文字列変数と呼ぶ事とする。Ｄ全データー文字列変数にＤ数値化前文字列配列の最初の位置から最後の位置までに代入された全てのデーターを連結した文字列を作成して代入する。
【０１５０】
8byteのstring型でＤファイルサイズ変数に代入された数値をサイズとして配列を作成する。作成した配列をＤ詰込フッター配列と呼ぶ事とする。1byteの型で変数を２個作成する。作成した各々の変数をＤ区切変数、Ｄカウント変数と呼ぶ事とする。8byteのstring型で変数を作成する。作成した変数をＤ詰め込み枠変数と呼ぶ事とする。8byteのstring型で変数を作成する。作成した変数をＤ作業用変数と呼ぶ事とする。4byteのstring型で変数を作成する。この変数をＤフッター読込変数と呼ぶ事とする。Ｄ詰込フッター配列の最初の位置から最後の位置までにデーターを代入処理する。このＤ詰込フッター配列の最初の位置から最後の位置までにデーターを代入処理する工程をＤ詰込フッター作成処理工程と呼ぶ事とする。Ｄ詰込フッター作成処理工程の処理から繰り返し呼び出されて処理する工程を次の段落〔０１５１〕で説明する。次の段落〔０１５１〕で説明している処理工程は、他の処理工程から、指定されないかぎり処理されない処理工程である。処理の流れの途中で記述しているので注意が必要である。この段落〔０１５０〕の次に記述しているが、この段落〔０１５０〕から次の段落〔０１５１〕のＤ文字列加工処理を行うという指定をしていないので、この段落〔０１５０〕の次の処理は、段落〔０１５２〕となる。
【０１５１】
以下の処理をＤ文字列加工処理と呼ぶ事とする。ここをＤ文字列加工処理の開始点とする。Ｄ作業用変数に代入された文字列の下桁に0がある場合と下桁が1の場合とその他の場合に分岐する。この分岐をＤ作業分岐と呼ぶ事とする。Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を全て削除する。但し、Ｄ作業用変数に代入された文字列の全てが0である場合は、必ず１個0を残す事とする。この処理で作成した文字列をＤ作業用変数に上書きで代入する。Ｄ作業分岐でＤ作業用変数に代入された文字列の下桁が1の場合は、何も行わない。Ｄ作業分岐でその他の場合は、有りえないので何もしない。これでＤ作業分岐を終了する。Ｄ文字列加工処理を終了する。
【０１５２】
Ｄ詰込フッター作成処理工程では以下の繰り返し処理を行う。説明の都合上、ここをＤ詰込フッター作成処理工程の開始点とする。Ｄ区切変数に99を代入して初期化する。Ｄカウント変数に0を代入して初期化する。Ｄ作業用変数に空白文字を代入して初期化する。Ｄ詰め込み枠変数に空白文字を代入して初期化する。Ｄフッター読込変数に空白文字を代入して初期化する。Ｄ全データー文字列変数に代入された文字列を先頭位置から8文字数分読み込んでＤ詰め込み枠変数に代入し、続いて4文字分を読み込んでＤフッター読込変数に代入するという処理をＤ全データー文字列変数に代入された文字列の最後の位置まで行うので、説明の都合上、読み込んだ位置をＤ全データー文字列変数の注目位置と呼ぶ事とする。Ｄ全データー文字列変数の注目位置を進める場合は、Ｄ全データー文字列変数の注目位置を8byteまたは4byte進めるという表現で説明を行う事とする。Ｄ全データー文字列変数に代入されている文字列の最後の位置まで注目位置をずらす事で、Ｄ全データー文字列変数に代入されている文字列の最後の位置に相当する文字まで処理を終了したら、このＤ詰込フッター作成処理工程を終了する。
【０１５３】
Ｄ全データー文字列変数に代入された文字列の注目位置から8byte分の文字列を読み込んで、Ｄ詰め込み枠変数に代入する。注目位置を4byte進める。Ｄ全データー文字列変数に代入された文字列の注目位置から4byte分の文字列を読み込んで、Ｄフッター読込変数に代入する。Ｄフッター読込変数に代入された文字列の下桁に0がある場合と下桁が1である場合とその他の場合に分岐する。この分岐をＤ0検査分岐と呼ぶ事とする。
【０１５４】
Ｄ0検査分岐でＤフッター読込変数に代入された文字列の下桁に0がある場合は、下桁にある全ての0を削除する。但し、Ｄフッター読込変数に代入された文字列の全が0の場合は、必ず１個0を削除せずに残した文字列を作成して、作成した文字列をＤフッター読込変数に上書きで代入する。Ｄ0検査分岐でＤフッター読込変数に代入された文字列の下桁が1である場合は、何も行わない。Ｄ0検査分岐でその他の場合は、有りえないので何も行わない。これでＤ0検査分岐を終了する。Ｄフッター読込変数に代入された文字列を全て逆順に並べた文字列を作成して、作成した文字列を１０進数の数値に変換して、変換した数値をＤ区切変数に代入する。
【０１５５】
Ｄ区切変数に代入された数値が1以上7以下の場合とＤ区切変数に代入された数値が8以上13以下の場合とＤ区切変数に代入された数値が14または15の場合とＤ区切変数に代入に代入された数値が0の場合とその他の場合に分岐する。この分岐をＤ区切分岐と呼ぶ事とする。
【０１５６】
Ｄ区切分岐でＤ区切変数に代入された数値が1以上7以下の場合は、２文字の文字がＤ区切変数に代入された数値を区切り位置としてＤ詰め込み枠変数に代入されている事になるのでＤ区切変数に代入された数値を使用してＤ詰め込み枠変数に代入された文字列を２文字に分けて配列に代入するという処理を行う。Ｄ詰め込み枠変数に代入された文字列をＤ区切変数に代入された数値で切り分けて、切り分けた前方の文字列をＤ作業用変数に代入する。次に段落〔０１５１〕のＤ文字列加工処理を行う。
【０１５７】
Ｄ文字列加工処理が終了したら、Ｄ詰込フッター配列の末尾にＤ作業用変数に代入された文字列を代入する。Ｄ詰め込み枠変数に代入された文字列をＤ区切変数に代入された数値で切り分けて、切り分けた後方の文字列をＤ作業用変数に代入する。段落〔０１５１〕のＤ文字列加工処理を行う。Ｄ文字列加工処理が終了したら、Ｄ詰込フッター配列の末尾にＤ作業用変数に代入された文字列を代入する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１５８】
Ｄ区切分岐でＤ区切変数に代入された数値が8以上13以下の場合は、Ｄ区切変数に代入された数値が8の場合と9の場合と10の場合と11の場合と12の場合と13の場合とその他の場合に分岐する。この分岐をＤ区切Ａ分岐と呼ぶ事とする。
【０１５９】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が8の場合は、１桁の文字が３文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から３文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６０】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が9の場合は、１桁の文字が４文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から４文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６１】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が10の場合は、１桁の文字が５文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から５文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６２】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が11の場合は、１桁の文字が６文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から６文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６３】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が12の場合は、１桁の文字が７文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から７文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６４】
Ｄ区切Ａ分岐でＤ区切変数に代入された数値が13の場合は、１桁の文字が８文字の場合である。Ｄ詰め込み枠変数に代入された文字列を1byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を1byteづつずらして読み込んでＤ詰込フッター配列の末尾に1byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から８文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６５】
Ｄ区切Ａ分岐でその他の場合は、有りえないので何も行わない。これでＤ区切Ａ分岐を終了する。
【０１６６】
Ｄ区切分岐でＤ区切変数に代入された数値が14または15の場合は、Ｄ区切変数に代入された数値が14の場合と15の場合とその他の場合に分岐する。この分岐をＤ区切Ｂ分岐と呼ぶ事とする。
【０１６７】
Ｄ区切Ｂ分岐でＤ区切変数に代入された数値が14の場合は、２桁の文字が３文字の場合である。Ｄ詰め込み枠変数に代入された文字列を2byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を2byteづつずらして読み込んでＤ詰込フッター配列の末尾に2byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から６文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６８】
Ｄ区切Ｂ分岐でＤ区切変数に代入された数値が15の場合は、２桁の文字が４文字の場合である。Ｄ詰め込み枠変数に代入された文字列を2byte分づつ読み込んでＤ詰込フッター配列の末尾に代入する度に、Ｄ詰め込み枠変数に代入された文字列を読み込む位置を2byteづつずらして読み込んでＤ詰込フッター配列の末尾に2byteづつ代入する。この処理をＤ詰め込み枠変数に代入された文字列の先頭の位置に在る文字から８文字分行ったら、この処理を終了する。段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１６９】
Ｄ区切Ｂ分岐でその他の場合は、有りえないので何も行わない。これでＤ区切Ｂ分岐を終了する。
【０１７０】
Ｄ区切分岐でＤ区切変数に代入された数値が0の場合は、詰め込み枠に１文字のみ代入している場合の開始点である事を意味している場合である。従って、最後の位置に終端文字が記録されているので終端文字まで文字が幾つ在るかをカウントする。カウントするには、以下の繰り返し処理を行う。この繰り返し処理をＤ連続カウント処理と呼ぶ事とする。Ｄ連続カウント処理では、一回検査する度に、Ｄ全データー文字列変数の注目位置を8byteづつずらして読み込んで、読み込んだ文字列をＤ作業用変数に代入する。段落〔０１５１〕のＤ文字列加工処理を行う。Ｄ文字列加工処理が終了したら、Ｄ作業用変数に代入された文字列とＤ終端YKM変数に代入された文字列を比較して同じ文字列でない場合にカウントするという処理をＤ作業用変数に代入された文字列とＤ終端YKM変数に代入された文字列が同じ文字列だと確認できるまでこの繰り返し処理を行う。Ｄ連続カウント処理が終了したら、Ｄカウント変数にカウントした数値を代入する。Ｄ連続カウント処理でずらした注目位置を元の位置に戻す。Ｄカウント変数に代入された数値が0の場合と1以上の場合とその他の場合に分岐する。この分岐をＤ連続分岐と呼ぶ事とする。
【０１７１】
Ｄ連続分岐でＤカウント変数に代入された数値が0の場合は、文字が連続していない場合である。Ｄ作業用変数にＤ詰め込み枠変数に代入された文字列を代入する。段落〔０１５１〕のＤ文字列加工処理を行う。Ｄ文字列加工処理が終了したら、Ｄ作業用変数に代入された文字列をＤ詰込フッター配列の末尾に代入する。ここで、Ｄ全データー文字列変数の注目位置を8byte進める。（終端文字の分多く進めるなければならないから）段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１７２】
Ｄ連続分岐でＤカウント変数に代入された数値が1以上の場合は、文字が連続している場合である。Ｄ作業用変数にＤ詰め込み枠変数に代入された文字列を代入する。段落〔０１５１〕のＤ文字列加工処理を行う。Ｄ文字列加工処理が終了したら、Ｄ作業用変数に代入された文字列をＤ詰込フッター配列の末尾に代入する。Ｄカウント変数に代入された数値分以下の処理を繰り返し行う。この繰り返し処理をＤ連続代入処理と呼ぶ事とする。Ｄ連続代入処理では、Ｄ全データー文字列変数の注目位置のデーターを取得して、Ｄ作業用変数に代入する。段落〔０１５１〕のＤ文字列加工処理を行う。Ｄ文字列加工処理が終了したら、Ｄ作業用変数に代入された文字列をＤ詰込フッター配列の末尾に代入する。Ｄ全データー文字列変数の注目位置を8byte進める。ここまでの処理をＤカウント変数に代入された数値分繰り返して処理を行ったら、Ｄ連続代入処理を終了する。（終端文字の分多く進めるなければならないからＤ全データー文字列変数の注目位置を8byte戻す必要は無い）段落〔０１５２〕に記述したＤ詰込フッター作成処理工程の開始点に処理を戻す事で繰り返し処理を行う。
【０１７３】
Ｄ連続分岐でその他の場合は、有りえないので何も行わない。これでＤ連続分岐を終了する。
【０１７４】
Ｄ区切分岐でその他の場合は、有りえないので何も行わない。これでＤ区切分岐を終了する。
【０１７５】
Ｄ詰込フッター作成処理工程は、ここまでの処理を行うものとする。Ｄ全データー文字列変数に代入されている文字列の最後の位置に相当する文字まで処理を終了したら、このＤ詰込フッター作成処理工程を終了する。
【０１７６】
8byteのstring型でＤ詰込フッター配列のサイズで配列を作成する。作成した配列をＤ２進数配列と呼ぶ事とする。Ｄ詰込フッター配列の最初の位置から最後の位置までに代入された全てのデーターを8byteづつ読み込んで、読み込んだ文字列を逆順に並べ替えて、並べ替えた文字列をＤ２進数配列の末尾に代入する。
【０１７７】
1byteの型でＤ２進数配列のサイズで配列を作成する。Ｄ詰込枠数値化配列と呼ぶ事とする。Ｄ２進数配列の最初の位置から最後の位置までに代入されている全ての文字列を8byteづつ読み込んで、読み込んだ文字列を１０進数に変換してＤ詰込枠数値化配列の末尾に代入する。
【０１７８】
Ｄ詰込枠数値化配列に代入されている全ての数値は、まだ、ＤBit暗号のままなので暗号を元の普通の文字コードに復元する処理を行う必要がある。ＤBit暗号を使用して圧縮ファイルから読み込んだ全てのデーターを暗号化される前の普通の文字コードに戻す工程を行う。普通の文字コードに戻す工程の事を言い換えると、Ｄ全復元データー配列の最初の位置から最後の位置までの全ての位置にデーターを代入する工程を行う事である。この工程をＤ全復元データー作成工程と呼ぶ事とする。Ｄ全復元データー作成工程では以下の処理を行う。1byteの型でＤ詰込枠数値化配列のサイズの配列を作成する。作成した配列をＤ全復元データー配列と呼ぶ事とする。Ｄ詰込枠数値化配列の最初の位置から最後の位置までに代入されたデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査する。比較検査する際のＤ詰込枠数値化配列に代入されているデーターの位置をＤ詰込枠数値化配列の注目配列と仮称する事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、Ｄ詰込枠数値化配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと同じであったＤ文字出現頻度順文字配列のデーターが代入されているＤ文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をＤBit暗号配列の配列番号として使用してＤBit暗号配列に代入されたデーターを取得して配列Ａ番号の位置に相当するＤ全復元データー配列の位置に代入する。次に、Ｄ詰込枠数値化配列の注目配列を一つずらして次のＤ詰込枠数値化配列の注目配列とする事で次の注目配列のデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、Ｄ詰込枠数値化配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、Ｄ詰込枠数値化配列の注目配列に代入されたデーターと同じであったＤ文字出現頻度順文字配列のデーターが代入されているＤ文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をＤBit暗号配列の配列番号として使用してＤBit暗号配列に代入されたデーターを取得して配列Ａ番号の位置に相当するＤ全復元データー配列の位置に代入するという処理を行うという繰り返し処理によって、Ｄ詰込枠数値化配列の最初の位置から最後の位置までに代入されたデーターとＤ文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して、Ｄ全復元データー配列の最初の位置から最後の位置までのデーターを全て代入し終わったら、Ｄ全復元データー作成工程を終了する。
【０１７９】
ステップ１０７に進む。図符号Ｋの復元するファイルの指定ボックスから、ファイル名だけを抜き出して、図符号Ｊの復元したファイルの拡張子指定ボックスに入力されたファイルの拡張子をファイル名の後方に連結した文字列を作成して、作成した文字列をファイル名として使用して、ファイルを空の状態で文字コードを指定して作成する。実施例では、文字コードは、ANSIコードを指定する事とした。ANSIコードは、圧縮対象ファイルで使用されていた文字コードである。Ｄ全復元データー配列の最初の位置から最後の位置までに代入された全てのデーターをバイナリー形式で作成したファイルの末尾に1byteづつ書き加える事で復元ファイルを作成する。ここで作成したファイルを復元ファイルと呼ぶ事とする。
【０１８０】
作成した復元ファイルの保存先は、図符号Ｌの復元したファイルを保存するホルダー指定ボックスで指定されたホルダーに保存する。保存した復元ファイルを文字コードの種別を指定して読み込んで図符号Ｍの復元したファイルの内容を表示するボックスに圧縮ファイルを復元したファイルから読み込んだテキスト文字列を全て表示する。
【産業上の利用可能性】
【０１８１】
コンピューター用のファイルを圧縮するソフトウェア、テレビジョンの画像と音声の圧縮と復元、携帯電話の音声の圧縮と復元、いわゆるスマートフォンと呼ばれる通信機器の画像と音声の圧縮と復元、無線通信の音声の圧縮と復元、ラジオの音声の圧縮と復元、インターネットでの通信データーの圧縮と復元、インターネットテレビでの画像と音声の圧縮と復元、電子書籍で使用しているファイルの圧縮と復元、コンピューターのＯＳの機能としてデーター圧縮の機能を添付する等を行う事で通信速度の向上を図る場合などが考えられる。これに関連して考えられるものとして、インターネットで使用するホームページを圧縮したファイルとして利用する場合である。ホームページを圧縮した形でサーバーにアップして使用する場合、コンピューターのＯＳとして圧縮と復元を行う機能が備わっている事がインターネットの利用者にとって使い勝手の良いシステムになると考えている。また、インターネット用のモデムやルーターのファームウェアとしての利用も考えられる。
【符号の説明】
【０１８２】
Ａ：モニター
Ｂ：コンピューター本体
Ｃ：キーボード
Ｄ：マウス
Ｅ：人為的な手動による操作または入力
Ｆ：YKM形式圧縮プログラムを記録した記録媒体とコンピューターによる自動処理工程
Ｇ：圧縮するファイルの指定ボックス
Ｈ：圧縮したファイルを保存するホルダー指定ボックス
Ｉ：圧縮対象ファイルの内容を表示するボックス
Ｊ：復元したファイルの拡張子指定ボックス
Ｋ：復元するファイルの指定ボックス
Ｌ：復元したファイルを保存するホルダー指定ボックス
Ｍ：復元したファイルの内容を表示するボックス
Ｎ：圧縮ボタン
Ｏ：復元ボタン
Ｐ：終了ボタン
Ｑ：参照ボタン１
Ｒ：参照ボタン２
Ｓ：参照ボタン３
Ｔ：参照ボタン４
【図１】
2014027573.tif 000003
【図２】
2014027573.tif 000004
【図３】
2014027573.tif 000005
【図４】
2014027573.tif 000006
【図５】
2014027573.tif 000007
【手続補正書】
【提出日】平成24年10月12日(2012.10.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
以下に、配列や変数などを作成すると記述しているが配列や変数などが作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、以下に、配列の末尾にデーターを代入すると記述している場合があるが、配列の最初の位置に代入する場合でも配列の末尾に代入するという記述をする事があるとし、以下の分岐処理に於いて分岐条件に該当しない場合どうするかを記述していない場合があるが、分岐条件に該当しない場合どうするかを記述していない場合は、何も処理を行わないという事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、ASCIIコード２文字で１文字を表す全角文字とASCIIコード１文字で表す半角文字のこと）をテキスト文字と呼んだり、テキスト文字の事を文字コードまたは、文字と呼んだりする事があるとし、また、２進数の数値を２進数と呼んだり、１０進数の数値を１０進数と略して呼ぶ事がある事とし、データーを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに配列に代入する事とし、以下に、配列の型とは、配列に代入する事ができる１個のデーターが使用するコンピューターに在る本体メモリーで使用するbit数または、byte数を意味するものであり、変数にも同じく型があるが、変数の型も配列の型と全く同じであるとし、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う事とし、string型で配列や変数を作成して、作成したstring型の配列や変数に文字列や文字を代入すると自動的に文字コードに変換されて配列や変数に代入されるものであるが、この様なstring型の配列や変数の事を文字列を代入する事が出来る配列や変数と表現する事とし、文字列を代入する事が出来る配列を作成する場合は、「何bitのstring型で幾つのサイズで配列を作成する」という表現で配列を作成する事とし、文字列を代入する事が出来る変数を作成する場合は、「何byteまたは、何bitのstring型で変数を作成する」という表現をする事とし、string型ではない配列を作成する場合は、「何bitの型で幾つのサイズで配列を作成する」という表現をする事とし、string型ではない変数を作成する場合は、「何bitの型で変数を作成する」という表現で変数を作成する事とし、以下に、配列番号とは、配列に代入されるデーターの位置を示す番号の事を言うという事とし、配列のデーターを代入できる領域の最初の位置に付けられる番号は、0番となり、順次１づつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付されるものとし、以下に、65535byteまでのテキスト文字列が書かれたファイルだけを対象に圧縮ファイルを作成する事ができるものとし、圧縮ファイルを作成する為の圧縮対象ファイルと呼ぶ事とし、以下の処理で圧縮対象ファイルを圧縮する工程を行う事とするが、圧縮対象ファイルを圧縮する工程を圧縮工程と呼ぶ事とし、圧縮工程での規則として詰め込み枠は、8bitで作成し、フッター部は、4bitで作成し、終端文字は、8bitで作成する事とし、この規則で以下の処理を進めて圧縮ファイルを作成する事とし、圧縮対象ファイルを1byteの型で1byteづつ読み込むのに必要なサイズの配列を作成し、作成した配列を圧縮対象配列と呼ぶ事とし、圧縮対象ファイルをバイナリー形式で開いて1byteづつデーターを読み込んで、読み込んだ数値データーを圧縮対象配列の最初の位置から1byteづつ圧縮対象配列の最後の位置までに代入する度に1byte分づつ代入する位置をずらして代入し、3byteのstring型で２５６個のサイズで配列を作成し、作成した配列を仮全文字種配列と呼ぶ事とし、仮全文字種配列にデーターを代入する工程を行うが、仮全文字種配列データー代入処理と呼ぶ事とし、仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較して仮全文字種配列データー代入処理を行う事とするが、仮全文字種配列の配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査する仮全文字種配列の配列番号の事を仮全文字種配列の注目配列番号と呼ぶ事とし、仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して、仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の最初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入し、仮全文字種配列の注目配列番号の示す位置に圧縮対象配列のデーターを代入したら、仮全文字種配列の注目配列番号を一つずらして次の仮全文字種配列の注目配列番号と圧縮対象配列の最初の位置から最後までの位置に代入されたデーターを比較検査して仮全文字種配列の注目配列番号と同じ数値が圧縮対象配列の最初の位置から最後までの位置に代入されていたら、仮全文字種配列の注目配列番号が示す位置に圧縮対象配列の仮全文字種配列の注目配列番号と同じ数値が代入されていた位置のデーターを3byteの文字列に変換して代入するという処理を繰り返して仮全文字種配列の最初の位置に相当する配列番号から最後の位置に相当する配列番号までの全ての注目配列番号を検査処理する事で仮全文字種配列データー代入処理を終了し、仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーター数をカウントし、カウントした数値を全数１と呼ぶ事とし、3byteのstring型で全数１のサイズで配列を作成して、作成した配列を出現文字配列と呼ぶ事とし、出現文字配列の最初の位置から最後の位置までにデーターを代入する処理を出現文字配列データー代入処理と呼ぶ事とし、仮全文字種配列の最初の位置から最後の位置に代入されている全てのデーターを検査して空白でないデーターを全て抽出して出現文字配列の最初の位置から最後の位置までに抽出したデーターを代入する度に3byte分づつずらして3byte分づつ代入し、抽出したデーターを代入し終わったら、出現文字配列データー代入処理を終了し、1byteの型で全数１のサイズで配列を作成し、作成した配列を出現回数配列と呼ぶ事とし、出現文字配列の最初の位置から最後の位置までに代入された各々のデーターが圧縮対象配列で何回使われているかという回数を代入する事とするが、この出現回数配列の最初の位置から最後の位置までに��ーターを代入する処理を出現回数処理と呼ぶ事とし、出現回数処理では、出現文字配列に代入された全てのデーターごとに、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、カウントした回数を出現回数配列の最初の位置から最後の位置までに代入する度に代入する位置を1byte分づつずらして1byte分づつ代入するという処理を行う事とするが、検査している出現文字配列に代入されたデーターを出現文字配列の注目配列と呼び、出現文字配列の注目配列と同じ位置の出現回数配列の位置を出現回数配列の注目配列と呼ぶ事とし、出現文字配列の注目配列のデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入し、出現回数配列の注目配列にカウントした回数を代入し終わったら、出現文字配列の注目配列の位置を一つずらして次の配列位置に代入されているデーターと圧縮対象配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら回数をカウントして、出現回数配列の注目配列にカウントした回数を代入するという処理を繰り返して行い、出現文字配列の最初の位置から最後の位置に代入されたデーターを検査処理し終わったら、出現回数処理を終了する事とし、出現回数配列の最初の位置から最後の位置までに代入された全てのデーターを基に出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを出現頻度が多い順にソートし、ソートする事で出現頻度が多い順にソートされた出現文字配列が作られる事になるが、1byteの型で出現文字配列のサイズで配列を作成し、作成した配列を文字出現頻度順文字配列と呼ぶ事とし、文字出現頻度順文字配列の最初の位置から最後の位置までに、出現頻度が多い順にソートされた出現文字配列の最初の位置から最後の位置までに代入された全てのデーターを3byteづつ取得して1byteで表現される数値データーに変換して、代入する度に1byteづつずらして代入し、1byteの型で出現文字配列または、出現回数配列または、文字出現頻度順文字配列と同じサイズで配列を作成し、作成した配列をBit暗号配列と呼ぶ事とし、0から文字出現頻度順文字配列のサイズから1を引き算した数値を最大値として、最初の位置に0が割り当てられて順次数値が1づつ増加する順番で割り当てる事になるようにBit暗号文字配列の末尾に0から代入して代入する度に1づつ代入する数値を増加させて、代入する位置を1byte分ずらして増加させた数値データーを代入し、Bit暗号配列の最初の位置から最後の位置までに代入された全てのデーターの個々の数値をBit暗号と呼ぶ事とし、Bit暗号文字配列の最初の位置から最後の位置までに数値を代入する工程をBit暗号化行程と呼ぶ事とし、これで、Bit暗号化行程を終了する事とし、終端文字を選択する工程を行う事とするが、この工程を終端算出処理工程と呼ぶ事とし、終端算出処理工程では、以下の処理を行う事とし、3byteのstring型で２５６個のサイズで配列を作成し、この作成した配列をソート過程配列と呼ぶ事とし、ソート過程配列の最初の位置から最後の位置までにデーターを代入する処��を行う事とし、以下にソート過程配列の最初の位置から最後の位置までの配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して更に検査結果に応じて処理を行うという処理を行うが、検査中のソート過程配列の配列番号を注目配列番号と呼ぶ事とし、注目配列番号の１個に対して文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い、文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行い終わったら、次の注目配列番号に検査対象をずらす事で次の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較検査して処理を行うという処理を繰り返して行う事で、ソート過程配列の最初の位置から最後の位置まで文字出現頻度順文字配列に代入されている全データーと比較検査処理を行うものとし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に、同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入し、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査している注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、次の注目配列番号の検査処理は、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じであったら、ソート過程配列の同じであった注目配列番号に相当するソート過程配列の位置に同じであった文字出現頻度順文字配列に代入されているデーターを3byteの文字列の数値に変換して代入し、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行う事とし、ソート過程配列の注目配列番号と文字出現頻度順文字配列に代入されている全データーを比較して同じデーターが無かったら、検査して
いる注目配列番号に相当するソート過程配列の位置には何も代入せずに、ソート過程配列の配列番号を一つずらす事で注目配列番号を次の注目配列番号に変化させて次の注目配列番号の検査処理を行うという処理をソート過程配列の最初の位置から最後の位置までの全ての位置に代入されたデーターに対して繰り返して処理を行う事でソート過程配列の最初の位置から最後の位置までにデーターを代入する処理を終了し、ソート過程配列の中から終端文字に使える文字があるかどうかを検査する工程を終端検査繰り返し処理と呼ぶ事とし、終端検査繰り返し処理では、以下の処理を行う事とし、1byteの型で終端変数を作成し、検査結果を代入する為の1byteの型で変数を作成して、作成した変数を終端検査変数と呼ぶ事とし、ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号を探し出して、探し出した配列番号の中から最も配列番号が255に近い数値（255を含む）の配列番号を探し出して、その配列数値を終端文字の文字コードとし、終端変数に代入し、終端検査変数に0という数値を代入して終端検査繰り返し処理を終了し、ソート過程配列の配列番号が大きい数値の方から順に小さい方に向かって検査して、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの内、データーが何も代入されていない配列番号が存在しなかった場合は、終端検査変数に1という数値を代入して終端検査繰り返し処理を終了し、終端検査変数に代入されている数値が１の場合と0の場合とに分岐し、この分岐を終端文字決定分岐と呼ぶ事とし、終端文字決定分岐で終端検査変数に代入されている数値が１の場合は、ソート過程配列の最後の位置から最初の位置までに代入されている全てのデーターの中から、最も出現頻度が少ない文字コードを抽出して、抽出した文字コードを終端文字として決定して数値として終端変数に代入し、終端検査変数に代入されている数値が0の場合は、既に終端文字が終端検査繰り返し処理で決定されて、終端変数に代入されているので何も行わない事とし、終端文字決定分岐を終了し、8byteのstring型で変数を作成して、作成した変数をYKM終端変数と呼ぶ事とし、終端変数に代入された数値を半角の0と1の文字列で表現された２進数に変換して、変換した文字列の２進数を逆順に並べ替えてYKM終端変数に代入し、YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁の場合は、何も行わないが、YKM終端変数に代入した文字列で出来た２進数の数値の桁数が8桁に満たない場合は、YKM終端変数に代入した文字列で出来た２進数の最後に8桁に満たない分だけ下桁に半角の0という文字を連結した文字列を作成して、YKM終端変数に上書きで代入し、終端算出処理工程を終了し、Bit暗号を使用して圧縮対象ファイルから読み込んだ全てのデーターを暗号化する工程を行うが、この工程をBit暗号YKMライン作成工程と呼ぶ事とし、Bit暗号YKMライン作成工程では、以下の処理を行う事とし、1byteの型で圧縮対象配列のサイズで配列を作成して、作成した配列をBit配列と呼ぶ事とし、Bit配列の最初の位置から最後の位置までの全ての位置にデーターを代入する工程を行うが、この工程をBit暗号ライン作成工程と呼ぶ事とし、Bit暗号ライン作成工程では以下の処理を行う事とし、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査するが、比較検査する際の圧縮対象配列に代入されているデーターの位置を圧縮対象配列の注目配列と仮称する事とし、圧縮対象配列の注目配列に代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入し、次に、圧縮対象配列の注目配列を一つずらして次の圧縮対象配列の注目配列とする事で次の注目配列のデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して同じデーターであったら、圧縮対象配列の注目配列の配列番号を取得して、取得した配列番号を配列Ａ番号と呼ぶ事とし、圧縮対象配列の注目配列に代入されたデーターと同じであった文字出現頻度順文字配列のデーターが代入されている文字出現頻度順文字配列の位置を示す配列番号を取得し、この取得した配列番号を配列Ｂ番号と呼ぶ事とし、配列Ｂ番号をBit暗号文字配列の配列番号として使用してBit暗号文字配列に代入されたデーターを取得して配列Ａ番号の位置に相当するBit配列の位置に代入するという処理を行うという繰り返し処理によって、圧縮対象配列の最初の位置から最後の位置までに代入されたデーターと文字出現頻度順文字配列の最初の位置から最後の位置までに代入されたデーターを比較検査して、Bit配列の最初の位置から最後の位置までのデーターを全て代入し終わったら、Bit暗号ライン作成工程を終了し、8byteのstring型でBit配列のサイズで配列を作成し、作成した配列をBit暗号YKMライン配列と呼ぶ事とし、Bit配列の最初の位置から最後の位置までに代入された全てのデーターを配列に代入されている順番どおりに半角の0と1という文字列で表現した２進数に変換して、２進数に変換した文字列で出来た数値を全て逆順に並べ替えてBit暗号YKMライン配列の最初の位置から最後の位置までにBit配列に代入されているデーターの順番通りに代入し、これで、Bit暗号YKMライン作成工程を終了し、詰め込み枠とフッター部と終端変数の値を代入する為の配列を作成するが、この配列を詰込フッター配列と呼ぶ事とし、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターを詰め込み枠とフッター部と終端文字という形のデーター構成に作成しなおした場合に必要になるデーター数を全数２と呼ぶ事とし、詰込フッター配列は、8byteのstring型で全数２のサイズで配列を作成し、1byteの型で変数を２個作成し、作成した２個���変数を各々、先読み桁数１変数、先読み桁数２変数と呼ぶ事とし、1byteの型で変数を１個作成し、作成した変数を検査変数と呼ぶ事とし、1byteの型で変数を３個作成し、作成した３個の変数を各々第１変数、第２変数、第３変数と呼ぶ事とし、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の繰り返し処理を行うが、この繰り返し処理を詰込フッター文字列作成工程と呼ぶ事とし、ここを詰込フッター文字列作成工程の開始点と呼ぶ事とし、先読み桁数１変数と先読み桁数２変数と検査変数と第１変数と第２変数と第３変数の６個の変数に0という数値を代入する事で初期化し、Bit暗号YKMライン配列の最初の位置から最後の位置までに代入された全てのデーターに対して以下の処理を行うが、処理を行うBit暗号YKMライン配列に代入されているデーターの位置をBit暗号YKMライン配列の注目配列と言う事とし、Bit暗号YKMライン配列の注目配列の位置が最後の位置を越えていないかどうかを検査して、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えている場合は、詰込フッター文字列作成工程を終了する事とし、Bit暗号YKMライン配列の注目配列の位置が最後の位置を超えていない場合は、以下の詰込フッター文字列作成工程の処理を行う事とし、先読み桁数１変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入し、Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来るかどうかを検査して、Bit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合とBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合とその他の場合に分岐し、この分岐を最後分岐と呼ぶ事とし、最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来る場合は、Bit暗号YKMライン配列の注目配列を一つ進める事とし、先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入し、先読み桁数２変数にBit暗号YKMライン配列の注目配列に代入された文字列の文字数を算出して代入したら、Bit暗号YKMライン配列の注目配列の位置を一つ戻すという処理を行う事とし、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合と違う場合とその他の場合に分岐し、この分岐を先読み桁数分岐と呼ぶ事とし、先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して同じ場合は、検査変数に１を代入し、先読み桁数分岐の先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値を比較して違う場合は、検査変数に0を代入し、先読み桁数分岐でその他の場合は、有りえないので何も行わない事とし、これで先読み桁数分岐を終了し、最後分岐のBit暗号YKMライン配列の注目配列を一つ進めて処理する事が出来ない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程を終了する事とし、最後分岐でその他の場合は、有りえないので何も行わない事とし、ここで、最後分岐を終了し、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合と、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合とその他の場合に分岐し、この分岐を桁数分岐と呼ぶ事とし、桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8以下の数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値が各々8より少ない場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐し、この分岐を連続１分岐と呼ぶ事とし、連続１分岐で検査変数に代入された数値が1の場合は、1byteの型で変数を作成し、作成した変数をカウント１変数と呼ぶ事とし、Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウントした事によって得られた数値を連続していた回数（文字列の個数）として代入し、同じ文字数の文字列が幾つ連続しているかによって分岐し、２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐し、この分岐をカウント１分岐と呼ぶ事とし、カウント１分岐で２文字のみ同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMラ
イン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進めて、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント１分岐で３文字以上同じ文字数の文字列が連続している場合は、先読み桁数１変数に代入されている数値が3または4である場合と先読み桁数１変数に代入されている数値が2以下の数値である場合とその他の場合に分岐し、この分岐を個数分岐と呼ぶ事とし、個数分岐で先読み桁数１変数に代入されている数値が3または4である場合は、カウント１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ以下の処理を繰り返す事とし、この繰り返し処理を２文字書込処理と呼ぶ事とし、２文字書込処理では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、ここまでの処理をカウ��ト１変数に代入されている数値を２で割った数値の余りを切り捨てた回数分だけ処理を繰り返したら、２文字書込処理を終了し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、個数分岐で先読み桁数１変数に代入されている数値が2以下の数値である場合は、以下の処理を行う事とし、カウント１変数に代入されている数値に先読み桁数１変数に代入されている数値を掛け算して得た数値を第１変数に代入し、第１変数に代入された数値を8で割り算を行って得た数値の小数点以下を切り捨てた数値を第２変数に代入し、第２変数に代入された数値が1以下の場合と2以上の場合とその他の場合に分岐し、この分岐をループ代入分岐と呼ぶ事とし、ループ代入分岐で第２変数に代入された数値が1以下の場合は、カウント１変数に代入されている数値を第３変数に代入し、8byteのstring型で変数を作成して、作成した変数を連結１変数と呼ぶ事とし、第３変数に代入された数値分以下の処理を繰り返すが、この繰り返し処理を連結文字列作成１工程と呼ぶ事とし、連結文字列作成１工程では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結１変数に代入するが、連結１変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入し、ここまでの処理を第３変数に代入された数値分繰り返したら、連結文字列作成１工程を終了し、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結１変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結１変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合に分岐し、この分岐をループ代入フッター１分岐と呼ぶ事とし、ループ代入フッター１分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を１文字連続Ａ分岐と呼ぶ事とし、１文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する事とし、１文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、１文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで１文字連続Ａ分岐を終了し、ループ代入フッター１分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を２文字連続Ａ分岐と呼ぶ事とし、２文字連続Ａ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する事とし、２文字連続Ａ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、２文字連続Ａ分
岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、２文字連続Ａ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで２文字連続Ａ分岐を終了し、ループ代入フッター１分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入フッター１分岐を終了し、ループ代入分岐で第２変数に代入された数値が2以上の場合は、カウント１変数に代入されている数値を第２変数に代入されている数値で割り算して得た数値の小数点以下を切り捨てた数値を第３変数に代入し、以下の繰り返し処理を回数ループ代入処理工程と呼ぶ事し、回数ループ代入処理工程では、以下の処理を第２変数に代入された数値分だけ繰り返し処理を行う事とし、8byteのstring型で変数を作成して、作成した変数を連結２変数と呼ぶ事とし、第３変数に代入された数値分だけ以下の処理を繰り返す事とし、この繰り返し処理を連結文字列作成２工程と呼ぶ事とし、連結文字列作成２工程では、以下の処理を行う事とし、Bit暗号YKMライン配列の注目配列の位置に代入された文字列を連結２変数に代入するが、連結２変数に既に文字列が代入されている場合は、代入されている文字列の末尾に連結して文字列を代入するという規則で代入し、ここまでの処理を第３変数に代入された数値分だけ繰り返したら、連結文字列作成２工程を終了し、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）の場合は、そのまま詰込フッター配列の末尾に代入し、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結２変数に代入された文字列の文字数（桁数）が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を連結２変数に代入された文字列の下桁に連結した文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合と先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合とその他の場合とに分岐し、この分岐をループ代入フッター２分岐と呼ぶ事とし、ループ代入フッター２分岐で先読み桁数１変数に代入された数値が1で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を１文字連続Ｂ分岐と呼ぶ事とし、１文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合と5の場合と6の場合と7の場合と8の場合とその他の場合に分岐する事とし、１文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に8という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に9という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が5の場合は、先読み桁数１変数に10という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が6の場合は、先読み桁数１変数に11という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が7の場合は、先読み桁数１変数に12という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成し��文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値が8の場合は、先読み桁数１変数に13という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、１文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないので何も行わない事とし、ここで１文字連続Ｂ分岐を終了し、ループ代入フッター２分岐で先読み桁数１変数に代入された数値が2で、第３変数に代入された数値が3以上の場合は、第３変数に代入された数値によって処理を分岐し、この分岐を２文字連続Ｂ分岐と呼ぶ事とし、２文字連続Ｂ分岐で第３変数に代入された数値が3の場合と4の場合とその他の場合に分岐する事とし、２文字連続Ｂ分岐で第３変数に代入された数値が3の場合は、先読み桁数１変数に14という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、２文字連続Ｂ分岐で第３変数に代入された数値が4の場合は、先読み桁数１変数に15という数値を上書きで代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、２文字連続Ｂ分岐で第３変数に代入された数値がその他の場合は、有り得ないの��何も行わない事とし、ここで２文字連続Ｂ分岐を終了し、ここまでの処理を回数ループ代入処理工程と呼ぶが、この回数ループ代入処理工程は、第２変数に代入された数値分だけ繰り返し処理を行ったら、回数ループ代入処理工程を終了する事とし、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、ループ代入フッター２分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入フッター２分岐を終了し、ループ代入分岐でその他の場合は、有りえないので何も行わない事とし、ここでループ代入分岐を終了し、個数分岐でその他の場合は、有りえないので何も行わない事とし、ここで個数分岐を終了し、カウント１分岐でその他の場合は、有りえないので何も行わない事とし、ここでカウント１分岐を終了し、連続１分岐で検査変数に代入された数値が0の場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列とBit暗号YKMライン配列の注目配列の位置を一つ進めた位置に代入されている文字列を連結した文字列を作成して、作成した文字列の文字数（桁数）が8文字（桁）である場合は、そのまま詰込フッター配列の末尾に連結して作成した文字列を代入し、連結して作成した文字列の文字数（桁数）が8文字（桁）に満たない場合は、連結して作成した文字列が8文字（桁）になるように、8文字（桁）に満たない分だけ0という半角文字を作成した文字列の下桁に連結して文字列を作成して、詰込フッター配列の末尾に作成した文字列を代入し、先読み桁数１変数に代入されている数値を２進数の文字列に変換して、変換した文字列を逆順に並べ替えた文字列を作成し、作成した文字列の文字数（桁数）が4文字（桁）の場合は、作成した4文字の文字列をそのまま詰込フッター配列の末尾に代入し、作成した文字列の文字数（桁数）が4文字（桁）に満たない場合は、作成した文字列の文字数（桁数）が4文字（桁）になる様に、作成した文字列の文字数（桁数）が4文字（桁）に満たない分だけ0という半角文字を下桁に連結して4文字（桁）の文字列を作成し、作成した4文字の文字列を詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、ここで連続１分岐を終了して、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、連続１分岐でその他の場合は、有りえないので何も行わない事
とし、ここで、連続１分岐を終了し、桁数分岐で先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値の合計が詰め込み枠に代入できる文字列数（文字列の桁数）を示す8を超える数値であり、先読み桁数１変数に代入された数値と先読み桁数２変数に代入された数値のどちらか一方が8以下の数値である場合は、検査変数に代入された数値が1の場合と0の場合とその他の場合に分岐し、この分岐を連続２分岐と呼ぶ事とし、連続２分岐で検査変数に代入された数値が1の場合は、以下の処理を行う事とし、1byteの型で変数を作成し、作成した変数をカウント２変数と呼ぶ事とし、Bit暗号YKMライン配列の注目配列に代入されているデーターと同じ桁数（文字数）の文字列がBit暗号YKMライン配列の注目配列に代入されているデーター以降に幾つ在るかをカウントして、カウント２変数にカウントした事によって得られた数値を連続していた回数（文字列の個数）として代入し、同じ文字数の文字列が幾つ連続しているかによって分岐し、２文字のみ同じ文字数の文字列が連続している場合と３文字以上同じ文字数の文字列が連続している場合とその他の場合に分岐する事とし、この分岐をカウント２分岐と呼ぶ事とし、カウント２分岐で２文字のみ同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント２分岐で３文字以上同じ文字数の文字列が連続している場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライ��配列の注目配列の位置を一つ進める事とし、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、カウント２変数に代入されている数値から１を引き算して得た数値分だけ以下の処理を繰り返す事とし、この繰り返し処理をカウント繰返処理と呼ぶ事とし、カウント繰返処理では、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁の場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターをそのまま詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁に満たない場合は、Bit暗号YKMライン配列の注目配列に代入されているデーターが8桁になる分だけ0をBit暗号YKMライン配列の注目配列に代入されているデーターに連結したデーターを作成して詰込フッター配列の末尾に代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進めるという処理をカウント２変数に代入されている数値から１を引き算して得た数値分だけ処理を繰り返し終わったら、カウント繰返処理を終了し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、カウント２分岐でその他の場合は、有りえないので何もしない事とし、ここで、カウント２分岐を終了し、連続２分岐で検査変数に代入された数値が0の場合は、Bit暗号YKMライン配列の注目配列の位置に代入されている文字列の文字数を調べて8文字（桁）の場合は、そのまま詰込フッター配列に代入し、調べた文字数が8文字に満たない場合は、8文字（桁）になる様にBit暗号YKMライン配列の注目配列の位置に代入されている文字列の下桁に半角の0という文字を8文字に満たない分だけ連結して文字列を作成して、作成した文字列を詰込フッター配列の末尾に代入し、詰込フッター配列の末尾に「0000」という様な半角の0を4個並べた文字列を作成して代入し、詰込フッター配列の末尾にYKM終端変数の文字列を代入し、Bit暗号YKMライン配列の注目配列の位置を一つ進める事とし、詰込フッター文字列作成工程の開始点に処理を戻して処理を繰り返す事とし、連続２分岐でその他の場合は、有りえないはずなので何も処理を行わない事とし、ここで連続２分岐を終了し、桁数分岐でその他の場合は、有りえないはずなので何も処理を行わない事とし、ここで桁数分岐を終了し、ここまでの処理をBit暗号YKMライン配列の最初の位置に代入されたデーターから最後の位置までに代入されたデーター全てに対して行い終わったら、詰込フッター文字列作成工程を終了し、詰込フッター文字列作成工程で詰込フッター配列の最初の位置から最後の位置までにデーターを代入したが、詰込フッター配列の最初の位置から最後の位置までにデーター全てを代入出来るサイズ（文字数）でstring型の変数を作成し、この変数を全データー文字列変数と呼ぶ事とし、全データー文字列変数に詰込フッター配列の最初の位置から最後の位置までにデーター全てを連結した文字列を作成して代入し、全データー文字列変数に代入されている文字列の文字数をカウントする事とし、カウントした数値が8以下の場合とカウントした数値が9以上の場合とその他の場合に分岐し、この分岐を数値化前分岐と呼ぶ事とし、数値化前分岐でカウントした数値が8以下の場合は、有りえないので何も行わない事とし、数値化前分岐でカウントした数値が9以上の場合は、カウントした数値を8で割り算して余りがある場合とカウントした数値を8で割り算して余りがない場合とその他の場合に分岐し、この分岐をカウント余り分岐と呼ぶ事とし、カウント余り分岐でカウントした数値を8で割り算して余りがある場合は、以下の処理を行う事とし、1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とし、カウントした数値を8で割り算して余りを整数値に計算しなおして、8から整数値に計算しなおした数値を減算して得た数値を調整変数に代入し、調整変数に代入された数値分、0という文字列を連結した文字列を作成して、全データー文字列変数に代入された文字列の末尾に作成した文字列を連結し、8byteのstring型でカウントした数値を8で割り算した数値の小数点以下を切り上げた数値のサイズで配列を作成し、この配列を数値化前文字列配列と呼ぶ事とし、数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とし、カウント余り分岐でカウントした数値を8で割り算して余りがない場合は、以下の処理を行う事とし、1byteの型で変数を作成して、作成した変数を調整変数と呼ぶ事とし、調整変数に0という数値を代入し、8byteのstring型でカウントした数値を8で割り算した数値のサイズで配列を作成し、この配列を数値化前文字列配列と呼ぶ事とし、数値化前文字列配列の最初の位置にから最後の位置までに全データー文字列変数に代入された文字列の先頭から8byteづつ文字列を切り取って代入し、代入する度に8byteづつ代入する位置をずらして数値化前文字列配列に代入する事で、数値化前文字列配列の最後の位置まで代入処理を行う事とし、カウント余り分岐でその他の場合は、有りえないので何も行わない事とし、ここでカウント余り分岐を終了し、数値化前分岐でその他の場合は、有りえないので何も行わない事とし、ここで数値化前分岐を終了し、1byteの型で数値化前文字列配列のサイズの配列を作成し、作成した配列を数値化配列と呼ぶ事とし、数値化前文字列配列の最初の位置から最後の位置までに代入された文字列の２進数を8byteづつ取得して１０進数の数値に変換して、変換した数値を数値化配列の末尾に1byteづつ代入する事で、数値化配列の最後の位置まで代入処理を行う事とし、ヘッダー部を作成する事とし、ヘッダー部の作成記録順番として以下のデーターを記述順番で作成記録する事とし、各データーの後に記述している個数は、記録する為に必要とする配列サイズを示すものとし、ヘッダー部のサイズを記録する為に２個と調整変数の値を代入する為に１個と圧縮対象ファイルのファイルサイズを記録する為に２個と文字出現頻度順文字配列のサイズを記録する為に１個と文字出現頻度順文字配列のサイズ分の個数と終端文字を記録する為に１個の合計を算出して、算出した数値をヘッダー数と呼ぶ事とし、1byteの型でヘッダー数のサイズで配列を作成し、作成した配列をヘッダー配列と呼ぶ事とし、ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を行う事とし、ヘッダー部のサイズを2byteの分割された数値にする為に、数値配列作成処理工程にヘッダー部のサイズに相当するヘッダー数を送る事とし、数値配列作成処理工程では、送られて来た数値を処理して配列に代入するという処理を行うものとし、16byteのstring型で変数を作成して、作成した変数を１６バイト変数と仮称し、送られて来た１０進数の「65535」までの数値を文字コードの半角文字の0と1で表現された２進数の数値に変換して、作成した文字列の２進数の文字数（桁数）が16文字（桁）の場合は、そのまま１６バイト変数に代入し、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない場合は、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない分だけ、作成した文字列の２進数の左側に0という文字を連結した文字列を作成して１６バイト変数に代入し、１６バイト変数に代入された半角の0と1で表現された２進数の先頭から8byte分と後方の8byte分との二つに分割し、分割した文字コードの半角文字の0と1で表現された２進数の文字列の先頭から8byte分を先頭8と仮称し、後方の8byte分を後方8と仮称し、1byteの型で２個の配列サイズで配列を作成して、作成した配列を数値配列と仮称し、数値配列の最初のデーターを代入する事が出来る位置に先頭8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列の最後のデーターを代入する事が出来る位置に後方8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列に代入できる２個の数値を代入し終わったところで数値配列作成処理工程を終了し、数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入し、ヘッダー配列の末尾に調整変数に代入された数値を代入し、圧縮対象配列のサイズを取得して、取得した数値を数値配列作成処理工程に送る事とし、数値配列作成処理工程では、送られて来た数値を処理して配列に代入するという処理を行うものとし、16byteのstring型で変数を作成
して、作成した変数を１６バイト変数と仮称し、送られて来た１０進数の「65535」までの数値を文字コードの半角文字の0と1で表現された２進数の数値に変換して、作成した文字列の２進数の文字数（桁数）が16文字（桁）の場合は、そのまま１６バイト変数に代入し、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない場合は、作成した文字列の２進数の文字数（桁数）が16文字（桁）に満たない分だけ、作成した文字列の２進数の左側に0という文字を連結した文字列を作成して１６バイト変数に代入し、１６バイト変数に代入された半角の0と1で表現された２進数の先頭から8byte分と後方の8byte分との二つに分割し、分割した文字コードの半角文字の0と1で表現された２進数の文字列の先頭から8byte分を先頭8と仮称し、後方の8byte分を後方8と仮称し、1byteの型で２個の配列サイズで配列を作成して、作成した配列を数値配列と仮称し、数値配列の最初のデーターを代入する事が出来る位置に先頭8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列の最後のデーターを代入する事が出来る位置に後方8の８個の文字列で出来た２進数を0から255までの数値に変換して代入し、数値配列に代入できる２個の数値を代入し終わったところで数値配列作成処理工程を終了し、数値配列作成処理工程が終了したら、数値配列に代入された２個の数値を取得してヘッダー配列の末尾に順番通りに1byteづつ代入し、ヘッダー配列の末尾に文字出現頻度順文字配列のサイズを取得して代入し、文字出現頻度順文字配列の最初の位置から最後の位置に代入された全てのデーターを1byteづつ取得して、ヘッダー配列の末尾に1byteづつ代入し、次に、ヘッダー配列の末尾に終端変数に代入されている終端文字のデーターを代入し、これで、ヘッダー配列の最初の位置から最後の位置までにデーターを代入する処理を終了し、バイナリー形式でファイルを作成して、作成したファイルに、ヘッダー配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込んで、全てのデーターを書き込み終わったら、次に、数値化配列の最初の位置から最後の位置までに代入された全てのデーターを1byteづつファイルの末尾に書き込む事で圧縮ファイルの作成をする処理をコンピューターに実行させるプログラムを記録したコンピューターが読み取る事が可能な記録媒体