(57)【要約】【課題】巨大ファイルを圧縮する際、巨大ファイルの先頭から何文字目の文字を何文字圧縮したと言う先頭位置を示す数値が何byteも消費してしまうという問題がある。LZSS法を使用して先頭位置を示す数値を記録しないという問題解決方法が普通であるが、処理が複雑になると言う問題があった。【解決手段】倍数と余りと記号の組み合わせで、極めて少ない桁数で数値を記録する事が出来る符号化技術によって圧縮技術の複雑な処理を簡略化し処理速度を向上させた。【選択図】  図１
2018032227.tif 000002
【特許請求の範囲】
【請求項１】
以下に、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われている文字（日本国では、文字コード2文字以上で1文字を表す平仮名や全角カタカナや漢字などの文字と、文字コード1文字で表す半角英数字と半角カタカナ文字の事）を、テキスト文字と呼び、テキスト文字とリンクされている数値を文字コードと呼ぶ、文字コードは、0〜255までの数値であり、1byteとは、1文字分のbit数の事を言い、現在の1文字分のbit数は、8bitであり、bitとは、桁数の事であり、また、コンピューターで普通に使われている機械語を機械語と略して呼ぶ事がある事とし、コンピューターで普通に使われている機械語とは、コンピューターに搭載されているＣＰＵと呼ばれる中央演算処理装置が処理を予定している命令文の事を言い、人間が読む事が出来る文字列を代入する事ができる変数や配列をstring型と呼び、string型の変数や配列ではない数値を代入する事が出来る配列や変数を数値型と呼び、string型の変数ではない数値を代入する事が出来る変数を作成する場合は、「何bitの型で変数を作成する」または、「何byteの型で変数を作成する」と言う表現で変数を作成すると説明し、string型の変数を作成する場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現で変数を作成し、数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をし、string型で配列を作成する場合は、「幾つのサイズで何bitのstring型の配列を作成する」という表現をし、ファイル操作を行う処理のテキスト形式と言う指定は、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現し、「テキスト形式を指定してファイルを保存する」ではなくて、「テキスト形式でファイルを保存する」または、「テキスト形式でファイルを開く」という表現で説明し、ファイル操作を行う処理のバイナリー形式と言う指定は、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式であり、バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現し、「バイナリー形式を指定してファイルを保存する」ではなくて、「バイナリー形式でファイルを保存する」または、「バイナリー形式でファイルを開く」という表現で説明し、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものであり、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付けられる番号である事とし、配列の末尾にデーターを代入すると記述している場合があるが、未だに配列に代入されたデーターが無い場合でも、末尾と表現する事とし、圧縮対象ファイルのデーターを1byteずつ読み込んで、圧縮対象ファイルのデーターを1byteずつ全て代入できるサイズで8bitのstring型で配列を作成し、作成した配列を圧縮対象配列と呼ぶ事とし、圧縮対象ファイルの最初から最後までのデーターを1byteずつ読み込んで、圧縮対象配列の末尾に1byteずつ全てのデーターを代入し、圧縮対象配列と同じサイズで64bitのstring型で配列を作成し、作成した配列を位置1配列と呼ぶ事とし、圧縮対象配列と同じサイズで16bitのstring型で配列を作成し、作成した配列を個数1配列と呼ぶ事とし、圧縮対象配列と同じサイズで8bitのstring型で配列を作成し、作成した配列を文字1配列と呼ぶ事とし、8bitのstring型で変数を作成して、作成した変数を仮文字1変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数を仮位置1変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をカウント1変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をインデックス1変数と呼ぶ事とし、インデックス1変数に0を代入し、以下の繰り返し処理を注目配列Ａ繰り返し処理と呼ぶ事とし、注目配列Ａ繰り返し処理では、インデックス1変数に代入された数値を圧縮対象配列のインデックスとして使用して圧縮対象配列のデーターを1byte取得して、取得した配列の位置を注目配列とし、以下の繰り返し処理を注目データー１繰り返し処理と呼ぶ事とし、注目配列の一つ先の位置の配列の要素を注目配列+1と呼ぶ事とし、注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、同じ場合と同じでない場合とに分岐し、この分岐をカウント1分岐と呼ぶ事とし、カウント1分岐で注目配列に代入されたデーターと注目配列+1に代入されたデーターが同じ場合は、カウント1変数に1を加算する事で同じ文字であった回数をカウントして、仮文字1変数に、注目配列に代入されているデーターを上書きで代入し、仮位置1変数に注目配列のインデックスを代入し、注目配列+1の配列を1byte先にずらして注目データー１繰り返し処理の先頭に戻って注目データー１繰り返し処理を続行し、注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、注目配列+1が、圧縮対象配列の最後の位置に代入されたデーターを検査するまで1byetずつ注目配列+1の位置を先にずらして、注目データー１繰り返し処理の先頭に戻って処理を続行し、注目配列に代入されたデーターと注目配列+1に代入されたデーターが同じでない場合は、何も行わない事とし、カウント1分岐を終了して、注目データー１繰り返し処理を終了し、分岐し、この分岐を中断1分岐と呼ぶ事とし、中断1分岐で、カウント1変数に代入された数値が4より大きい場合は、6文字以上同じ文字が連続している事になるので、圧縮対象として処理する事にし、文字1配列の末尾に仮文字1変数のデーターを代入し、個数1配列の末尾にカウント1変数に代入されたデーターに1を加算する事で、回数を文字の個数に変換して代入し、位置1配列の末尾に仮位置1変数のデーターを代入し、カウント1変数に上書きで0を代入し、中断1分岐で、カウント1変数に代入された数値が4以下の場合は、圧縮しないので、カウント1変数に上書きで0を代入し、中断1分岐の分岐を終了して、インデックス1変数に1を加算して、注目配列1繰り返し処理の先頭に戻って処理を続行し、圧縮対象配列の最後の位置に代入されたデーターよりも1byte手前の位置に代入されたデーターを注目配列として注目配列1繰り返し処理を行ったら、注目配列1繰り返し処理を終了し、位置1配列と個数1配列と文字1配列の配列サイズの調整を行い、圧縮対象配列と同じサイズでstring型の8bitの配列を作成して、作成した配列をNullデーター配列と呼ぶ事とし、Nullデーター配列に、圧縮対象配列の最初から最後までの全てのデーターをコピーして、インデックス1変数に0を上書きで代入して、64bitの型で変数を作成し、作成した変数を再帰1変数と呼ぶ事とし、以下の繰り返し処理を再帰1繰り返し処理と呼ぶ事とし、インデックス1変数に代入された数値と再帰1変数のデーターをインデックスとして位置1配列に代入されたデーターが同じである場合と同じでない場合とに分岐し、この分岐を検査1分岐と呼ぶ事とし、インデックス1変数に代入された数値と位置1配列に代入されたデーターが同じである場合は、再帰1変数のデーターを個数1配列のインデックスとして使用して個数1配列のデーターを8byte取得して、個数1配列から取得した数値をbyte数として、インデックス1変数のデーターをNullデーター配列のインデックスとして使用して、Nullデーター配列のインデックス1変数の位置から数えて個数1配列から取得した数値をインデックスの増加最大値として、インデックスの増加最大値の位置の分までのNullデーター配列のデーターを1byteずつ削除し、インデックス1変数に代入された数値と位置1配列に代入されたデーターが同じでない場合は、何も行わない事とし、検査1分岐を終了して、インデックス1変数に1を加算して、検査1繰り返し処理の先頭に戻って検査1繰り返し処理を位置1配列の最後のデーターまで処理を続行して、検査1繰り返し処理を終了したら、再帰1変数に1を加算して、位置1配列の配列の最後の位置のデーターの処理が終わるまで再帰1繰り返し処理の処理を行たら、再帰1繰り返し処理の処理を終了し、Nullデーター配列と同じサイズでstring型の8bitの配列を作成して、作成した配列を圧縮データー配列と呼ぶ事とし、以下の繰り返し処理をNull消去1繰り返し処理と呼ぶ事とし、Nullデーター配列の先頭から最後までのデーターを1byteずつ調べて、データーが入力されている配列のデーターだけを1byteずつ取得して、取得したデーターを圧縮データー配列の末尾に代入し、Nullデーター配列の最後のデーターの処理が終わったら、このNull消去1繰り返し処理を終了し、圧縮データー配列のサイズ調整を行い、256のサイズで8bitのstring型の配列を作成し、作成した配列を整理Ａ配列と呼ぶ事とし、8bitの型で変数を作成し、作成した変数をカウント2変数と呼ぶ事とし、カウント2変数に0を代入し、以下の処理を整理1繰り返し処理と呼ぶ事とし、整理1繰り返し処理では、文字1配列に代入されている全てのデーターを1byteずつ検査してカウント2変数に代入されている数値と同じ数値が有ったら、カウント2変数に代入された数値を整理Ａ配列のインデックスとして使用して整理Ａ配列に、文字1配列のデーターを上書きで代入し、カウント2変数に1を加算して、カウント2変数のデーターが255になるまで整理1繰り返し処理を繰り返して、整理1繰り返し処理を終了し、256のサイズで、8bitでstring型の配列を作成し、作成した配列を整理Ｂ配列と呼ぶ事とし、以下の繰り返し処理を整��2繰り返し処理と呼ぶ事とし、整理Ａ配列のデーターを1byteずつ調べて、データーが代入されている配列のデーターを取得して整理Ｂ配列の末尾に1byteずつ代入し、整理Ａ配列の最後の位置まで処理を行ったら、整理2繰り返し処理処理を終了し、整理Ｂ配列の配列サイズの調整を行い、整理Ｂ配列の配列サイズで、8bitのstring型の配列を作成し、作成した配列を文字2配列と呼ぶ事とし、整理Ｂ配列のデーターを全て文字2配列にコピーして、文字2配列の配列サイズで2048byteのstring型の配列を作成して個数2配列と呼ぶ事とし、文字2配列の配列サイズで2048byteのstring型の配列を作成して位置2配列と呼ぶ事とし、カウント2変数に0を上書きで代入して、以下の処理をマトメ繰り返し処理と呼ぶ事とし、マトメ繰り返し処理では、文字2配列のインデックスとしてカウント2変数に代入された数値を使用して文字2配列のデーターを2048byte取得し、以下の繰り返し処理を文字検査1繰り返し処理と呼ぶ事とし、文字検査1繰り返し処理では、以下に分岐し、この分岐を検査2分岐と呼ぶ事とし、検査2分岐で、文字2配列のインデックスとしてカウント2変数を使用して文字2配列に代入された数値を2048byte取得して、取得したデーターと文字1配列の最初から最後までのデーターを1byteずつ比較して同じデーターが代入されていた場合は、カウント2変数を個数2配列のインデックスとして使用して、個数2配列のデーターを2048byte取得して、取得したデーターの後方に、個数1配列の16bitのデーターを連結して、その後方に記号「,」を連結して作成したデーターを作成して、作成したデーターをカウント2変数を個数2配列のインデックスとして使用して個数2配列に代入し、カウント2変数を位置2配列のインデックスとして使用して、位置2配列のデーターを2048byte取得して、取得したデーターの後方に、位置1配列の64bitのデーターを連結して、その後方に記号「,」を連結して作成したデーターをカウント2変数を位置2配列のインデックスとして使用して位置2配列に代入し、文字2配列のインデックスとしてカウント2変数を使用して文字2配列に代入された数値を2048byte取得して、取得したデーターと文字1配列の最初から最後までのデーターを1byteずつ比較して違うデーターが代入されていた場合は、
何も行わない事とし、検査2分岐を終了し、文字1配列の最初から最後までのデーターと比較し終わるまで、文字検査1繰り返し処理を続行したら、文字検査1繰り返し処理を終了し、カウント2変数に1を加算して、マトメ繰り返し処理の先頭に戻って文字2配列の最後の位置のデーターの処理が完了するまで処理を繰り返して、マトメ繰り返し処理を終了し、文字列操作関数を使用して個数2配列に代入された全てのデーターを2048byteずつ調べて個数2配列に代入された各々のデーターの末尾に「,」記号が有ったら「,」記号を削除し、文字列操作関数を使用して位置2配列に代入された全てのデーターを2048byteずつ調べて、位置2配列に代入された各々のデーターの末尾に「,」記号が有ったら「,」記号を削除し、16byteのstring型で変数を作成して、作成した変数を個数マーク変数と呼ぶ事とし、個数マーク変数に16個の0を代入し、再帰1変数に0を上書きで代入して、64bitの型で変数を作成して、この変数をインデ変数と呼ぶ事とし、インデ変数に0を代入し、2個のサイズの64bitの型で配列を作成して、この配列を倍数余り配列と呼ぶ事とし、2048byteのstring型で変数を作成して、作成した変数を仮データー1変数と呼ぶ事とし、位置2配列のサイズで、2048byteのstring型の配列を作成して、作成した配列を位置3配列と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をテスト1変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をテスト2変数と呼ぶ事とし、テスト2変数に0を代入して、以下の繰り返し処理を符号化繰り返し処理と呼ぶ事とし、位置2配列のインデックスとして再帰1変数に代入された数値を使用して位置配列のデーターを取得して、文字列操作関数を使用して「,」記号でセパレートしたデーターを全て代入できるサイズで16byteのstring型の配列を作成して、作成した配列を位置セパレート1配列と呼ぶ事とし、位置2配列のインデックスとして再帰1変数に代入された数値を使用して位置配列のデーターを取得して、文字列操作関数を使用して「,」記号でセパレートしたデーターを位置セパレート1配列の最初から最後の位置までに16byteずつ代入し、以下の繰り返し処理を分割1繰り返し処理と呼ぶ事とし、位置セパレート1配列のインデックスとしてインデ変数に代入されている数値を使用して位置セパレート1配列のデーターを取得して、64bitの型で変数を作成して、作成した変数を倍数変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数を余り変数と呼ぶ事とし、以下に分岐し、この分岐を倍数計算分岐と呼ぶ事とし、倍数計算分岐で、取得した位置セパレート1配列のデーターが65533以上の場合は、取得した位置セパレート1配列のデーターを65532で割った数値の小数点以下を切り捨てた数値を算出して倍数余り配列の最初のデーターの位置に代入して、取得した位置セパレート1配列のデーターを65532で割った余りを算出して倍数余り配列の最後の位置に代入し、倍数計算分岐で、取得した位置セパレート1配列のデーターが65532以下の場合は、倍数余り配列の最初の位置のデーターとして0を代入して、倍数余り配列の最後の位置のデーターとして、取得した位置セパレート1配列のデーターを代入し、倍数計算分岐を終了し、テスト1変数に倍数余り配列の最初の位置に代入されているデーターを代入して、以下の分岐を倍数記号代入分岐と呼ぶ事とし、倍数記号代入分岐で、テスト1変数のデーターとテスト2変数のデーターが同じでテスト1変数のデーターが0の場合は、倍数余り配列の最後の位置のデーターの後方に、「,」記号を連結して、連結して作成したデーターを仮データー1変数の末尾に代入し、倍数記号代入分岐で、テスト1変数のデーターがテスト2変数のデーターよりも大きくて、テスト1変数のデーターが0より大きい場合は、分岐し、この分岐を連続分岐と呼ぶ事とし、連続分岐で、テスト1変数のデーターからテスト2変数のデーターを減算した数値が1である場合は、テスト1変数に代入されているデーターをテスト2変数に上書きで代入し、記号の「?」の後方に「,」記号を連結して、その後方に倍数余り配列の最後の位置のデーターを連結して、その後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入し、連続分岐で、テスト1変数のデーターからテスト2変数のデーターを減算した数値が1より大きい場合は、テスト1変数に代入されているデーターをテスト2変数に上書きで代入し、倍数余り配列の最初の位置のデーターの後方に「,」記号を連結して、その後方に「/」記号を連結して、その後方に「,」記号を連結して、その後方に倍数余り配列の最後の位置のデーターを連結して、その後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入し、連続分岐を終了し、倍数記号代入分岐で、テスト1変数のデーターとテスト2変数のデーターが同じで、テスト1変数のデーターが0より大きい場合は、倍数余り配列の最後の位置のデーターの後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入し、倍数記号代入分岐で、その他の場合は、エラーなので全ての処理を終了し、倍数記号代入分岐を終了し、分割1繰り返し処理の最初の処理に戻って、位置セパレート1配列の最後の位置のデーターを処理するまで処理を繰り返して、分割1繰り返し処理を終了し、位置3配列のインデックスとして再帰1変数のデーターを使用して、位置3配列のインデックスの位置に、仮データー1変数のデーターを代入し、仮データー1変数のデーターを削除して、再帰1変数に1を加算して符号化繰り返し処理の最初の処理に戻って、再帰1変数のデーターが、位置2配列の最後の位置のインデックスになるまで符号化繰り返し処理の処理を繰り返して、符号化繰り返し処理を終了し、文字列操作関数を使用して、位置3配列のデーターを2048byteずつ全て検査して、位置3配列に代入されている各々のデーターの最後の文字に「,」記号があったら、「,」記号を削除し、3個のサイズで16byteのstring型で配列を作成して、作成した配列を位置マーク配列と呼ぶ事とし、位置マーク配列のデーターを代入できる領域の最初の位置に65535を代入して、位置マーク配列のデーターを代入できる領域の2番目の位置に65534を代入して、位置マーク配列のデーターを代入できる領域の最後の位置に65533を代入して、位置3配列と同じサイズで、2048byteのstring型の配列を作成して仮位置配列と呼ぶ事とし、個数2配列と同じサイズで、2048byteのstring型の配列を作成して個数3配列と呼ぶ事とし、個数2配列と同じサイズで、1byteのstring型の配列を作成してナンバー配列と呼ぶ事とし、以下の処理をナンバー配列作成工程と呼ぶ事とし、ナンバー配列���最初の位置の1byteには、何も代入せずに、2番目の位置から最後の位置までに、1byteの「|」記号を一つずつ代入し、ナンバー配列作成工程を終了し、以下の処理をナンバー個数連結処理と呼ぶ事とし、以下に分岐し、この分岐をナンバー連結1分岐と呼ぶ事とし、ナンバー連結1分岐で、ナンバー配列の最初の位置のデーターを処理する場合は、個数3配列の最初の位置に、個数2配列の最初の位置の2048byteのデーターを代入し、ナンバー連結1分岐で、ナンバー配列の2番目以降の位置のデーターを処理する場合は、ナンバー配列の2番目の位置から最後の位置までのデーターを1byteずつ順番にインデックスで取得して、ナンバー配列で使用したインデックスを使用して個数3配列から2048byteずつ順番にデーターを取得して、ナンバー配列のデーターの後方に「,」記号を連結して、その後方に個数2配列のデーターを連結してデーターを作成して、この連結して作成したデーターをナンバー配列で使用したインデックスを個数3配列のインデックスとして使用して個数3配列に2048byteずつ順番に代入し、ナンバー連結1分岐を終了し、ナンバー個数連結処理を終了し、以下の処理をナンバー位置連結処理と呼ぶ事とし、以下に分岐し、この分岐をナンバー連結2分岐と呼ぶ事とし、ナンバー連結2分岐で、ナンバー配列の最初の位置のデーターを処理する場合は、仮位置配列の最初の位置に、位置3配列の最初の位置の2048byteのデーターを代入し、ナンバー連結2分岐で、ナンバー配列の2番目の位置のデーターを処理する場合は、ナンバー配列の2番目の位置から最後の位置までのデーターを1byteずつ順番にインデックスで取得して、ナンバー配列で使用したインデックスを位置3配列のインデックスとして使用して位置3配列から2048byteずつ順番にデーターを取得して、取得したナンバー配列のデーターの後方に「,」記号を連結して、その後方に取得した位置3配列のデーターを連結してデーターを作成して、この連結して作成したデーターをナンバー配列で使用したインデックスを仮位置配列のインデックスとして使用して仮位置配列に2048byteずつ順番に代入し、ナンバー連結2分岐を終了し、仮位置配列の最初から最後までのデーターを位置3配列に上書きでコピーして、ナンバー位置連結処理を終了し、圧縮対象配列と同じサイズで16byteのstring型で配列を作成して、作成した配列を10進位置1配列と呼ぶ事とし、以下の処理を分離1繰り返し処理と呼ぶ事とし、位置3配列の最初の位置のインデックスで取得した2048byteのデーターを文字列操作関数を使用して「,」記号で分割して16byteずつ順番に10進位置1配列の末尾に順番通りに代入し、位置3配列のインデックスに1を加算して位置3配列で使用しているインデックスが位置3配列の最後の位置に達するまで分離1繰り返し処理を繰り返して、分離1繰り返し処理を終了し、圧縮対象配列と同じサイズで16byteのstring型の配列を作成して、作成した配列を10進個数1配列と呼ぶ事とし、以下の処理を分離2繰り返し処理と呼ぶ事とし、個数3配列の最初の位置のインデックスで取得した2048byteのデーターを文字列操作関数を使用して「,」記号で分割して順番に10進個数1配列の末尾に16byteずつ順番通りに代入し、個数3配列で使用しているインデックスに1を加算して個数3配列のインデックスが個数3配列の最後の位置に達するまで分離2処理を繰り返して、分離2繰り返し処理を終了し、10進位置1配列の配列サイズの調整を行い、10進個数1配列の配列サイズの調整を行い、10進位置1配列と同じサイズで16byteのstring型で配列を作成して、作成した配列を2進位置1配列と呼ぶ事とし、10進位置1配列と同じサイズで16byteのstring型の配列を作成して、作成した配列を2進個数1配列と呼ぶ事とし、以下の繰り返し処理を非記号2進変換1繰り返し処理と呼ぶ事とし、10進位置1配列の最初から最後までのデーターを16byteずつ検査して、以下に分岐し、この分岐を記号1分岐と呼ぶ事とし、記号1分岐で、10進位置1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、10進位置1配列のデーターを、2進位置1配列の末尾に代入し、記号1分岐で、10進位置1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、10進位置1配列のデーターを2進数に変換して2進位置1配列の末尾に代入し、記号1分岐を終了し、10進位置1配列の最後までのデーターを検査し終わったら、非記号2進変換1繰り返し処理を終了し、以下の繰り返し処理を非記号2進変換2繰り返し処理と呼ぶ事とし、以下に分岐し、この分岐を記号2分岐と呼ぶ事とし、記号2分岐で、10進個数1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、10進個数1配列のデーターを、2進個数1配列の末尾に代入し、記号2分岐で、10進個数1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、10進個数1配列のデーターを2進数に変換して2進個数1配列の末尾に代入し、記号2分岐を終了し、10進個数1配列の最後の位置まで処理が完了したら、非記号2進変換2繰り返し処理を終了し、2進位置1配列のサイズで16byteのstring型の配列を作成して、作成した配列を2進位置2配列と呼ぶ事とし、以下の繰り返し処理を桁数調整1繰り返し処理と呼ぶ事とし、2進位置1配列のインデックスを使用して16byteずつ検査して、以下に分岐し、この分岐を記号3分岐と呼ぶ事とし、記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は、2進位置1配列のデーターを、2
進位置2配列の末尾に代入し、記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は分岐し、この分岐を記号ネスト1分岐と呼ぶ事とし、記号ネスト1分岐で、2進位置1配列のデーターを文字列操作関数を使用して文字数を調べて16文字に達していない場合は、2進位置1配列のデーターが16文字になる様に2進位置1配列のデーターの先頭に0を16文字に足りない分だけ連結して16文字の文字列を作成して、2進位置2配列の末尾に代入し、記号ネスト1分岐で、2進位置1配列のデーターを文字列操作関数を使用して文字数を調べて16文字だった場合は、何もせずに2進位置1配列のデーターを2進位置2配列の末尾に代入し、記号ネスト1分岐を終了し、記号3分岐を終了し、2進位置1配列の最後の位置のデーターを検査し終わったら、桁数調整1繰り返し処理を終了し、2進個数1配列のサイズで16byteのstring型の配列を作成して、作成した配列を2進個数2配列と呼ぶ事とし、以下の繰り返し処理を桁数調整2繰り返し処理と呼ぶ事とし、2進個数1配列のインデックスを使用して16byteずつ検査して、以下に分岐し、この分岐を記号4分岐と呼ぶ事とし、記号4分岐で、2進個数1配列のデーターが「|」記号に該当する場合は、2進個数1配列のデーターを、2進個数2配列の末尾に代入し、記号4分岐で、2進個数1配列のデーターが「|」記号に該当しない場合は分岐し、この分岐処理を記号ネスト2分岐と呼ぶ事とし、記号ネスト2分岐で、2進個数1配列のデーターを文字列操作関数を使用して文字数を調べて16文字に達していない場合は、16文字になる様に2進個数1配列のデーターの先頭に0を16文字に足りない分だけ連結して16文字の文字列を作成して、2進個数2配列の末尾に代入し、記号ネスト2分岐で、2進個数1配列のデーターを文字列操作関数を使用して文字数を調べて16文字だった場合は、2進個数1配列のデーターを2進個数2配列の末尾に代入し、記号ネスト2分岐を終了し、記号4分岐を終了し、2進個数1配列の最後の位置のデーターを検査し終わったら、桁数調整2繰り返し処理を終了し、圧縮対象配列のサイズで8byteのstring型の配列を作成して、作成した配列を記号バイト位置配列と呼ぶ事とし、以下の繰り返し処理を記号バイト代入1繰り返し処理と呼ぶ事とし、2進位置2配列の最初から最後までのデーターを16byteずつ調べて分岐し、この分岐を記号5分岐と呼ぶ事とし、記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は、2進位置2配列のデーターを記号バイト位置配列の末尾に代入し、記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は、文字列操作関数を使用して、前方の8文字を取得して記号バイト位置配列の末尾に代入して、次に、後方の8文字を取得して記号バイト位置配列の末尾に代入し、記号5分岐を終了し、2進位置2配列の最初から最後までのデーターを検査し終わったら、記号バイト代入1繰り返し処理を終了し、圧縮対象配列のサイズで8byteのstring型の配列を作成して、作成した配列を記号バイト個数配列と呼ぶ事とし、以下の繰り返し処理を記号バイト代入2繰り返し処理と呼ぶ事とし、2進個数2配列の最初から最後までのデーターを16byteずつ調べて分岐し、この分岐を���号6分岐と呼ぶ事とし、記号6分岐で、2進個数2配列のデーターが「|」記号に該当する場合は、2進個数2配列のデーターを記号バイト個数配列の末尾に代入し、記号6分岐で、個数位置2配列のデーターが「|」記号に該当しない場合は、文字列操作関数を使用して、前方の8文字を取得して記号バイト個数配列の末尾に代入して、次に、後方の8文字を取得して記号バイト個数配列の末尾に代入し、記号6分岐を終了し、2進個数2配列の最初から最後までのデーターを検査し終わったら、記号バイト代入2繰り返し処理を終了し、記号バイト位置配列の配列サイズ調整を行い、記号バイト個数配列の配列サイズ調整を行い、以下の処理を位置マーク2進数変換繰り返し処理と呼ぶ事とし、位置マーク配列の最初から最後までの全てのデーターを16byteずつ取得して、取得したデーターを2進数に変換して、2進数に変換したデーターを位置マーク配列のデーターを取得した位置に上書きで16byteずつ代入し、位置マーク配列の最後の位置のデーターの処理が終わったら、位置マーク2進数変換繰り返し処理を終了し、3個のサイズで1byteのstring型の配列を作成して、作成した配列を記号文字位置配列と呼ぶ事とし、記号文字位置配列の最初の位置に「|」記号を代入して、2番目の位置に「/」記号を代入して、最後の位置に「?」記号を代入し、圧縮対象配列のサイズで8bitのstring型の配列を作成して、作成した配列をバイト位置配列と呼ぶ事とし、以下の繰り返し処理を記号変換1繰り返し処理と呼ぶ事とし、記号バイト位置配列の最初の位置から最後の位置までのデーターを8byteずつ検査して分岐し、この分岐を記号7分岐と呼ぶ事とし、記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は分岐し、この分岐をマーク1分岐と呼ぶ事とし、マーク1分岐で、記号バイト位置配列のデーターが「|」記号の場合は、位置マーク配列の最初の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入し、マーク1分岐で、記号バイト位置配列のデーターが「/」記号の場合は、位置マーク配列の2番目の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入し、マーク1分岐で、記号バイト位置配列のデーターが「?」記号の場合は、位置マーク配列の最後の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入し、マーク1分岐を終了し、記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は、記号バイト位置配列のデーターをバイト位置配列の末尾に代入し、記号7分岐を終了し、記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換1繰り返し処理を終了し、圧縮対象配列のサイズで8byteのstring型の配列を作成して、作成した配列をバイト個数配列と呼ぶ事とし、以下の繰り返し処理を記号変換2繰り返し処理と呼ぶ事とし、記号バイト個数配列の最初の位置から最後の位置までのデーターを8byteずつ検査して分��し、この分岐を記号8分岐と呼ぶ事とし、記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当する場合は、個数マーク変数に代入されているデーターの先頭から8文字を取得してバイト個数配列の末尾に代入して、次に、後方の8文字を取得してバイト個数配列の末尾に代入し、記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当しない場合は、記号バイト個数配列のデーターをバイト個数配列の末尾に代入し、記号8分岐を終了し、記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換2繰り返し処理を終了し、バイト位置配列の配列サイズ調整を行い、バイト個数配列の配列サイズ調整を行い、バイト位置配列の配列サイズと同じサイズで、8bitのstring型の配列を作成して、作成した配列を位置10進数配列と呼ぶ事とし、以下の繰り返し処理を10進数変換1処理と呼ぶ事とし、バイト位置配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを位置10進数配列の末尾に順番に8bitずつ代入し、バイト位置配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換1処理を終了し、バイト個数配列の配列サイズと同じサイズで、8bitのstring型の配列を作成して、作成した配列を個数10進数配列と呼ぶ事とし、以下の繰り返し処理を10進数変換2処理と呼ぶ事とし、バイト個数配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを個数10進数配列の末尾に順番に8bitずつ代入し、バイト個数配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換2処理を終了し、6個のサイズで8bitのstring型の配列を作成して、保存位置マーク配列と呼ぶ事とし、以下の繰り返し処理を保存配列作成1繰り返し処理と呼ぶ事とし、位置マーク配列の位置を示すインデックスで位置マーク配列のデーターを16byteずつ取得して、文字列操作関数を使用して取得したデーターの先頭から8文字のデーターを取得して保存位置マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存位置マーク配列の末尾に代入し、位置マーク配列の最後の位置のデーターを処理するまで保存配列作成1繰り返し処理を行い、保存配列作成1繰り返し処理を終了し、2個のサイズで8bitのstring型の変数を作成して、保存個数マーク配列と呼ぶ事とし、以下の処理を保存配列作成2処理と呼ぶ事とし、個数マーク変数に代入された16byteの2進数のデーターを文字列操作関数を使用して先頭から8文字を取得して保存個数マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存個数マーク配列の末尾に代入し、保存配列作成2処理を終了し、以下の繰り返し処理を進数変換1繰り返し処理と呼ぶ事とし、保存位置マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存位置マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入して、保存位置マーク配列の最後の位置まで処理を行ったら、進数変換1繰り返し処理を終了し、以下の繰り返し処理を進数変換2繰り返し処理と呼ぶ事とし、保存個数マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存個数マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入して、保存個数マーク配列の最後の位置まで処理を行ったら、進数変換2繰り返し処理を終了し、32byteのstring型の変数を作成して、作成した変数を文字サイズ変数と呼ぶ事とし、32byteのstring型の変数を作成して、作成した変数を位置サイズ変数と呼ぶ事とし、32byteのstring型の変数を作成して、作成した変数を個数サイズ変数と呼ぶ事とし、64byteのstring型の変数を作成して、作成した変数を圧縮対象ファイルサイズ変数と呼ぶ事とし、64byteのstring型の変数を作成して、作成した変数を圧縮データーサイズ変数と呼ぶ事とし、文字2配列の配列サイズを取得して、取得したデーターを2進数に変換して文字サイズ変数に代入し、位置10進数配列の配列サイズを取得して、取得したデーターを2進数に変換して位置サイズ変数に代入し、個数10進数配列の配列サイズを取得して、取得したデーターを2進数に変換して個数サイズ変数に代入し、圧縮対象配列の配列サイズを取得して、取得したデーターを2進数に変換して圧縮対象ファイルサイズ変数に代入し、圧縮データー配列の配列サイズを取得して、取得したデーターを2進数に変換して圧縮データーサイズ変数に代入し、文字サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を文字サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、文字サイズ変数に上書きで代入し、位置サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を位置サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、位置サイズ変数に上書きで代入し、個数サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を個数サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、個数サイズ変数に上書きで代入し、圧縮対象ファイルサイズ変数に代入されたデーターを文字列操作関数を使用
して文字数を調べて64文字になる様に、64文字に少ない分だけ0を圧縮対象ファイルサイズ変数に代入されたデーターの先頭に連結して64文字の0と1で構成された2進数を作成して、圧縮対象ファイルサイズ変数に上書きで代入し、圧縮データーサイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて64文字になる様に、64文字に少ない分だけ0を圧縮データーサイズ変数に代入されたデーターの先頭に連結して64文字の0と1で構成された2進数を作成して、圧縮データーサイズ変数に上書きで代入し、4個のサイズでstring型の8bitの配列を作成して、この作成した配列を文字サイズ10進配列と呼ぶ事とし、4個のサイズでstring型の8bitの配列を作成して、この作成した配列を位置サイズ10進配列と呼ぶ事とし、4個のサイズでstring型の8bitの配列を作成して、この作成した配列を個数サイズ10進配列と呼ぶ事とし、8個のサイズでstring型の8bitの配列を作成して、この作成した配列を圧縮対象サイズ10進配列と呼ぶ事とし、8個のサイズでstring型の8bitの配列を作成して、この作成した配列を圧縮データーサイズ10進配列と呼ぶ事とし、以下の繰り返し処理をバイト代入1繰り返し処理と呼ぶ事とし、文字列操作関数を使用して、文字サイズ変数の先頭から8文字までを取得して文字サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、文字サイズ変数の9文字から16文字までを文字サイズ10進配列の末尾に代入し、文字列操作関数を使用して、文字サイズ変数の17文字から24文字までを取得して文字サイズ10進配列の末尾に代入し、文字列操作関数を使用して、文字サイズ変数の25文字から最後までを取得して文字サイズ10進配列の最後の位置に代入して、バイト代入1繰り返し処理を終了し、以下の繰り返し処理をバイト代入2繰り返し処理と呼ぶ事とし、文字列操作関数を使用して、位置サイズ変数の先頭から8文字までを取得して位置サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、位置サイズ変数の9文字から16文字までを位置サイズ10進配列の末尾に代入し、文字列操作関数を使用して、位置サイズ変数の17文字から24文字までを取得して位置サイズ10進配列の末尾に代入し、文字列操作関数を使用して、位置サイズ変数の25文字から最後までを取得して位置サイズ10進配列の最後の位置に代入して、バイト代入2繰り返し処理を終了し、以下の繰り返し処理をバイト代入3繰り返し処理と呼ぶ事とし、文字列操作関数を使用して、個数サイズ変数の先頭から8文字までを取得して個数サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、個数サイズ変数の9文字から16文字までを個数サイズ10進配列の末尾に代入し、文字列操作関数を使用して、個数サイズ変数の17文字から24文字までを取得して個数サイズ10進配列の末尾に代入し、文字列操作関数を使用して、個数サイズ変数の25文字から最後までを取得して個数サイズ10進配列の最後の位置に代入して、バイト代入3繰り返し処理を終了し、以下の繰り返し処理をバイト代入4繰り返し処理と呼ぶ事とし、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の先頭から8文字までを取得して圧縮対象サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の9文字から16文字までを圧縮対象サイズ10進配列の末��に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の17文字から24文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の25文字から32文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の33から40文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の41文字から48文字までを圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の49文字から56文字までの文字を取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の57文字から最後までの文字を取得して圧縮対象サイズ10進配列の末尾に代入して、バイト代入4繰り返し処理を終了し、以下の繰り返し処理をバイト代入5繰り返し処理と呼ぶ事とし、文字列操作関数を使用して、圧縮データーサイズ変数の先頭から8文字までを取得して圧縮データーサイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の9文字から16文字までを圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の17文字から24文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の25文字から32文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の33から40文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の41文字から48文字までを圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の49文字から56文字までの文字を取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の57文字から最後までの文字を取得して圧縮データーサイズ10進配列の末尾に代入して、バイト代入5繰り返し処理を終了し、以下の繰り返し処理を10進数1繰り返し処理と呼ぶ事とし、文字サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の最初の位置に上書きで代入し、文字サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の2番目の位置に上書きで代入し、文字サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の3番目の位置に上書きで代入し、文字サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の最後の位置に上書きで代入して、10進数1繰り返し処理を終わる事とし、以下の繰り返し処理を10進数2繰り返し処理と呼ぶ事とし、位置サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の最初の位置に上書きで代入し、位置サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の2番目の位置に上書きで代入し、位置サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配���の3番目の位置に上書きで代入し、位置サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の最後の位置に上書きで代入して、10進数2繰り返し処理を終わる事とし、以下の繰り返し処理を10進数3繰り返し処理と呼ぶ事とし、個数サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の最初の位置に上書きで代入し、個数サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の2番目の位置に上書きで代入し、個数サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の3番目の位置に上書きで代入し、個数サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の最後の位置に上書きで代入して、10進数3繰り返し処理を終わる事とし、以下の繰り返し処理を10進数4繰り返し処理と呼ぶ事とし、圧縮対象サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の最初の位置に上書きで代入し、圧縮対象サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の2番目の位置に上書きで代入し、圧縮対象サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の3番目の位置に上書きで代入し、圧縮対象サイズ10進配列の4番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の4番目の位置に上書きで代入し、圧縮対象サイズ10進配列の5番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の5番目の位置に上書きで代入し、圧縮対象サイズ10進配列の6番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の6番目の位置に上書きで代入し、圧縮対象サイズ10進配列の7番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の7番目の位置に上書きで代入し、圧縮対象サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の最後の位置に上書きで代入して、10進数4繰り返し処理を終わる事とし、以下の繰り返し処理を10進数5繰り返し処理と呼ぶ事とし、圧縮データーサイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の最初の位置に上書きで代入し、圧縮データーサイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の2番目の位置に上書きで代入し、圧縮データーサイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の3番目の位置に上書きで代入し、圧縮データーサイズ10進配列の4番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の4番目の位置に上書きで代入し、圧縮データーサイズ10進配列の5番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の5番目の位置に上書きで代入し、圧縮データーサイズ10進配列の6番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の6番目の位置に上書きで代入し、圧縮データーサイズ10進配列の7番目の位置のデーターを8byte取得して10進���に変換して圧縮データーサイズ10進配列の7番目の位置に上書きで代入し、圧縮データーサイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の最後の位置に上書きで代入して、10進数5繰り返し処理を終わる事とし、保存位置マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、位置サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、位置10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、保存個数マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、個数サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、個数10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、文字サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、文字2配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、圧縮対象サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、圧縮データーサイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、圧縮データー配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録して、任意のファイル名でファイルを保存する事によって、圧縮ファイルを作成するソフトウェアを記録した記録媒体
【請求項２】
以下に、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われている文字（日本国では、文字コード2文字以上で1文字を表す平仮名や全角カタカナや漢字などの文字と、文字コード1文字で表す半角英数字と半角カタカナ文字の事）を、テキスト文字と呼び、テキスト文字とリンクされている数値を文字コードと呼ぶ、文字コードは、0〜255までの数値であり、1byteとは、1文字分のbit数の事を言い、現在の1文字分のbit数は、8bitであり、bitとは、桁数の事であり、また、コンピューターで普通に使われている機械語を機械語と略して呼ぶ事がある事とし、コンピューターで普通に使われている機械語とは、コンピューターに搭載されているＣＰＵと呼ばれる中央演算処理装置が処理を予定している命令文の事を言い、人間が読む事が出来る文字列を代入する事ができる変数や配列をstring型と呼び、string型の変数や配列ではない数値を代入する事が出来る配列や変数を数値型と呼び、string型の変数ではない数値を代入する事が出来る変数を作成する場合は、「何bitの型で変数を作成する」または、「何byteの型で変数を作成する」と言う表現で変数を作成すると説明し、string型の変数を作成する場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現で変数を作成し、数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をし、string型で配列を作成する場合は、「幾つのサイズで何bitのstring型の配列を作成する」という表現をし、ファイル操作を行う処理のテキスト形式と言う指定は、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現し、「テキスト形式を指定してファイルを保存する」ではなくて、「テキスト形式でファイルを保存する」または、「テキスト形式でファイルを開く」という表現で説明し、ファイル操作を行う処理のバイナリー形式と言う指定は、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式であり、バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現し、「バイナリー形式を指定してファイルを保存する」ではなくて、「バイナリー形式でファイルを保存する」または、「バイナリー形式でファイルを開く」という表現で説明し、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものであり、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付けられる番号である事とし、配列の末尾にデーターを代入すると記述している場合があるが、未だに配列に代入されたデーターが無い場合でも、末尾と表現する事とし、以下に注目配列と注目配列+1と注目配列-1とは���配列の位置を示すインデックスでデーターを取得して、取得したデーターが格納されていた配列の位置を注目配列と呼ぶ事とし、注目配列のインデックスに1加算したインデックスで示す配列の位置を、注目配列+1と呼ぶ事とし、また、注目配列のインデックスに1を減算したインデックスで示す配列の位置を、注目配列-1と呼ぶものであると言う事とし、圧縮ファイルが一定の規則で作成されているので、その順番で読み込んで圧縮ファイルを圧縮されていない元のファイルの状態に戻すと言う展開処理を行う事とし、圧縮ファイルを1byteずつ読み込んで全て読み込む事が可能なサイズで1byteのstring型で配列を作成して、作成した配列をＤ圧縮ファイル配列と呼ぶ事とし、圧縮ファイルをバイナリー形式で開いて1byteずつ最初から最後まで全てのデーターを読み込んでＤ圧縮ファイル配列の最初の位置から最後の位置までに1byteずつ代入し、64bitの型で変数を作成して、作成した変数を読込位置変数と呼ぶ事とし、読込位置変数に0を代入し、64bitの型で変数を作成して、作成した変数を読込量変数と呼ぶ事とし、読込量変数に6を代入し、64bitの型で変数を作成して、作成した変数を読込終端変数と呼ぶ事とし、読込終端変数に6を代入し、6個のサイズで1byteのstring型で配列を作成して、作成した配列をＤ位置マーク1配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の位置から読込量変数の数値までのデーターを1byteずつ読み込んで、1byteずつＤ位置マーク1配列の末尾に代入し、6個のサイズで8byteのstring型の配列を作成して、作成した配列を位置マーク2進配列と呼ぶ事とし、以下の繰り返し処理を2進数変換1繰り返し処理と呼ぶ事とし、位置マーク1配列の最初のインデックスの8bitのデーターを取得して2進数に変換して位置マーク2進配列の末尾に代入し、インデックスに1を加算して2進数変換1繰り返し処理の最初に戻って処理を続行し、位置マーク1配列の最後の位置のデーターの処理が終了したら、2進数変換1繰り返し処理を終了し、以下の繰り返し処理を桁調整1繰り返し処理と呼ぶ事とし、位置マーク2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト1分岐と呼ぶ事とし、バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字に満たない場合は、位置マーク2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得した位置マーク2進配列の位置に作成した文字列を上書きで代入し、バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト1分岐を終了し、位置マーク2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整1繰り返し処理を終了し、3個のサイズで16byteのstring型で配列を作成して、作成した配列を位置マーク連結配列と呼ぶ事とし、1byteの型で変数を作成して、この変数をインデ1変数と呼ぶ事とし、インデ1変数に0を代入し、以下の繰り返し処理を2バイト連結1繰り返し処理と呼ぶ事とし、位置マーク2進配列のインデックスを使用して位置マーク2進配列のデーターを8byte取得して位置マーク2進配列の注目配列+1のデーターを8byte取得し、以下の分岐を注目条件1分岐と呼ぶ事とし、注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、2バイト連結1繰り返し処理を終了し、注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、注目配列のデーターの後方に注目配列+1のデーターを連結して、連結して作成したデーターを位置マーク連結配列のインデックスとしてインデ1変数を使用して位置マーク連結配列に代入し、インデ1変数のデーターに1を加算して、注目条件1分岐を終了する事として、注目配列の位置のインデックスに2を加算して2バイト連結1繰り返し処理の最初に戻って、繰り返し処理を繰り返して、位置マーク2進配列の最後の位置よりも一つ手前の位置のデーターを注目配列として処理し終わったら、2バイト連結1繰り返し処理を終了し、3個のサイズでstring型の16bitで配列を作成して、作成した配列をＤ位置マーク10進配列と呼ぶ事とし、以下の繰り返し処理を10進数変換1繰り返し処理と呼ぶ事とし、位置マーク連結配列の最初のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の最初の位置に代入し、位置マーク連結配列の2番目のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の2番目の位置に代入し、位置マーク連結配列の最後のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の最後の位置に代入し、10進数変換1繰り返し処理を終了し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数と4を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、4個のサイズで8bitのstring型の配列を作成して、作成した配列をＤ位置サイズ配列と呼ぶ事とし、Ｄ位置サイズ配列に、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ取得して、取得したデーターを1byteずつＤ位置サイズ配列の最初の位置から最後の位置までに代入し、4個のサイズで8byteのstring型の配列を作成して、作成した配列をＤ位置サイズ2進配列と呼ぶ事とし、Ｄ位置サイズ配列の最初の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の最初の位置に代入し、Ｄ位置サイズ配列の2番目の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の2番目の位置に代入し、Ｄ位置サイズ配列の3番目の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の3番目の位置に代入し、Ｄ位置サイズ配列の最後の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の最後の位置に代入し、以下の繰り返し処理を桁調整2繰り返し処理と呼ぶ事とし、Ｄ位置サイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用してデーターの文字数を調べて分岐し、この分岐をバイト2分岐と呼ぶ事とし、バイト2分岐で、Ｄ位置サイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ位置サイズ2進配列の���ーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ位置サイズ2進配列の位置に作成した文字列を上書きで代入し、バイト2分岐で、Ｄ位置サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト2分岐を終了し、桁調整2繰り返し処理の先頭に戻って、処理を繰り返して、Ｄ位置サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整2繰り返し処理を終了し、32bitのstring型の変数を作成して、作成した変数をＤ位置サイズ10進変数と呼ぶ事とし、Ｄ位置サイズ2進配列の最初の位置の8byteのデーターの後方に、2番目の位置の8byteのデーター、その後方に3番目の位置の8byteのデーター、その後方に最後の位置の8byteのデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ位置サイズ10進変数に代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数とＤ位置サイズ10進変数を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、Ｄ位置サイズ10進変数に代入された数値をサイズとして1byteのstring型の配列を作成して、作成した配列をＤ位置1配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ位置1配列の最初から最後の位置までに1byteずつ代入し、Ｄ位置1配列の配列サイズの半分のサイズで1byteのstring型の配列を作成して、作成した配列をＤ位置2進配列と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をインデ2変数と呼ぶ事とし、インデ2変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ3変数と呼ぶ事とし、インデ3変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ4変数と呼ぶ事とし、インデ4変数に0を代入し、2個のサイズでstring型の1byteの配列を作成して、作成した配列を2進バイト仮配列と呼ぶ事とし、string型の1byteの変数を作成して、作成した変数を2進連結仮変数と呼ぶ事とし、以下の繰り返し処理を2進変換連結1繰り返し
処理と呼ぶ事とし、Ｄ位置1配列からインデ2変数のデーターをインデックスとして使用してデーターを1byte取得して、2進数に変換してインデ1変数のデーターをインデックスとして使用して2進バイト仮配列に上書きで代入し、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列のデーターを1byte取得して、文字列操作関数を使用して文字数を調べて分岐し、この分岐をバイト3分岐と呼ぶ事とし、バイト3分岐で、取得した2進バイト仮配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト3分岐で、取得した2進バイト仮配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入し、バイト3分岐を終了し、インデ2変数のデーターに1を加算し、インデ1変数のデーターに1を加算し、インデ2変数のデーターをＤ位置1配列のインデックスとして使用してＤ位置1配列のデーターを1byte取得して、取得したデーターを2進数に変換してインデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入し、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列のデーターを1byte取得して、文字列操作関数を使用して文字数を調べて分岐し、この分岐をバイト4分岐と呼ぶ事とし、バイト4分岐で、取得した2進バイト仮配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト4分岐で、取得した2進バイト仮配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入し、バイト4分岐を終了し、インデ2変数のデーターに1を加算し、インデ1変数のデーターに0を上書きで代入し、2進バイト仮配列の最初の位置の8bitのデーターの後方に2進バイト仮配列の最後の位置の8bitのデーターを連結した2進数の文字列を作成して、作成した2進数の文字列を2進連結仮変数に上書きで代入し、インデ3変数のデーターをＤ位置2進配列のインデックスとして使用してＤ位置2進配列に代入し、インデ3変数のデーターに1を加算し、2進変換連結1繰り返し処理の先頭に戻って処理を繰り返し、インデ2変数のデーターがＤ位置1配列のサイズから2減算した数値になったら、2進変換連結1繰り返し処理を終了し、Ｄ位置1配列のデーターを全て削除して、Ｄ位置1配列のサイズをＤ位置2進配列のサイズに変更を行い、以下の繰り返し処理を10進数変換2繰り返し処理と呼ぶ事とし、Ｄ位置2進配列の最初から最後の位置までの2進数で表されたデーターを16byteずつ取得して、10進数に変換してＤ位置1配列の末尾に2byteずつ代入する。Ｄ位置2進配列の次のデーターの処理に進めて、10進数変換2繰り返し処理の先頭に戻って処理を繰り返し、Ｄ位置2進配列の最後のデーターの処理が終わったら、10進数変換2繰り返し処理を終了し、1byteの型で変数を作成して、作成した変数を文字���号1変数と呼ぶ事とし、文字記号1変数に文字「|」記号を代入し、1byteの型で変数を作成して、作成した変数を文字記号コード1変数と呼ぶ事とし、文字記号コード1変数に文字記号1変数に代入されたデーターの文字コードを取得して代入し、1byteの型で変数を作成して、作成した変数を文字記号2変数と呼ぶ事とし、文字記号2変数に文字「/」記号を代入し、1byteの型で変数を作成して、作成した変数を文字記号コード2変数と呼ぶ事とし、文字記号コード2変数に文字記号2変数に代入されたデーターの文字コードを取得して代入し、1byteの型で変数を作成して、作成した変数を文字記号3変数と呼ぶ事とし、文字記号3変数に文字「,」記号を代入し、1byteの型で変数を作成して、作成した変数を文字記号コード3変数と呼ぶ事とし、文字記号コード3変数に文字記号3変数に代入されたデーターの文字コードを取得して代入し、1byteの型で変数を作成して、作成した変数を文字記号4変数と呼ぶ事とし、文字記号2変数に文字「?」記号を代入し、1byteの型で変数を作成して、作成した変数を文字記号コード4変数と呼ぶ事とし、文字記号コード4変数に文字記号4変数に代入されたデーターの文字コードを取得して代入し、Ｄ圧縮ファイル配列のサイズで16bitのstring型で配列を作成して、作成した配列をＤ位置2配列と呼ぶ事とし、インデ2変数に0を上書きで代入し、以下の繰り返し処理を記号入力1繰り返し処理と呼ぶ事とし、Ｄ位置1配列の最初から最後までのデーターを16bitずつ取得して分岐し、この分岐を入力条件1分岐と呼ぶ事とし、入力条件1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれかに該当する場合は分岐し、この分岐を個別1分岐と呼ぶ事とし、個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合は、インデ2変数の数値をインデックスとして使用してＤ位置2配列に文字記号1変数のデーターを代入し、インデ2変数の数値に1を加算し、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入し、インデ2変数の数値に1を加算し、個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合は、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号2変数のデーターを代入し、インデ2変数の数値に1を加算し、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入し、インデ2変数の数値に1を加算し、個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合は、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号4変数のデーターを代入し、インデ2変数の数値に1を加算し、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入し、インデ2変数の数値に1を加算し、個別1分岐を終了し、入力条件1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれにも該当しない場合は、Ｄ位置1配列のデーターをインデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に代入し、インデ2変数の数値に1を加算し、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入し、インデ2変数の数値に1を加算し、入力条件1分岐を終了し、Ｄ位置1配列の次のデーターを取得して記号入力1繰り返し処理の先頭に戻って、繰り返し処理を行い、Ｄ位置1配列の最後の位置の処理が終わったら、記号入力1繰り返し処理を終了し、Ｄ位置2配列のサイズ調整を行う事とし、以下の繰り返し処理を記号削除1繰り返し処理と呼ぶ事とし、Ｄ位置2配列の最初から最後までのデーターを配列のインデックスを使用して16bitずつ取得して取得した配列の位置を注目配列とし、以下の分岐を記号検査1分岐と呼ぶ事とし、記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがＤ位置2配列のサイズに満たない数値である場合の両方に該当する場合は分岐し、この分岐を記号確認1分岐と呼ぶ事とし、以下に、記号確認1分岐の文言の説明を行う、注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号1変数と一致する場合の両方に一致する場合を第1条件と呼ぶ事とし、注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号2変数と一致する場合の両方に一致する場合を第2条件と呼ぶ事とし、注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号4変数と一致する場合の両方に一致する場合を第3条件と呼ぶ事とし、注目配列が文字記号3変数と一致する場合と注目配列+1が文字記号2変数と一致する場合の両方に一致する場合を第4条件と呼ぶ事とし、記号確認1分岐の文言の説明を終了し、記号確認1分岐で、第1条件と第2条件と第3条件と第4条件のどれかに該当する場合は、Ｄ位置2配列の注目配列のデーターを削除し、記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがＤ位置2配列のサイズに満たない数値である場合の両方に該当しない場合は、処理を行わない事とし、記号確認1分岐を終了し、記号検査1分岐を終了し、注目配列のインデックスに1を加算して記号削除1繰り返し処理の先頭に戻って処理を続行し、注目配列のインデックスがＤ位置2配列の最後の位置になるまで処理を繰り返して、記号削除1繰り返し処理を終了し、Ｄ位置2配列と同じサイズで16bitのstring型で配列を作成して、この作成した配列を仮Ｄ位置2配列と呼ぶ事とし、以下の繰り返し処理をNull消去2繰り返し処理と呼ぶ事とし、Ｄ位置2配列の先頭から最後までのデーターを2byteずつ調べて、データーが入力されている配列のデーターだけを取得してを仮Ｄ位置2配列の末尾に代入し、Nullデーター配列の最後のデーターの処理が終わったら、このNull消去2繰り返し処理を終了し、Ｄ位置2配列に代入されているデーターを全て削除して、仮Ｄ位置2配列のデーターをＤ位置2配列にコピーして、8bitの型���変数を作成して、この作成した変数をバトン1変数と呼ぶ事とし、バトン1変数に0を入力し、8bitの型で変数を作成して、この作成した変数をバトン2変数と呼ぶ事とし、バトン2変数に0を入力し、Ｄ位置2配列のサイズで2048byteのstring型の配列を作成して、作成した配列をＤ位置仮配列と呼ぶ事とし、インデ2変数に上書きで0を代入し、以下の繰り返し処理を配列復元1繰り返し処理と呼ぶ事とし、Ｄ位置2配列の最初から最後までのデーターを2byteずつ取得して分岐し、この分岐を記号判断1分岐と呼ぶ事とし、記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列のデーターを取得して、取得したＤ位置仮配列のデーターの後方にＤ位置2配列のデーターを連結して作成したデーターをインデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列に上書きで代入し、記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入し、記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入し、記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入し、以下に、分岐条件の文言の説明を行う、記号判断1分岐で、Ｄ位置2配列のデー
ターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第5条件と呼ぶ事とし、記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第6条件と呼ぶ事とし、分岐条件の文言の説明を終了し、記号判断1分岐で、Ｄ位置2配列のデーターが第5条件か第6条件のいずれかに該当する場合は、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列のデーターを取得して、取得したＤ位置仮配列のデーターの後方にＤ位置2配列のデーターを連結して作成したデーターをインデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列に上書きで代入し、記号判断1分岐で、Ｄ位置2配列のデーターがその他の場合は、処理を行わない事とし、記号判断1分岐を終了し、Ｄ位置2配列のデーターを処理する位置を一つずらして、配列復元1繰り返し処理の先頭に戻って処理を続行して、Ｄ位置2配列の最後の位置のデーターの処理を完了したら、配列復元1繰り返し処理を終了し、Ｄ位置2配列のデーターを全て削除して、Ｄ位置仮配列の全てのデーターをＤ位置2配列にコピーして、以下の処理をボトムチェック1繰り返し処理と呼ぶ事とし、Ｄ位置2配列のインデックスを使用してデーターを2048byteずつ取得して分岐し、この分岐をデーター有無1分岐と呼ぶ事とし、データー有無1分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は分岐し、この分岐を有無ネスト1分岐と呼ぶ事とし、有無ネスト1分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入し、有無ネスト1分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入し、有無ネスト1分岐を終了し、データー有無1分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない事とし、データー有無1分岐を終了し、Ｄ位置2配列のインデックスに1を加算して、ボトムチェック1繰り返し処理の先頭に戻って処理を続行し、Ｄ位置2配列の最後の位置のデーターの処理が終わったら、ボトムチェック1繰り返し処理を終了し、以下の繰り返し処理をフロントチェック1繰り返し処理と呼ぶ事とし、Ｄ位置2配列のインデックスを使用してデーターを2048byteずつ取得して分岐し、この分岐をデーター有無2分岐と呼ぶ事とし、データー有無2分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は分岐し、この処理を有無ネスト2分岐と呼ぶ事とし、有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してＤ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入し、有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置2配列から���得したデーターの先頭に「|」記号が無い場合は、Ｄ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入し、有無ネスト2分岐を終了し、データー有無2分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない事とし、データー有無2分岐を終了し、Ｄ位置2配列のインデックスに1を加算して、フロントチェック1繰り返し処理の先頭に戻って、処理を続行し、Ｄ位置2配列の最後の位置のデーターの処理が終わったら、フロントチェック1繰り返し処理を終了し、Ｄ位置2配列のサイズ調整を行い、Ｄ位置2配列のサイズで2048byteのstring型の配列を作成して、作成した配列をＤ位置3配列と呼ぶ事とし、2個のサイズで16byteのstring型の配列を作成して、この配列をスラッシュ分割配列と呼ぶ事とし、インデ2変数に上書きで0を代入し、64bitの型で変数を作成して、作成した変数をリミット1変数と呼ぶ事とし、Ｄ位置2配列のサイズをリミット1変数に代入し、64bitの型で変数を作成して、作成した変数をリミット2変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数をゲット数値変数と呼ぶ事とし、64bitの型で変数を作成して、作成した変数を確認変数と呼ぶ事とし、2048byteのstring型の変数を作成して、作成した変数を復号変数と呼ぶ事とし、以下の繰り返し処理を符号復元繰り返し処理と呼ぶ事とし、インデ2変数の数値をインデックスとして使用してＤ位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割した場合に分割される数を配列のサイズとして、16byteのstring型の配列を作成して、作成した配列をカンマ分割配列と呼ぶ事とし、インデ2変数の数値をインデックスとして使用してＤ位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割して、カンマ分割配列に16byteずつ代入し、カンマ分割配列のサイズをリミット2変数に代入し、以下の繰り返し処理を分割Ａ検査繰り返し処理と呼ぶ事とし、インデ3変数に上書きで0を代入し、インデ3変数をインデックスとして使用してカンマ分割配列のデーターを取得して分岐し、この分岐をカンマ分岐処理と呼ぶ事とし、カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号が有るかどうかを検査して「/」記号が有る場合は、スラッシュ分割配列にカンマ分割配列のデーターを「/」記号で分割して16byteずつ上書きで代入し、カンマ分割配列の最初の位置のデーターを確認変数に上書きで代入し、カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入し、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数を連結して、その後方に「,」記号を連結したデーターを作成して、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したデーターに連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入し、カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号と「?」記号が有る���どうかを検査して「/」記号と「?」記号の両方の記号が無い場合は分岐し、この分岐を記号無分岐処理と呼ぶ事とし、記号無分岐処理で、確認変数が0の場合は、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に「,」記号を連結したデーターを作成して、その後方に、カンマ分割配列のデーターを連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入し、記号無分岐処理で、確認変数が0より大きい場合は、カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入し、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成してＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に連結して作成したデーターを上書きで代入し、記号無分岐処理を終了し、カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「?」記号が有るかどうかを検査して「?」記号が有る場合は、分岐し、この分岐をクエスチョン分岐と呼ぶ事とし、クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が有る場合は、確認変数に1を加算し、文字列操作関数を使用して「?」記号の後方に記述されている数値を全て取得して、ゲット数値変数に上書きで代入し、カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入し、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成して、連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入し、クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が無い場合は、何も行わない事とし、クエスチョン分岐を終了し、カンマ分岐処理を終了し、インデ3変数に1を加算し、分割Ａ検査繰り返し処理の先頭に戻って、繰り返し処理を続行し、インデ3変数のデーターが、リミット2変数のデーターになるまで分割Ａ検査繰り返し処理を行って、分割Ａ検査繰り返し処理を終了し、インデ2変数に1を加算し、確認変数に上書きで0を代入し、符号復元繰り返し処理の先頭に戻って、繰り返し処理を続行し、インデ2変数のデーターが、リミット1変数のデーターなるまで符号復元繰り返し処理を行って、符号復元繰り返し処理を終了し、Ｄ位置3配列のサイズを調整行い、Ｄ位置3配列のサイズで、2048byteのstring型の配列を作成して、作成した配列をＤ位置4配列と呼ぶ事とし、Ｄ位置3配列の全てのデーターをＤ位置4配列にコピーして、以下の処理をボトムチェック2繰り返し処理と呼ぶ事とし、Ｄ位置4配列のインデックスを使用してデーターを2048byteずつ取得して分岐し、この分岐をデーター有無3分岐と呼ぶ事とし、データー有無3分岐で、文字列操作関数を使用して、Ｄ位置4配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は分岐し、この分岐を有無ネスト2分岐と呼ぶ事とし、有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置4配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ位置4配列のデーターを取得したＤ位置4配列の位置に上書きで代入し、有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置4配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ位置4配列のデーターを取得したＤ位置4配列の位置に上書きで代入し、有無ネスト2分岐を終了し、データー有無3分岐で、文字列操作関数を使用して、Ｄ位置4配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない事とし、データー有無3分岐を終了し、Ｄ位置4配列のインデックスに1を加算して、ボトムチェック2繰り返し処理の先頭に戻って、処理を続行し、Ｄ位置4配列の最後の位置のデーターの処理が終わったら、ボトムチェック2繰り返し処理を終了し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数と2を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、16bitのstring型で変数を作成して、作成した変数をＤ個数マーク10進変数と呼ぶ事とし、2個のサイズで8bitのstring型で配列を作成して、作成した配列を個数マーク1配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んで個数マーク1変数の最初から最後の位置までに1byteずつ代入し、8byteのstring型で変数を作成して、作成した変数を個数マーク2進変数と呼ぶ事とし、以下の繰り返し処理を2進数変換2繰り返し処理と呼ぶ事とし、個数マーク1配列のインデックスを使用して1byteのデーターを取得して2進数に変換して個数マーク2進配列の末尾に8byteずつ代入し、インデックスに1を加算して2進数変換2繰り返し処理の最初に戻って処理を続行し、個数マーク1配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換2繰り返し処理を終了し、以下の繰り返し処理を桁調整3繰り返し処理と呼ぶ事とし、個数マーク2進配列からインデックスを使用してデーターを
8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト5分岐と呼ぶ事とし、バイト5分岐で、個数マーク2進配列のデーターの文字数が8文字に満たない場合は、個数マーク2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得した個数マーク2進配列の位置に作成した文字列を上書きで代入し、バイト5分岐で、個数マーク2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト5分岐を終了し、個数マーク2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整3繰り返し処理を終了し、個数マーク2進配列の最初のデーターの後方に個数マーク2進配列の最後のデーターを連結してデーターを作成して、連結して作成したデーターを10進数に変換して、Ｄ個数マーク10進変数に代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数と4を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、4個のサイズで8bitのstring型の配列を作成して、作成した配列をＤ個数サイズ配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ個数サイズ配列の最初から最後の位置までに1byteずつ代入し、8byteのstring型で変数を作成して、作成した変数をＤ個数サイズ2進変数と呼ぶ事とし、以下の繰り返し処理を2進数変換3繰り返し処理と呼ぶ事とし、Ｄ個数サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してＤ個数サイズ2進配列の末尾に代入し、インデックスに1を加算して2進数変換3繰り返し処理の最初に戻って処理を続行し、Ｄ個数サイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換3繰り返し処理を終了し、以下の繰り返し処理を桁調整4繰り返し処理と呼ぶ事とし、Ｄ個数サイズ2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト6分岐と呼ぶ事とし、バイト6分岐で、Ｄ個数サイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ個数サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ個数サイズ2進配列の位置に作成した文字列を上書きで代入し、バイト6分岐で、Ｄ個数サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト6分岐を終了し、Ｄ個数サイズ2進配列のインデックスに１を加算し、桁調整4繰り返し処理の最初に戻って処理を繰り返し、Ｄ個数サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整4繰り返し処理を終了し、32bitのstring型の変数を作成して、作成した変数をＤ個数10進変数と呼ぶ事とし、Ｄ個数サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成したデーターを10進数に変���して、Ｄ個数サイズ10進変数に代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数とＤ個数サイズ10進変数を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、Ｄ個数サイズ10進変数のデーターをサイズとして1byteのstring型の配列を作成して、作成した配列をＤ個数1配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ個数1配列の最初から最後の位置までに1byteずつ代入し、Ｄ個数サイズ10進変数のデーターの半分のサイズを配列サイズとして2byteのstring型の配列を作成して、作成した配列をＤ個数2進配列と呼ぶ事とし、インデ2変数に0を上書きで代入して、インデ3変数に0を上書きで代入し、インデ4変数に0を上書きで代入し、2個のサイズでstring型の1byteの配列を作成して、作成した配列を2進バイト仮2配列と呼ぶ事とし、string型の2byteの変数を作成して、作成した変数を2進連結仮2変数と呼ぶ事とし、以下の繰り返し処理を2進変換連結2繰り返し処理と呼ぶ事とし、インデ2変数のデーターがＤ個数1配列の配列サイズから2を減算した数値になるまで以下の処理を繰り返し、Ｄ個数1配列からインデ2変数のデーターをインデックスとして使用してデーターを取得して、2進数に変換してインデ1変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入し、インデ1変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列のデーターを取得して、文字列操作関数を使用して文字数を調べて分岐し、この分岐をバイト7分岐と呼ぶ事とし、バイト7分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字の場合は、何もしない事とし、バイト7分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮2配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入し、バイト7分岐を終了し、インデ2変数のデーターに1を加算し、インデ4変数のデーターに1を加算し、Ｄ個数1配列からインデ2変数のデーターをインデックスとして使用してデーターを取得して、2進数に変換してインデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入し、インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列のデーターを取得して、文字列操作関数を使用して文字数を調べて分岐し、この分岐をバイト8分岐と呼ぶ事とし、バイト8分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字の場合は、何もしない事とし、バイト8分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮2配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入し、バイト8分岐を終了し、インデ2変数のデーターに1を加算し、インデ4変数のデーターに0を上書きで代入し、2進バイト仮2配列の最初の位置のデーターの後方に2進バイト仮2配列の最後の位置のデーターを連結した2進数の文字列を作成して、作成した2進数の文字列を2進連結仮2変数に上書きで代入し、インデ3変数のデーターをＤ個数2進配列のインデックスとして使用してＤ個数2進配列に代入し、インデ3変数のデーターに1を加算し、2進変換連結2繰り返し処理の先頭に戻って処理を繰り返し、Ｄ個数1配列の最後の位置の一つ手前の位置のデーターを処理するまで繰り返し処理を行い、Ｄ個数1配列の最後の位置の一つ手前の位置のデーターを処理し終わったら、2進変換連結2繰り返し処理を終了し、Ｄ個数2進配列のサイズで16bitのstring型の配列を作成して、作成した配列をＤ個数2配列と呼ぶ事とし、以下の繰り返し処理を10進数変換3繰り返し処理と呼ぶ事とし、Ｄ個数2進配列のインデックスを使用して16byteずつ取得して、10進数に変換してＤ個数2配列の末尾に16bitずつ代入し、Ｄ個数2進配列のインデックスに１を加算し、10進数変換3繰り返し処理の先頭に戻って処理を繰り返し、Ｄ個数2進配列の最後のデーターの処理が終わったら、10進数変換3繰り返し処理を終了し、Ｄ圧縮ファイル配列のサイズで16bitのstring型の配列を作成して、作成した配列を仮Ｄ個数1配列と呼ぶ事とし、インデ2変数に0を上書きで代入し、インデ3変数に0を上書きで代入し、以下の繰り返し処理を記号入力2繰り返し処理と呼ぶ事とし、Ｄ個数2配列からインデ3変数をインデックスとして使用して、Ｄ個数2配列のインデ3変数の位置を注目配列とし、注目配列のデーターを取得して分岐し、以下の分岐を記号検査2分岐と呼ぶ事とし、記号検査2分岐で、インデ3変数に1を加算した数値がＤ個数2配列のサイズに満たない場合は分岐し、この分岐をマーク検査1分岐と呼ぶ事とし、マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致する場合は、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「|」記号を仮Ｄ個数1配列に代入し、インデ2変数に1を加算し、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入し、インデ2変数に1を加算し、マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致しない場合とＤ個数マーク10進変数と注目配列+1のデーターが一致しない場合の両方に該当する場合は、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデーターを代入し、インデ2変数に1を加算し、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入し、インデ2変数に1を加算し、マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致しない場合とＤ個数マーク10進変数と注目配列+1のデーターが一致する場合の両方に該当する場合は、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデーターを代入し、インデ2変数に1を加算し、マーク検査1分岐を終了し、記号検査2分岐で、インデ3変数のデーターがＤ個数2配列のサイズから1を減算した数値に一致する場合は、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデータ���を代入し、インデ2変数に1を加算し、仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入し、インデ2変数に1を加算し、記号検査2分岐を終了し、インデ3変数に1を加算し、記号入力2繰り返し処理の先頭に戻って処理を繰り返し、インデ3変数のデーターがＤ個数2配列の最後の位置のデーターを処理する数値になるまで処理を繰り返して、記号入力2繰り返し処理を終了し、Ｄ個数2配列のデーターを全て削除して、仮Ｄ個数1配列の全てのデーターをＤ個数2配列にコピーして、Ｄ個数2配列のサイズ調整を行い、以下の繰り返し処理を記号削除2繰り返し処理と呼ぶ事とし、記号削除2繰り返し処理では、Ｄ個数2配列の最初から最後までのデーターを16bitずつ取得して処理を行い、Ｄ個数2配列からデーターを取得した位置を注目配列とし、分岐し、この分岐を記号検査3分岐と呼ぶ事とし、記号検査3分岐で、注目配列を示すインデックスが0より大きい数値である場合には、分岐し、この分岐を記号削除分岐と呼ぶ事とし、記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当する場合は、Ｄ個数2配列の注目配列の位置のデーターを削除し、記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当しない場合は、何も行わない事とし、記号削除分岐を終了し、記号検査3分岐で、注目配列を示すインデックスが0と一致する数値の場合には、処理を行わない事とし、記号検査3分岐を終了し、注目配列を一つ先に進めて、記号削除2繰り返し処理の先頭に戻って処理を繰り返し、Ｄ個数2配列の最後の位置を注目配列として処理し終わったら、記号削除2繰り返し処理を終了し、Ｄ個数2配列のサイズで16bitのstring型の配列を作成して、作成した配列を仮Ｄ個数2配列と呼ぶ事とし、以下の繰り返し処理をNull消去3繰り返し処理と呼ぶ事とし、Ｄ個数2配列の先頭から最後までのデーターを16bitずつ調べて、データーが入力されている配列のデーターだけを取得してを仮Ｄ個数2配列の末尾に代入し、Ｄ個数2配列の最後のデーターの処理が終わったら、このNull消去3繰り返し処理を終了し、Ｄ個数2配列のデーターを全て削除して、仮Ｄ個数2配列の全てのデーターをＤ個数2配列
にコピーして、バトン1変数に0を上書きで代入し、バトン2変数に0を上書きで代入し、Ｄ個数2配列のサイズで2048byteのstring型の配列を作成して、作成した配列をＤ個数3配列と呼ぶ事とし、インデ2変数に上書きで0を代入し、以下の繰り返し処理を配列復元2繰り返し処理と呼ぶ事とし、Ｄ個数2配列からインデックスを使用してデーターを2byteずつ取得して分岐し、この分岐を記号判断2分岐と呼ぶ事とし、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をインデックスとして使用してＤ個数3配列のデーターを取得して、取得したＤ個数3配列のデーターの後方にＤ個数2配列のデーターを連結して作成したデーターをインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列に上書きで代入し、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入し、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入し、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入し、以下に、分岐条件の文言の説明を行う、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第7条件と呼ぶ事とし、記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第8条件と呼ぶ事とし、分岐条件の文言の説明を終了し、記号判断2分岐で、Ｄ位置2配列のデーターが第7条件か第8条件のいずれかに該当する場合は、Ｄインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列のデーターを取得して、取得したＤ個数3配列のデーターの後方にＤ個数2配列のデーターを連結して作成したデーターをインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列に上書きで代入し、記号判断2分岐で、Ｄ個数2配列のデーターがその他の場合は、処理を行わない事とし、記号判断2分岐を終了し、Ｄ個数2配列のインデックスに1を加算して、配列復元2繰り返し処理の先頭に戻って処理を続行して、Ｄ個数2配列の最後の位置のデーターの処理を完了したら、配列復元2繰り返し処理を終了し、Ｄ個数3配列の配列サイズの調整を行い、以下の処��をボトムチェック3繰り返し処理と呼ぶ事とし、Ｄ個数3配列のインデックスを使用してデーターを2048byteずつ取得して分岐し、この分岐をデーター有無4分岐と呼ぶ事とし、データー有無4分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は分岐し、この分岐を有無ネスト3分岐と呼ぶ事とし、有無ネスト3分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入し、有無ネスト3分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入し、有無ネスト3分岐を終了し、データー有無4分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない事とし、データー有無4分岐を終了し、Ｄ個数3配列のインデックスに1を加算して、ボトムチェック3繰り返し処理の先頭に戻って、処理を続行し、Ｄ個数3配列の最後の位置のデーターの処理が終わったら、ボトムチェック3繰り返し処理を終了し、以下の繰り返し処理をフロントチェック2繰り返し処理と呼ぶ事とし、Ｄ個数3配列のインデックスを使用してデーターを2048byteずつ取得して分岐し、この分岐をデーター有無5分岐と呼ぶ事とし、データー有無5分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は分岐し、この処理を有無ネスト4分岐と呼ぶ事とし、有無ネスト4分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してＤ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入し、有無ネスト4分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの先頭に「|」記号が無い場合は、Ｄ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入し、有無ネスト4分岐を終了し、データー有無5分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない事とし、データー有無5分岐を終了し、Ｄ個数3配列のインデックスに1を加算して、フロントチェック2繰り返し処理の先頭に戻って、処理を続行し、Ｄ個数3配列の最後の位置のデーターの処理が終わったら、フロントチェック2繰り返し処理を終了し、Ｄ個数3配列の配列サイズ調整を行い、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数と4を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、4個のサイズで8bitのstring型の配列を作成して、作成した配列をＤ文字サイズ配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ文字サイズ配列の最初から最後の位置までに1byteずつ代入し、8byteのstring型��変数を作成して、作成した変数をＤ文字サイズ2進変数と呼ぶ事とし、以下の繰り返し処理を2進数変換4繰り返し処理と呼ぶ事とし、Ｄ文字サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してＤ文字サイズ2進配列の末尾に代入し、インデックスに1を加算して2進数変換4繰り返し処理の最初に戻って処理を続行し、Ｄ文字サイズ配列の最後の位置のデーターの処理が終了したら、2進数変換4繰り返し処理を終了し、以下の繰り返し処理を桁調整5繰り返し処理と呼ぶ事とし、Ｄ個数サイズ2進配列からインデックスを使用して8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐し、この分岐をバイト9分岐と呼ぶ事とし、バイト9分岐で、Ｄ文字サイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ文字サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ文字サイズ2進配列の位置に作成した文字列を上書きで代入し、バイト9分岐で、Ｄ文字サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト9分岐を終了し、Ｄ文字サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整5繰り返し処理を終了し、32bitのstring型の変数を作成して、作成した変数をＤ文字10進変数と呼ぶ事とし、Ｄ文字サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ文字サイズ10進変数に代入し、Ｄ文字サイズ10進変数に代入されたデーターをサイズとして1byteのstring型の配列を作成して、作成した配列をＤ文字1配列と呼ぶ事とし、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数とＤ文字サイズ10進変数を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ文字1配列の最初から最後の位置までに1byteずつ代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数に8を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、8個のサイズで1byteのstring型の配列を作成して、作成した配列をＤ圧縮Ｆサイズ配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮Ｆサイズ配列の最初から最後の位置までに1byteずつ代入し、64bitのstring型で変数を作成して、作成した変数をＤ圧縮Ｆサイズ2進変数と呼ぶ事とし、以下の繰り返し処理を2進数変換5繰り返し処理と呼ぶ事とし、Ｄ圧縮Ｆサイズ配列のインデックスの1byteのデーターを取得して2進数に変換してＤ圧縮Ｆサイズ2進配列の末尾に代入し、インデック��に1を加算して2進数変換5繰り返し処理の最初に戻って処理を続行し、Ｄ圧縮Ｆサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換5繰り返し処理を終了し、以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ事とし、Ｄ圧縮Ｆサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト10分岐と呼ぶ事とし、バイト10分岐で、Ｄ圧縮Ｆサイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ圧縮Ｆサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ圧縮Ｆサイズ2進配列の位置に作成した文字列を上書きで代入し、バイト10分岐で、Ｄ圧縮Ｆサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト10分岐を終了し、Ｄ圧縮Ｆサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整6繰り返し処理を終了し、64bitのstring型の変数を作成して、作成した変数をＤ圧縮ファイルサイズ10進変数と呼ぶ事とし、Ｄ圧縮Ｆサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ圧縮ファイルサイズ10進変数に代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数に読込位置変数に8を加算した数値を代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、8個のサイズで1byteのstring型の配列を作成して、作成した配列をＤ圧縮データーサイズ配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮データーサイズ配列の最初から最後の位置までに1byteずつ代入し、64bitのstring型で変数を作成して、作成した変数をＤ圧縮データーサイズ2進変数と呼ぶ事とし、以下の繰り返し処理を2進数変換6繰り返し処理と呼ぶ事とし、Ｄ圧縮データーサイズ配列のイン
デックスの1byteのデーターを取得して2進数に変換してＤ圧縮Ｆデーター2進配列の末尾に代入し、インデックスに1を加算して2進数変換6繰り返し処理の最初に戻って処理を続行し、Ｄ圧縮データーサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換6繰り返し処理を終了し、以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ事とし、Ｄ圧縮データーサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト11分岐と呼ぶ事とし、バイト11分岐で、Ｄ圧縮データーサイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ圧縮データーサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ圧縮データーサイズ2進配列の位置に作成した文字列を上書きで代入し、バイト11分岐で、Ｄ圧縮データーサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト11分岐を終了し、Ｄ圧縮データーサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整7繰り返し処理を終了し、64bitのstring型の変数を作成して、作成した変数をＤ圧縮データーサイズ10進変数と呼ぶ事とし、Ｄ圧縮データーサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ圧縮データーサイズ10進変数に代入し、読込位置変数に読込終端変数のデーターを代入し、読込終端変数にＤ圧縮データーサイズ10進変数のサイズを代入し、読込量変数に読込終端変数から読込位置変数を減算したデーターを代入し、読込量変数のサイズで1byteのstring型の配列を作成して、作成した配列をＤ圧縮データー配列と呼ぶ事とし、Ｄ圧縮データー配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮データー配列の最初から最後の位置までに1byteずつ代入し、Ｄ圧縮ファイルサイズ10進変数に代入されているデーターのサイズで8bitのstring型の配列を作成して、作成した配列を展開データー配列と呼ぶ事とし、インデ2変数に上書きで0を代入し、64bitの型で変数を作成して、作成した変数をインデ5変数と呼ぶ事とし、インデ5変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ6変数と呼ぶ事とし、インデ6変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ7変数と呼ぶ事とし、インデ7変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ8変数と呼ぶ事とし、インデ8変数に0を代入し、64bitの型で変数を作成して、作成した変数をインデ9変数と呼ぶ事とし、インデ9変数に0を代入し、以下の繰り返し処理を展開1繰り返し処理と呼ぶ事とし、Ｄ位置4配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成して、作成した配列を位置個別配列と呼ぶ事とし、Ｄ個数3配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成して、作成した配列を個数個別配列と呼ぶ事とし、位置個別配列のサイズを取得してインデ6変数とインデ7変数の両方の変数に代入し、インデ3変数に上書きで0を代入し、インデ4変数に上書きで0を代入し、以下の繰り返し処理を展開ネスト1繰り返し処理と呼ぶ事とし、分岐し、以下の分岐を位置条件分岐と呼ぶ事とし、位置条件分岐で、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、取得したデーターがインデ4変数と一致する場合は、以下に繰り返し処理を行う、この繰り返し処理を展開ネスト2繰り返し処理と呼ぶ事とし、インデ4変数のデーターをインデ9変数に上書きで代入し、インデ5変数をＤ文字1配列のインデックスとして使用してＤ文字1配列のデーターを8bitずつ取得して、インデ9変を展開データー配列のインデックスとして使用して展開データー配列に8bitずつ代入し、インデ9変数に1を加算し、展開ネスト2繰り返し処理の先頭に戻って、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、インデ9変数の数値が取得したデーターとインデ4変数に加算した数値になるまで展開ネスト2繰り返し処理を繰り返して、展開ネスト2繰り返し処理を終了し、分岐し、以下の分岐を回数確認分岐と呼ぶ事とし、回数確認分岐で、インデ6変数から1を減算した数値が0と一致する場合は、インデ5変数に1を加算し、回数確認分岐で、インデ6変数から1を減算した数値が0と一致しない場合は、何も行わない事とし、回数確認分岐を終了し、インデ3変数に1を加算し、位置条件分岐で、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、取得したデーターがインデ4変数と一致しない場合は、インデ4変数に1を加算し、位置条件分岐を終了し、展開ネスト1繰り返し処理の先頭に戻って、処理を繰り返し、位置個別配列の最後の位置のデーターの処理が終了するまで繰り返し処理を行って、展開ネスト1繰り返し処理を終了し、インデ2変数に1を加算し、展開1繰り返し処理の先頭に戻って、処理を繰り返し、Ｄ文字1配列の最後の位置の処理が終了するまで処理を繰り返して、展開1繰り返し処理を終了し、インデ2変数に上書きで0を代入し、以下の繰り返し処理を展開2繰り返し処理と呼ぶ事とし、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて分岐し、この分岐を空白入力分岐と呼ぶ事とし、空白入力分岐で、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて空白の場合は、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列に、インデ2変数をＤ圧縮データー配列のインデックスとして使用してＤ圧縮データー配列のデーターを取得して代入し、インデ2変数に1を加算し、空白入力分岐で、展開データー配列のインデックスとしてイ��デ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、データーが代入されている場合は、何も行わない事とし、空白入力分岐を終了し、インデ8変数に1を加算し、展開データー配列の最後の位置のデーターの処理が終わるまで処理を繰り返して、展開2繰り返し処理を終了し、展開データー配列の最初から最後までのデーターを1byteずつファイルに書き込んでバイナリー形式で名称を付けてファイルを作成して保存する事によって圧縮ファイルを展開した展開ファイルを作成するソフトウェアを記録した記録媒体
【請求項３】
以下に、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われている文字（日本国では、文字コード2文字以上で1文字を表す平仮名や全角カタカナや漢字などの文字と、文字コード1文字で表す半角英数字と半角カタカナ文字の事）を、テキスト文字と呼び、テキスト文字とリンクされている数値を文字コードと呼ぶ、文字コードは、0〜255までの数値であり、1byteとは、1文字分のbit数の事を言い、現在の1文字分のbit数は、8bitであり、bitとは、桁数の事であり、また、コンピューターで普通に使われている機械語を機械語と略して呼ぶ事がある事とし、コンピューターで普通に使われている機械語とは、コンピューターに搭載されているＣＰＵと呼ばれる中央演算処理装置が処理を予定している命令文の事を言い、人間が読む事が出来る文字列を代入する事ができる変数や配列をstring型と呼び、string型の変数や配列ではない数値を代入する事が出来る配列や変数を数値型と呼び、string型の変数ではない数値を代入する事が出来る変数を作成する場合は、「何bitの型で変数を作成する」または、「何byteの型で変数を作成する」と言う表現で変数を作成すると説明し、string型の変数を作成する場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現で変数を作成し、数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をし、string型で配列を作成する場合は、「幾つのサイズで何bitのstring型の配列を作成する」という表現をし、ファイル操作を行う処理のテキスト形式と言う指定は、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現し、「テキスト形式を指定してファイルを保存する」ではなくて、「テキスト形式でファイルを保存する」または、「テキスト形式でファイルを開く」という表現で説明し、ファイル操作を行う処理のバイナリー形式と言う指定は、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式であり、バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現し、「バイナリー形式を指定してファイルを保存する」ではなくて、「バイナリー形式でファイルを保存する」または、「バイナリー形式でファイルを開く」という表現で説明し、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものであり、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置に付けられる番号である事とし、配列の末尾にデーターを代入すると記述している場合があるが、未だに配列に代入されたデーターが無い場合でも、末尾と表現する事とし、以下に注目配列と注目配列+1と注目配列-1とは���配列の位置を示すインデックスでデーターを取得して、取得したデーターが格納されていた配列の位置を注目配列と呼ぶ事とし、注目配列のインデックスに1加算したインデックスで示す配列の位置を、注目配列+1と呼ぶ事とし、また、注目配列のインデックスに1を減算したインデックスで示す配列の位置を、注目配列-1と呼ぶものであると言う事とし、圧縮ファイルが一定の規則で作成されているので、その順番で読み込んで圧縮ファイルを圧縮されていない元のファイルの状態に戻すと言う展開処理を行う事とし、圧縮ファイルを1byteずつ読み込んで全て読み込む事が可能なサイズで1byteのstring型で配列を作成して、作成した配列をＤ圧縮ファイル配列と呼ぶ事とし、圧縮ファイルをバイナリー形式で開いて1byteずつ最初から最後まで全てのデーターを読み込んでＤ圧縮ファイル配列の最初の位置から最後の位置までに1byteずつ代入し、64bitの型で変数を作成して、作成した変数を読込位置変数と呼ぶ事とし、読込位置変数に0を代入し、64bitの型で変数を作成して、作成した変数を読込量変数と呼ぶ事とし、読込量変数に6を代入し、64bitの型で変数を作成して、作成した変数を読込終端変数と呼ぶ事とし、読込終端変数に6を代入し、6個のサイズで1byteのstring型で配列を作成して、作成した配列をＤ位置マーク1配列と呼ぶ事とし、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の位置から読込量変数の数値までのデーターを1byteずつ読み込んで、1byteずつＤ位置マーク1配列の末尾に代入し、6個のサイズで8byteのstring型の配列を作成して、作成した配列を位置マーク2進配列と呼ぶ事とし、以下の繰り返し処理を2進数変換1繰り返し処理と呼ぶ事とし、位置マーク1配列の最初のインデックスの8bitのデーターを取得して2進数に変換して位置マーク2進配列の末尾に代入し、インデックスに1を加算して2進数変換1繰り返し処理の最初に戻って処理を続行し、位置マーク1配列の最後の位置のデーターの処理が終了したら、2進数変換1繰り返し処理を終了し、以下の繰り返し処理を桁調整1繰り返し処理と呼ぶ事とし、位置マーク2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて分岐し、この分岐をバイト1分岐と呼ぶ事とし、バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字に満たない場合は、位置マーク2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得した位置マーク2進配列の位置に作成した文字列を上書きで代入し、バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字の場合は、何も行わない事とし、バイト1分岐を終了し、位置マーク2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整1繰り返し処理を終了し、3個のサイズで16byteのstring型で配列を作成して、作成した配列を位置マーク連結配列と呼ぶ事とし、1byteの型で変数を作成して、この変数をインデ1変数と呼ぶ事とし、インデ1変数に0を代入し、以下の繰り返し処理を2バイト連結1繰り返し処理と呼ぶ事とし、位置マーク2進配列のインデックスを使用して位置マーク2進配列のデーターを8byte取得して位置マーク2進配列の注目配列+1のデーターを8byte取得し、以下の分岐を注目条件1分岐と呼ぶ事とし、注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、2バイト連結1繰り返し処理を終了し、注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、注目配列のデーターの後方に注目配列+1のデーターを連結して、連結して作成したデーターを位置マーク連結配列のインデックスとしてインデ1変数を使用して位置マーク連結配列に代入し、インデ1変数のデーターに1を加算して、注目条件1分岐を終了する事として、注目配列の位置のインデックスに2を加算して2バイト連結1繰り返し処理の最初に戻って、繰り返し処理を繰り返して、位置マーク2進配列の最後の位置よりも一つ手前の位置のデーターを注目配列として処理し終わったら、2バイト連結1繰り返し処理を終了すると言う処理を行うという具合の様に、一個の配列からインデックスを使用して同時に2個の配列のデーターを取得して処理するソフトウェアを記録した記録媒体
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを圧縮する際に必要となる位置を示す数値の符号化技術と、一個の配列からインデックスを使用して同時に数個のデーターを取得する技術に関する
【背景技術】
【０００２】
圧縮技術に関する文献としては、〔非特許文献１〕がある。数値記録技術に関する文献としては、〔特許文献１〕がある。
【特許文献１】特許第５３３６６４５号 倍数乗数分割ソフトウェアを記録した記録媒体
【非特許文献１】奥村晴彦・山崎敏 著 ＬＨＡとＺＩＰ 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版
【０００３】
〔非特許文献１〕は、ＺＩＰ形式の圧縮技術とＬＺＨ形式の圧縮技術を説明した文献である。それとともに、今日までに開発された圧縮技術を紹介している文献である。
〔非特許文献１〕は、4ページから5ページにランレングス圧縮の説明が書かれている。本発明のマルメ圧縮ソフトウェアを記録した記録媒体は、ランレングス圧縮を行うソフトウェアである。
【０００４】
〔非特許文献１〕は、15ページにＬＺＳＳ法と言う圧縮技術を紹介している。内容を以下の[ ]内に記述する。[ 同じ文字列が現れたら、それを以前に現れた位置（オフセット）と文字数（一致長）で置き換えるというだけのものです。例えば次のような文字列を圧縮したいとしましょう。
ＨOＧＥＨOＧＡ
2度目に現れた3文字の列ＨOＧは、すでに4文字前に現れていますので、次のように符号化することができます。
ＨOＧＥ(４文字前の3文字)Ａ ]と、記述している。圧縮対象ファイルの圧縮データーに符号化した文字と文字数を書き込んで圧縮する技術であると説明している。
以下に、圧縮データーとは、圧縮対象ファイルのデーターの中から圧縮する事ができた部分を取り除いた圧縮が出来なかった部分のデーターの事である。また、以下に、辞書データーとは、辞書に記録されているデーターの事を言い、辞書データーとは、圧縮されたファイルを圧縮されていない元のファイルの状態に戻す為に必要となる、圧縮した文字と文字の個数と先頭位置などのデーターの事を言う。
圧縮データーに符号化した文字と文字数を書き込んで圧縮するＬＺＳＳ法と言う圧縮技術は、圧縮技術を利用したソフトウェアで普通に行われている技術である。本発明のマルメ圧縮ソフトウェアを記録した記録媒体では、圧縮データーに文字と文字数を書き込まずに、辞書に圧縮データーの先頭位置と圧縮した文字と文字数を記録して、辞書と圧縮データーを連結して圧縮ファイルを作成する技術である。
また、〔非特許文献１〕は、103ページに辞書圧縮の技術的特徴を記述している。内容を以下の[ ]内に記述する。[ 例えば、今日の夕飯の献立をメールで知らせるときに「ご飯と味噌汁と生姜焼きとポテトサラダよ」とすのではなく「月曜日と同じ」と知らせるわけです。このときデータ量(文字数)は減って圧縮されていますが、伝えるべき情報は伝わります。Slidedicでは入力文字列に対して「何文字前と同じ」という情報を抽出し変換する処理をおこないます。]と記述している。この様に、圧縮ファイルの圧縮する文字列の先頭位置に、何文字前の何文字の文字列と同じと言うデーターを書き込んでしまうのが普通に行われている圧縮技術である。ファイルの先頭から何文字目と言う何byteも消費する先頭位置を示す数値を使わなければならないと言う問題を回避する手段として、行われているのが、ＬＺＳＳ法と言う圧縮技術である。従来から、小さいファイルを圧縮する場合では、ファイルの先頭から何文字目と言う何byteも消費する先頭位置を示す数値を使っても、全く問題にならないので、小さいファイルを圧縮する場合は、ＬＺＳＳ法と言う圧縮技術を使わずに、先頭位置を示す数値と圧縮した文字と文字数を辞書に記録して、圧縮データーと連結して圧縮ファイルを作成すると言う圧縮技術が従来からある。しかし、本発明は、倍数と余りと記号との組み合わせで、先頭位置を示す数値を小さい桁数で記録する事に成功した発明である。従来の小さいファイルを圧縮する圧縮技術で使用されている先頭位置を示す数値を使用した圧縮技術では、出来なかった圧縮率の良さを実現している圧縮技術である。
また、本発明のマルメ圧縮ソフトウェアを記録した記録媒体に於ける数値記録技術の何文字後と言う記録を行う技術以外の部分を使用して、ＬＺＳＳ法を使用した圧縮技術の場合でも、本発明の簡単なレパートリーであると言えるので、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
数値記録技術とは、数値を小さい桁数で記録する符号化技術の事である。
本発明のマルメ圧縮ソフトウェアを記録した記録媒体に於ける数値記録技術の数値を作成する工程の処理工程を記述しているのは、実施例の段落〔００４６〕の符号化繰り返し処理の部分であり、元の数値に戻す処理を実施しているのは、実施例の段落〔００８４〕の符号復元繰り返し処理の部分である。
以下に、圧縮文字の先頭位置を示す数値の事を位置または、先頭位置と呼んだりする。
【０００５】
〔特許文献１〕は、乗数と倍数と余りと中間マークと終端マークで構成された記録技術である。本発明は、倍数と余りと記号で数値を記録する数値記録技術であるが、倍数も余りも各々2byteの数値で記録する事という制約の中で使用する数値記録技術なので終端マークが存在しない。終端マークが無くても、2byteずつ読み込んで計算する事で元の数値に戻せる数値記録技術であるから、終端マークを必要としないのである。
本発明のマルメ圧縮ソフトウェアを記録した記録媒体の倍数と余りと記号で数値を記録する数値記録技術の事を倍数値記録技術と呼ぶ事とする。
倍数値記録技術は、〔特許文献１〕で使用されている中間マークに似ているようにも思われるかもしれないが、倍数が連続している場合は、倍数を表す数値を削除して記号を変える事で倍数が連続している事を表すと言う技術で、〔特許文献１〕とは全く違う記録技術である。また、倍数が同じ場合は、余りを表す数値だけで記録する技術であり、〔特許文献１〕の倍数乗数分割ソフトウェアを記録した記録媒体とは、全く異なる数値記録技術である。
倍数と余りと記号やマークで数値を記録するという技術を使用する圧縮技術は、今までにない処理技術を用いて辞書データーを作成しているものである。
〔非特許文献１〕は、今日までの圧縮技術を簡単に網羅しているが、配列データーから同時に数個のデーターを取得して比較検査する処理は記述されていない。画像処理技術で注目画素の近傍画素を検査する処理で使われている注目画素+1や注目画素-1などの処理を、圧縮技術を行う処理に使用しているのが本発明である。従来からある圧縮技術では使用していない技術であると確信している。既に画像処理技術で使用されている技術であるが圧縮技術で使用している技術なので使用目的が違う為、特許に相当する新規の技術だと確信している。
本発明の実施例では、同じ文字が連続しているかどうかの検査をするのに使用している。注目文字と次の文字とを比較して同じ文字であるかどうかを検査してランレングス圧縮の対象文字なのかどうかを判断させる為の検査を行わせている。
〔非特許文献１〕には、辞書圧縮の場合でもランレングス圧縮の場合でも一致文字列をサーチする技術に関しては一切記述されていないので不明である。
しかしながら、ランレングス圧縮技術では、1byteずつデーターを読み込ませて、先に読み込ませたデーターを変数に代入し、次に読み込ませたデーターとを比較して、同じ文字であった場合に文字数をカウントすると言う技術で同じ文字が連続しているかどうかを検査するのに「変数に代入して検査する技術」が普通であろうと推測している。ランレングス圧縮技術では、1byteずつデーターを読み込ませて、先に読み込ませたデーターを変数に代入し、次に読み込ませたデーターとを比較して、同じ文字であった場合に文字数をカウントすると言う技術で同じ文字が連続しているかどうかを検査するのにも「変数に代入して検査する技術」が普通であろうと推測する。「変数に代入して検査する技術」が普通であろうと推測する理由は、バブルソートの基本的処理工程に似た処理なので使用する可能性が高いと考えられるからである。
本発明の実施例で使用している処理工程は、配列のインデックスに相当する配列のデーターと次の配列に代入されているデーターの両方を同時に取得して検査するものである。普通、行われているサーチ技術とは違う技術で処理を行っていると確信している。配列のインデックスに相当する配列のデーターが、注目画素に相当する注目配列であり、次の配列に代入されているデーターが、注目画素+1に相当する注目配列+1である。
また、本発明の実施例では、別の部分でも使用している。記号の前後の状態を検査する為に、配列のインデックスに相当する配列のデーターと、配列のインデックス+1に相当する配列のデーターと、配列のインデックス-1に相当する配列のデーターとを、比較検査している。配列のインデックスに相当する配列のデーターが注目画素に相当する注目配列であり、配列のインデックス+1に相当する配列のデーターが注目画素+1に相当する注目配列+1であり、配列のインデックス-1に相当する配列のデーターが注目画素-1に相当する注目配列-1である。
以降、配列のインデックスに相当する配列のデーターと、配列のインデックス+1に相当する配列のデーターと、配列のインデックス-1に相当する配列のデーターを同時に取得して、比較検査する技術の事を判断用検査技術と呼ぶ事とする。
判断用検査技術は、圧縮技術や画像処理技術以外の他のソフトウェアで使用する事が出来ると考えられる。特に、人工知能で使用する場合、使用の有用性が高い技術であると確信している。また、人工知能でも判断用検査技術は、未だに使われていないと確信している。また、圧縮技術や画像処理技術以外の他のソフトウェアで使用する場合でも、複雑な処理を高速に行う事が出来るので有用な処理だと考えられるが、未だに使われていないと確信している。
判断用検査技術は、配列のインデックスに1の数値を加算したり減算したりしているものであるが、加算減算する数値は、1に限るものではない。10を加算しても良いし、15を減算しても良いのである。つまり、任意の数値を配列のインデックスに加算、または、インデックスに減算して、任意の数だけ検査対象の配列データーを同時に取得して検査する技術である。例えば、数値の並びの共通の規則性を算出するなどの考えるというソフトウェアによる自動的な処理が簡単に行えると考えている。
(例1) 3 5 7 9 の共通の規則性は、2飛びである。
(例2) 2 5 8 11 の共通の規則性は、3飛びである。
判断用検査技術は、上記の(例1)や(例2)の様な数値の並びを検査して共通の規則性を求める人工知能が簡単に作れると思われる技術である。
従って、人工知能で判断用検査技術を使用した場合は、本発明の簡単なレパートリーであると言えるので本発明であると明言する。画像処理以外の他のソフトウェアで判断用検査技術を使用した場合も、本発明の簡単なレパートリーであると言えるので本発明であると明言する。
また、段落〔００７１〕の2バイト連結1繰り返し処理では、注目配列と注目配列+1とを連結してデーターを作成している。段落〔００７１〕の2バイト連結1繰り返し処理の様な条件判断をしない場合でも、1個の配列からインデックスを利用して2個のデーターを取得している場合は、本発明の判断用検査技術の簡単なレパートリーであるから、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
また、判断用検査技術は、1個の配列から注目配列よりも前方の配列や後方の配列のデーターを取得する技術であるが、配列の外側からデーターを取得しようとしてしまうエラーを回避する必要がある。実施例では、配列よりも外側からデーターを取得しない様に、配列よりも外側からデーターを取得してしまう事になる場合は、処理を行わせないと言う分岐処理を行わせる事でエラーを起こさない様にしているが、この方法をＩＦ条件制御処理と呼ぶ。ＩＦ条件制御処理は、段落〔００７９〕の実施例で使用している。実施例では、段落〔００７９〕以外でもＩＦ条件制御処理を使用しているが、代表的に段落〔００７９〕でＩＦ条件制御処理を使用していることを明記した。
ＩＦ条件制御処理ではない方法でも、配列の外側からデーターを取得しない様にする方法がある。その方法を大配列検査処理と呼ぶ。大配列検査処理とは、注目配列+1とか注目配列-3とかの場合に注目配列の位置よりも外側のインデックスに相当する注目配列+1とか注目配列-3の位置分だけ配列のサイズを大きくして、大きくした配列の部分のデーターを空白にしておいてデーターを取得する事でＩＦ条件制御処理を行う必要性を回避する方法である。大配列検査処理も簡単なレパートリーなので本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
また、ＩＦ条件制御処理ではない方法として、大配列検査処理以外の方法もある。注目配列と注目配列+1のデーターを取得する場合に、配列のインデックスで最後の位置を示すインデックスの数値から1を減算した数値までの処理で処理を終了させる方法である。この方法を減算インデックス処理法と呼ぶ。減算インデックス処理法も、簡単なレパートリーであるから、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。減算インデックス処理法は、実施例の段落〔００４１〕の注目配列1繰り返し処理で使用している処理である。
注目配列1繰り返し処理では、「」内に記述した処理工程を説明している。
「圧縮対象配列の最後の位置に代入されたデーターよりも1byte手前の位置に代入されたデーターを注目配列として注目配列1繰り返し処理を行ったら、注目配列1繰り返し処理を終了する。」と言う処理である。
注目配列1繰り返し処理での処理のように、配列の最後の位置まで注目配列の位置をずらさずに処理を終わる処理技術が減算インデックス処理法である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ランレングス圧縮は、同じ文字が並んでいた場合、並んでいる文字の個数をカウントして、何という文字が何文字という具合に圧縮する技術の事を言う。
ランレングス圧縮する場合は、ファイルの先頭から何文字目の何と言う文字を何文字と記録する事で圧縮を行う技術である。
【０００７】
巨大ファイルを圧縮する場合に、圧縮する文字が巨大ファイルの最後の方に存在する場合は、巨大ファイルの先頭位置から何文字目の文字から何文字を圧縮すると記録するわけだが、先頭位置を表す数値だけでも、何byteも消費してしまうと言う問題が発生する。本発明は、先頭位置を表す数値だけでも、何byteも消費してしまうと言う問題を解決する事で処理速度が低下してしまう現在の圧縮技術の複雑な処理工程を簡略化して処理速度を高速化するものである。
【０００８】
普通、先頭位置を表す数値だけでも、何byteも消費してしまうと言う問題を解決する為に、何文字目の何という文字を何文字圧縮すると言う情報を圧縮データーの何文字目の位置に書き込む事で、何文字目の位置という位置情報を記録しないで済ませる技術を採用しているが、このＬＺＳＳ法と言う技術が複雑な処理を行わせる原因になっていて処理速度の低下に繋がっていると考えられる。本発明は、巨大ファイルの先頭から何文字目と言う位置情報と圧縮した文字と文字の個数を辞書に記録して辞書を圧縮データーに連結させて圧縮ファイルを作成し、圧縮ファイルを元のファイルに戻す処理を行う際に、圧縮した文字と圧縮した文字の個数と先頭位置情報を辞書から取得する事によって元のファイルに戻す処理を行う技術を開発する事で処理速度の低下を回避するのが目的である。
本発明は、ＬＺＳＳ法を用いない圧縮技術の開発と言う目的を達成する為に、数値記録技術を用いる事によって辞書の巨大化を抑制する事に成功した発明である。また、本発明は、文字列検索と発明した数値記録技術が複雑な処理を行わなければならなかったと言う問題を解決する為に、その処理を高速化する必要性に駆られた為に、一個の配列から、インデックスを使用して同時に幾つものデーターを取得する技術として判断用検査技術を発明したものである。実施例では、一個の配列から、インデックスを使用して同時に2個のデーターを取得する技術を記述しているので請求項では、一個の配列から、インデックスを使用して同時に2個のデーターを取得する技術とした。
【０００９】
辞書圧縮と呼ばれる圧縮方法の場合でも、ファイルの何文字目の何と言う文字から何文字目までの文字列を圧縮すると言う先頭位置の情報が不可欠である。従って、本発明は、ランレングス圧縮技術で使用している技術であるが、辞書圧縮でも同様に使用できる技術なので辞書圧縮で使用しても本発明の簡単なレパートリーであるから、本発明である事を明言する。また、不可逆圧縮でも同様の位置情報の問題があるので、不可逆圧縮で本発明のマルメ圧縮ソフトウェアを記録した記録媒体の数値記録技術を使用しても本発明の簡単なレパートリーであるから、本発明である事を明言する。
【００１０】
コンピューターで普通に使われている文字（日本国では、文字コード2文字以上で1文字を表す平仮名や全角カタカナや漢字などの文字と、文字コード1文字で表す半角英数字と半角カタカナ文字の事）を、テキスト文字と記述する事とする。また、テキスト文字とリンクされている数値を文字コードと言う事がある。文字コードは、0〜255までの数値である。1byteとは、1文字分のbit数の事を言う。現在の1文字分のbit数は、8bitである。bitとは、桁数の事である。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているＣＰＵと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。
【００１１】
また、2進数の数値を2進数値と呼んだり、10進数の数値を10進数値と呼んだりすることがある。また、本発明のマルメ圧縮ソフトウェアを記録した記録媒体の事をマルメ圧縮ソフトウェアと略して呼ぶ事がある。また、本発明では、ファイルを圧縮する、または、ファイルを圧縮処理する、とは、ファイルを小さいサイズにする事を言う事とする。ファイルの圧縮工程とは、圧縮処理の工程の事である。また、圧縮されたファイルを元の大きさのファイルに戻す処理を展開すると呼んだり展開処理と呼んだりする事とする。ファイルの展開工程とは、ファイルを元のファイルに戻す展開処理の工程の事である。
【００１２】
変数の型とは、変数を作成する場合に指定するものであり、作成する変数のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」と言う意味は、変数のデーターを代入する事ができる領域に型の違うデーターを混在させることが出来ないと言う意味である。人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型がある。string型の変数ではない数値を代入する事が出来る型の変数もある。
string型の変数ではない、数値を代入する事が出来る変数を作成する場合は、「何bitの型で変数を作成する」または、「何byteの型で変数を作成する」と言う表現で変数を作成すると言う説明をする事とする。8bitの型で変数を作成すると言う表現で説明している場合の意味は、8bitの数値のデーターを代入する事ができる変数を作成すると言う意味である。
【００１３】
また、配列とは、データーを１個から複数のデーターを代入する事が出来るものを言い、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列のサイズの事を配列サイズと言ったりする事がある。配列にデーターを代入する事が出来る部分を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶ事とする。配列要素数または、配列の要素数は、配列のサイズと同じ意味のものである。
【００１４】
配列の型には、主に数値型とstring型の二種類がある。数値型の場合は、代入できるデーターは、数値のみである。string型の場合は、人間が読む事が出来る文字列の状態のデーターのみ代入できるものである。数値型とstring型という二種類の型は、配列だけではなく、変数の場合でも同じである。
【００１５】
数値型とstring型という二種類の型は、配列を作成する場合に指定するものであり、作成する配列のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」という意味は、型の違うデーターを配列のデーターを代入する事ができる領域に混在させることが出来ないという事である。実施例では、数値型の場合は、数値型の配列を作成すると断り書きをしない事とした。数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をする事とする。これを10の配列サイズで8bitの型で配列を作成するという表現で説明している場合で意味を説明する。この場合は、配列の要素１個に8bitのデーターを１個代入できる様なものとして、配列要素数10個で配列を作成するという意味である。
【００１６】
また、配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成すると通常、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。
【００１７】
配列のインデックスを取得する場合は、以下の様な処理を行う事で取得する。1byteの変数を作成してこの作成した変数を仮変数と呼ぶ事として、仮変数に0を代入して初期化する。配列に代入されたデーターが全て1byteであると仮定して配列のインデックスを取得する処理工程の説明を行う事とする。配列の最初の位置に代入されているデーターから最後の位置までに代入されたデーターを1byteずつ読む度に仮変数に代入された数値に1を加算する事で回数をカウントするという処理を行うと、仮変数に代入された数値と配列のインデックスとが対応した数値になるので仮変数に代入された数値が配列のインデックスとなるので、仮変数に代入された数値を取得するのが配列のインデックスの取得方法である。また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置という表現を配列の最後の位置という様に略した表現を行う場合がある。
【００１８】
配列のインデックスを取得する方法について例を示して詳しく説明する。配列のサイズが10の配列の場合で説明する事とする。配列のサイズが10の配列を作成するとインデックスは、0から9までの数値がコンパイラと呼ばれるプログラムを書く為に一般的に使われるプログラムによって自動的に付けられる。0から9までの数値が配列のインデックスとなるのである。そのインデックスを取得する方法は無い。そこで、最初の位置から配列の最後の位置までの連番として「0,1,2,3,4,5,6,7,8,9」という0番から9番までの連番を作成して、その連番の中から１個ずつ順番に数値を取得する事で実現するものである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に代入されたデーターからインデックスを取得する事は出来ない。代入されたデーターの位置を0から１ずつ数値を積算する事で得た数値をインデックスと同じ数値として使用するというのが普通のインデックスと呼ばれる数値の取得方法である。
【００１９】
string型の変数を作成する場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現で変数を作成する事とする。
string型で変数を作成する場合がある。string型とは、文字列を代入する事ができる変数の型を意味するものである。言い換えるとstring型とは、文字列型と言う言い方が出来るものである。string型で変数を作成して、作成したstring型の変数に文字列や文字を代入すると自動的に文字コードと言う数値から、人間が読む事ができる文字に変換されて変数に代入されるものである。しかし、数値のとしての文字コードを代入する事は出来ないようになっている型である。
【００２０】
string型で配列を作成する場合は、以下の様に表現する。「幾つのサイズで何bitのstring型の配列を作成する」という表現をする事とする。例えば、10個のサイズで16bitのstring型で配列を作成すると記述した場合で説明する。配列の１個のデーターを代入する事が出来る領域の１個のデーターが使用するメモリー量が2byteであるとし、10個のデーターを代入する事が出来る配列を作成するという事である。この10個のサイズで16bitのstring型で配列を作成する場合のメモリーの総使用量は、16bit×10という計算が可能となり、答えは、160bit(または、20byte)となる。
また、コンパイラによって、自動的に必要量のメモリー領域が確保されるのがstring型の特徴である。string型の特徴の為に、実際には、メモリー使用量を指定せずにソフトウェアを作成している。以下に、配列を作成するときにメモリーの必要量が不明な場合は、「幾つの配列サイズで2048byteのstring型で配列を作成する」と記述する事とする。以下に、変数を作成するときにメモリーの必要量が不明な場合は、「2048byteのstring型で変数を作成する」と表現する事とするが、データーを代入した時に2048byteを超えてしまう場合も予想できる。2048byteを超えてしまう場合であっても、確保するメモリー使用量が特定できない場合のメモリーの使用量の記述表現なので、全てのデーターを代入できるものとみなす表現であるとする。
【００２１】
string型と同じものとしてテキスト形式と言う形式もある。
ファイル操作を行う処理に指定するテキスト形式と呼ばれる形式がある。テキスト形式も、string型と同じで、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式である。テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現する事とする。従って、「テキスト形式を指定してファイルを保存する」ではなくて、「テキスト形式でファイルを保存する」または、「テキスト形式でファイルを開く」という表現で説明する事とする。
ファイル操作を行う処理に指定する形式には、バイナリー形式と呼ばれる形式がある。バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式である。バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現する事とする。従って、「バイナリー形式を指定してファイルを保存する」ではなくて、「バイナリー形式でファイルを保存する」または、「バイナリー形式でファイルを開く」という表現で説明する事とする。
バイナリー形式でファイルを開いて1byteずつ、ファイルの先頭の位置から順番にファイルの最後まで読み込むという表現を使用する事とする。
【００２２】
テキスト形式でファイルに記録して保存する場合は、人間が読める文字として保存される為に、1byteから数byteずつとなる。テキスト形式の場合は、文字コード1文字分ずつと言う指定となる為に、2byteであったり、3byteであったり、4byteである場合もある為である。これは、実施例で使用しているコンピューターが使用している文字コードが半角英数字の場合は、1byteずつの規格で作られており、漢字や平仮名などを表す際の規格は、2byte分、3byte分、4byte分の数値で各々、漢字や平仮名や全角カタカナを1文字として表示するように規格されている為に、データー量をはっきりと記述できないのである。実施例で使用したコンパイラの場合は、自動的に最初の1byte目の文字コードで1文字分の文字コードが何byteなのかをコンピューターに判断させて1文字分の文字コード分に相当する1byteから数byteずつ保存する事になる。しかしながら、何と言う文字を扱うのかが解らない為、サイズを一定にして記述できないのである。そこで、テキスト形式でファイルに記録して保存する場合は、1byteずつファイルに記録して保存すると表現する事にする。また、テキスト形式でファイルを開いて読み込む場合は、1byteずつ読み込むと表現する事にする。
【００２３】
テキスト形式とバイナリー形式は、ファイルを扱う場合のみ使用できる形式である。
実施例で使用しているコンパイラを使用した場合は、string型で変数を作成すると約20億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約20億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。
【００２４】
実施例で使用しているコンパイラを使用した場合は、string型で変数を作成するとメモリーの使用領域が自動的に代入されるデーターの量によって変化するものになっている。使用するコンパイラによっては、この様な自動的に代入される文字列の文字数によって変数のサイズを変更する機能が無い場合がある。そこで、本発明の明細書では、string型で変数を作成する場合、型として使用するメモリー使用量を指定する事とする。実施例で使用しているコンパイラを使用した場合、実際には、型として使用するメモリー使用量を指定して変数を作成する事はできない。
【００２５】
以下の段落に於いて、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、データーを数byteずつ代入していく場合、配列の最初の位置にデーターを代入した後は、配列に代入されたデーターの最後の位置にあるデーターの次の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の位置の指定を末尾と表現する事が出来る。未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして数byteずつデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現する事が出来ると考えられる。そこで、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合は、配列の最初の位置に代入する場合であっても、配列の末尾に代入すると記述している場合がある。また、以下の段落で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに数byteずつ配列に代入するものとする。
【００２６】
以下に、関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する事とする。また、実施例では、文字列操作関数と言う関数を使用して処理している。文字列操作関数とは、文字列の状態で処理する関数の事を言う。例えば、「ああ言えば、@こう言う」と言う文字列全体を検査して「@」が含まれているかどうかを検査するとか、「@」の位置は、先頭から何文字目なのかを検査するとか、「@」で文字列を分割して「ああ言えば、」と、「こう言う」の二つに分割するなどの処理が出来る様になっている関数の事を文字列操作関数と言う。文字列操作関数には、先頭から何文字取得する等の処理も可能である。文字列操作関数は、他にも、多種多様な操作が出来る様になっている。
【課題を解決するための手段】
【００２７】
倍数と余りで数値を表す技術で先頭位置を記録する事で大きな数値を記録する。図１０のマルメ圧縮ソフトウェアの数値記録技術の説明１図を参照。
倍数が無い場合は、「数値」のみを記録する。倍数がある場合は、「倍数/数値」で記録する。倍数が同じ場合は、「倍数/」を記録せずに「数値」のみを記録する。倍数が同じ場合は、「倍数/」を記録せずに「数値」のみを記録した状態を表したのが、図１１のマルメ圧縮ソフトウェアの数値記録技術の説明２図である。倍数が同じ場合は、「倍数/」を記録せずに「数値」のみを記録すると言うのは、何文字後というのと同じである。更に、辞書データーを小さくする。倍数が連続している場合は、「倍数/」を「?」に置き換えて「?数値」として記録する。倍数が連続している場合は、「倍数/」を「?」に置き換えて[?数値]として記録した状態が、図１２のマルメ圧縮ソフトウェアの数値記録技術の説明３図である。
【００２８】
以下に、プログラマーとは、ソフトウェアを作成する人間の事を言う。人工知能でソフトウェアを作成する場合は、人工知能もプログラマーである。
図１２のマルメ圧縮ソフトウェアの数値記録技術の説明３図と、〔特許文献１〕特許第５３３６６４５号 倍数乗数分割ソフトウェアを記録した記録媒体と比較すると大きく違う事が確認できると思う。また、通常の辞書圧縮で行われている、何文字前の何文字と同じと言う記録技術に酷似している部分があるが、本発明のマルメ圧縮ソフトウェアの数値記録技術は、圧縮データーに直接記録する符号では無い。本発明のマルメ圧縮ソフトウェアの数値記録技術は、辞書データーに記録する数値記録技術なので、全く違う技術である。また、倍数が連続している場合に、「倍数/」を「?」に置き換えて「?数値」として記録する技術は、今までに無い数値記録技術である。また、記号の「/」と「?」は、適当に決めた記号である。任意に、その他の文字を記号として使用しても良い。また、記号ではなくて、数値をマークとして使用する事も可能である。数値をマークとして使用する場合は、文字列操作関数が使用できないので、全て配列に一文字分ずつ数値を代入して処理する必要がある。ここで言う一文字分ずつとは、最大値を2byteや4byteや10byteや16byteで表す事をフログラマーが任意に決定する一文字分の事である。例えば、2byteの数値までを一文字分の数値だとプログラマーが決めて、メモリーを確保して変数や配列を作成すると16bitの型で変数や配列を作成する事になるわけだが、16bitに代入できる最大値までが、一文字分となると言う意味である。2進数で16bitの数値は、1111111111111111が最大値となるが、10進数に変換すると、65535である。
本発明の実施例では、全てを配列で処理せずに文字列操作関数を使用して処理しているが、文字列操作関数を使用しなくても処理が可能である。文字列操作関数を使用しない処理だと全てを配列や変数で処理する事で処理が出来るのである。配列だけで処理する技術は、簡単なレパートリーなので本発明のマルメ圧縮ソフトウェアを記録した記録媒体であると明言する。実施例では、文字列操作関数を使用して処理する為に、記号の「/」や記号の「?」を使用しているだけである。最初から最後まで文字の記号を使わずに数値をマークとして使用して処理する場合も、本発明の簡単なレパートリーであるから、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
【発明の効果】
【００２９】
本発明ののマルメ圧縮ソフトウェアを記録した記録媒体の倍数値記録技術を辞書圧縮で使用した場合、辞書と圧縮データーで構成された圧縮ファイルを作成する事になるので、処理工程が単純明快になり、圧縮ソフトウェアを制作しやすくなる。辞書には、圧縮した文字と先頭位置と文字数が記録されていてるので、展開処理を高速で行えるというメリットがある。ＬＺＳＳ法では、何文字前の何文字と同じというデーターから、圧縮データーから文字を探し出す必要がるので処理が複雑で処理速度が低下する原因となっている。本発明のマルメ圧縮ソフトウェアを記録した記録媒体は、ＬＺＳＳ法が処理速度を低下させてしまうという問題を解決した圧縮技術である。
また、本発明のマルメ圧縮ソフトウェアを記録した記録媒体の判断用検査技術を他のソフトウェアで使用した場合は、判断基準を複雑にする事が可能になり、今までにない複雑な処理が出来る様になるという効果が期待できる。また、判断用検査技術を人工知能に使用した場合は、今までできなかった処理が安易に可能になる程の技術だと確信している。
【図面の簡単な説明】
【００３０】
【図１】マルメ圧縮ソフトウェアのフローチャート図
【図２】マルメ圧縮ソフトウェアで使用した機材の説明図
【図３】マルメ圧縮ソフトウェアの操作画面図
【図４】マルメ圧縮ソフトウェアのデーター表示 1画面図
【図５】マルメ圧縮ソフトウェアのデーター表示 2画面図
【図６】圧縮工程終了後のマルメ圧縮ソフトウェアの操作画面図
【図７】圧縮工程終了後のマルメ圧縮ソフトウェアのデーター表示 1画面図
【図８】展開工程終了後のマルメ圧縮ソフトウェアの操作画面図
【図９】展開工程終了後のマルメ圧縮ソフトウェアのデーター表示 2画面図
【図１０】マルメ圧縮ソフトウェアの数値記録技術の説明１図
【図１１】マルメ圧縮ソフトウェアの数値記録技術の説明２図
【図１２】マルメ圧縮ソフトウェアの数値記録技術の説明３図
【発明を実施するための形態】
【００３１】
図２は、実際とは、多少異なる事を明記する。マルメ圧縮ソフトウェアは、図２の＜マルメ圧縮ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作するプログラムである。図２の＜マルメ圧縮ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源は、図符号Ｂのコンピューター本体と図符号Ａのモニターと図符号Ｃのキーボードと図符号Ｄのマウスの合計４個のパーツで構成された機材であるが、これらの合計４個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Ｂのコンピューター本体は、パーソナルコンピューターと一般的に呼ばれているコンピューターである。図符号Ｂのコンピューター本体には、ハードディスクドライブなどの記録媒体やＣＰＵや本体メモリーなどと呼ばれる装置が内蔵されており、本発明のマルメ圧縮ソフトウェアは、図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のマルメ圧縮ソフトウェアがインストールされていて、図符号Ｂのコンピューター本体から本発明のマルメ圧縮ソフトウェアを起動する事が出来る場合は、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明のマルメ圧縮ソフトウェアがインストールされているものとする。
本発明のマルメ圧縮ソフトウェアがインストールされている図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明のマルメ圧縮ソフトウェアを起動すると本発明のマルメ圧縮ソフトウェアは、図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明のマルメ圧縮ソフトウェアに書かれたＣＰＵが処理を予定している命令文が必要な時に必要量ＣＰＵに読み込まれ、そのＣＰＵに読み込まれた命令文がＣＰＵによって実行される事によってコンピューターによって本発明のマルメ圧縮ソフトウェアが動作する。
従って、本発明のマルメ圧縮ソフトウェアがハードウェア資源を使用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明のマルメ圧縮ソフトウェアに書かれた命令文は、コンピューター本体のＣＰＵによって処理されると表現しなおす事ができるものである。
【００３２】
図２の＜マルメ圧縮ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作するマルメ圧縮ソフトウェアであるかを段落〔００３１〕にて説明したが、コンピューターの形状は、図２の＜マルメ圧縮ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源に限定できるものではなく、図符号Ａのモニター、図符号Ｂのコンピューター本体、図符号Ｃのキーボード、図符号Ｄのマウスが一体化したものや、図符号Ｄのマウスが存在しない構成のものや、図符号Ａのモニター、図符号Ｂのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後、もっと多くのいろいろな形状のコンピューターが開発されていくであろうと考えられる。図２の＜マルメ圧縮ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源でなくても、類似と言い得る様なコンピューターを使用して本発明のマルメ圧縮ソフトウェアを動作させている場合も本発明のマルメ圧縮ソフトウェアである事を明言する。
【実施例】
【００３３】
図２、図３、図４、図５、図６、図７、図８、図９は、実際とは、多少異なる事を明記する。
【００３４】
以下の段落に於いて、変数を作成すると記述しているが変数や配列が作成される場所は、図符号Ｂのコンピューター本体の内部にある本体メモリーに作成される。但し、ＯＳと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Ｂのコンピューター本体の内部にある本体メモリーまたは、図符号Ｂのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、変数や配列を作成すると記述している場合の変数や配列が作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されると言う表現になる。
【００３５】
以下の段落に於いて、全て一次元配列や変数を使用してプログラムを作成しているが、多次元配列を使用したり、ファイルを使用する事でも同じ処理が出来ると考えられる。また、一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明のマルメ圧縮ソフトウェアを記録した記録媒体の単純なレパートリーでしかないと言う事を明言する。
以下のマルメ圧縮ソフトウェアを記録した記録媒体とコンピューターによる自動処理の部分の処理工程を記述したＣＰＵに対する命令文の事をプログラムと呼ぶ事とする。また、配列のサイズの調整なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、配列の型の変換処理なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、変数の型の変換処理についても当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、配列のデーターを全て別の配列にコピーする場合も、常識的な技術なので何も書いていない場合がある。また、配列のサイズを変更する処理も常識的な処理なので何も書いていない。
また、繰り返し処理の途中で配列を作成したり、変数を作成する場合がある。繰り返し処理の途中で配列を作成したり変数を作成すると、既に作成されている同名の配列や変数に代入されているデーターは全て自動的に削除されて、新規に配列を作った場合と同じ状態になる。繰り返し処理の途中で配列や変数を作成した場合に、データーが削除されて新規に配列や変数を作成したのと同じ状態になる事は、常識的な自動処理工程なので何も記述していない。
また、データーの内容を表示する処理工程やファイルの内容を表示する処理工程も常識的な処理なので何も書いていない場合がある。
また、配列に代入されているデーターを別の配列にコピーする技術も常識的な処理なので何も書いていない場合がある。
以下に、「配列のデーターを代入できる領域の最初の位置から最後の位置まで」を「配列の最初の位置から最後の位置まで」と略して表現する場合がある。また、「配列のデーターを代入できる領域の最初の位置」や「配列のデーターを代入できる領域の最後の位置」や「配列のデーターを代入できる領域の2番目の位置」の事を各々、「配列の最初の位置」や「配列の最後の位置」や「配列2番目の位置」と表現する事がある。また、「配列の最初の位置」や「配列の最後の位置」や「配列2番目の位置」の事を「配列の最初のデーター」や「配列の最後のデーター」や「配列2番目のデーター」と表現する場合がある。
また、「配列に代入されたデーター」や「変数に代入されたデーター」の事を各々、「配列のデーター」や「変数のデーター」または、「変数」や「配列」と略して表現する事がある。
また、配列や変数に代入されたデーターの事を「配列の数値」「変数の数値」と呼ぶ事がある。
【００３６】
図１の＜マルメ圧縮ソフトウェアのフローチャート図＞を参照の事。図符号Ｄと図符号Ｅには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明のマルメ圧縮ソフトウェアを記録した記録媒体を起動すると、図３の＜マルメ圧縮ソフトウェアの操作画面図＞の様な操作画面が図符号Ａのモニターに表示される。
【００３７】
ステップ１００の「圧縮対象ファイルを選択して図符号Ｐの圧縮開始ボタンをクリックして圧縮工程をスタートさせる処理工程」に進む。ステップ１００は、人為的な手動による操作または入力処理工程である。ステップ１００は、圧縮工程の処理である。
図符号Ｅの＜圧縮対象ファイルを指定するテキストボックス＞に図符号Ｃのキーボードなどの入力デバイスを使用して圧縮対象ファイルを指定する事が出来る様になっている。また、図符号Ｓの圧縮ファイル指定用参照ボタンを図符号Ｄのマウスなどの入力デバイスを使用してクリックする事でハードディスク内を参照して圧縮対象ファイルを選択する事が出来る様になっている。
図符号Ｅの＜圧縮対象ファイルを指定するテキストボックス＞に図符号Ｃのキーボードなどの入力デバイスを使用して圧縮対象ファイルを指定する操作を行うか、図符号Ｓの圧縮ファイル指定用参照ボタンを図符号Ｄのマウスなどの入力デバイスを使用してクリックする事でハードディスク内を参照して圧縮対象ファイルを選択する事で圧縮対象ファイルを指定する操作を行うかのどちらかの操作をする事で圧縮対象ファイルを指定する。次に、図符号Ｐの＜圧縮開始ボタン＞を図符号Ｄのマウスなどの入力デバイスを使用してクリックする事で圧縮工程の処理を開始する。
【００３８】
次に、ステップ１０１の「圧縮データーと辞書データーを作成し、圧縮ファイルを作成し保存する 圧縮ファイルの内容を表示する工程」に進む。ステップ１０１は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
【００３９】
圧縮対象ファイルをテキスト形式で開いて記録されている全てのデーターを1byteずつ読み込んで図符号Ｆの圧縮対象ファイルの内容を表示するリッチテキストボックスに表示する。
【００４０】
圧縮対象ファイルのデーターを1byteずつ読み込んで、圧縮対象ファイルのデーターを1byteずつ全て代入できるサイズで8bitのstring型で配列を作成する。作成した配列を圧縮対象配列と呼ぶ事とする。圧縮対象ファイルの最初から最後までのデーターを1byteずつ読み込んで、圧縮対象配列の末尾に1byteずつ全てのデーターを代入する。
【００４１】
圧縮対象配列と同じサイズで64bitのstring型で配列を作成する。作成した配列を位置1配列と呼ぶ。
圧縮対象配列と同じサイズで16bitのstring型で配列を作成する。作成した配列を個数1配列と呼ぶ。
圧縮対象配列と同じサイズで8bitのstring型で配列を作成する。作成した配列を文字1配列と呼ぶ。
8bitのstring型で変数を作成して、作成した変数を仮文字1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数を仮位置1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数をカウント1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数をインデックス1変数と呼ぶ。インデックス1変数に0を代入する。
以下の繰り返し処理を注目配列Ａ繰り返し処理と呼ぶ。
注目配列Ａ繰り返し処理では、インデックス1変数に代入された数値を圧縮対象配列のインデックスとして使用して圧縮対象配列のデーターを1byte取得して、取得した配列の位置を注目配列とする。以下の繰り返し処理を注目データー１繰り返し処理と呼ぶ。
注目配列の一つ先の位置の配列の要素を注目配列+1と呼ぶ。
以下に、一つ先の位置のデーターの説明を行う。
圧縮対象配列には、1byteずつデーターが代入されているので一つ先のデーターとは、1byte先の位置のデーターの事を言う。
一つ先の位置のデーターの説明を終了する。
注目配列の一つ先の位置に代入されているデーターを1byte取得する。
注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、同じ場合と同じでない場合とに分岐する。この分岐をカウント1分岐と呼ぶ。
カウント1分岐で注目配列に代入されたデーターと注目配列+1に代入されたデーターが同じ場合は、カウント1変数に1を加算する事で同じ文字であった回数をカウントして、仮文字1変数に、注目配列に代入されているデーターを上書きで代入し、仮位置1変数に注目配列のインデックスを代入し、注目配列+1の配列を1byte先にずらして注目データー１繰り返し処理の先頭に戻って注目データー１繰り返し処理を続行する。
注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、注目配列+1が、圧縮対象配列の最後の位置に代入されたデーターを検査するまで1byetずつ注目配列+1の位置を先にずらして、注目データー１繰り返し処理の先頭に戻って処理を続行する。
注目配列に代入されたデーターと注目配列+1に代入されたデーターが同じでない場合は、何も行わない。
カウント1分岐を終了して、注目データー１繰り返し処理を終了する。
カウント1変数に代入された数値が5より大きい場合と4以下の場合とに分岐させ、この分岐を中断1分岐と呼ぶ。
中断1分岐で、カウント1変数に代入された数値が4より大きい場合は、6文字以上同じ文字が連続している事になるので、圧縮対象として処理する事にし、文字1配列の末尾に仮文字1変数のデーターを代入し、個数1配列の末尾にカウント1変数に代入されたデーターに1を加算する事で、回数を文字の個数に変換して代入し、位置1配列の末尾に仮位置1変数のデーターを代入し、カウント1変数に上書きで0を代入する。
中断1分岐で、カウント1変数に代入された数値が4以下の場合は、圧縮しないので、カウント1変数に上書きで0を代入する。
中断1分岐の分岐を終了して、インデックス1変数に1を加算する。注目配列1繰り返し処理の先頭に戻って処理を続行する。
圧縮対象配列の最後の位置に代入されたデーターよりも1byte手前の位置に代入されたデーターを注目配列として注目配列1繰り返し処理を行ったら、注目配列1繰り返し処理を終了する。
【００４２】
位置1配列と個数1配列と文字1配列の配列サイズの調整を行う。
以下に、配列のサイズ調整の説明を行う。
string型の配列の場合は、配列のデーターを代入する事が出来る領域のどこまでの位置にデーターが入力されているかを調べる事で、必要な配列の最初の位置から最後の位置までの配列のサイズを知る事が出来る。string型の配列の場合は、必要な配列のサイズを知る事が出来る事から、逆に必要のない配列の部分をカットして配列の要素数を減らすと言う配列のサイズの調整を行う事が出来る。他方、string型以外の配列の場合は、配列に空白が無く、最初から0が入力されているのでサイズ調整する事が出来ない。配列のサイズ調整は、常識的処理である。
配列のサイズ調整の説明を終了する。
圧縮対象配列と同じサイズでstring型の8bitの配列を作成する。作成した配列をNullデーター配列と呼ぶ。
Nullデーター配列に、圧縮対象配列の最初から最後までの全てのデーターをコピーする。
インデックス1変数に0を上書きで代入する。
64bitの型で変数を作成する。作成した変数を再帰1変数と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を再帰1繰り返し処理と呼ぶ。
インデックス1変数に代入された数値と再帰1変数のデーターをインデックスとして位置1配列に代入されたデーターが同じである場合と同じでない場合とに分岐する。この分岐を検査1分岐と呼ぶ。
インデックス1変数に代入された数値と位置1配列に代入されたデーターが同じである場合は、以下の処理を行う。
再帰1変数のデーターを個数1配列のインデックスとして使用して個数1配列のデーターを8byte取得して、個数1配列から取得した数値をbyte数として、インデックス1変数のデーターをNullデーター配列のインデックスとして使用して、Nullデーター配列のインデックス1変数の位置から数えて個数1配列から取得した数値をインデックスの増加最大値として、インデックスの増加最大値の位置の分までのNullデーター配列のデーターを1byteずつ削除する。
インデックス1変数に代入された数値と位置1配列に代入されたデーターが同じでない場合は、何も行わない。
検査1分岐を終了して、インデックス1変数に1を加算して、検査1繰り返し処理の先頭に戻って検査1繰り返し処理を位置1配列の最後のデーターまで処理を続行する。
検査1繰り返し処理を終了したら、再帰1変数に1を加算する。
位置1配列の配列の最後の位置のデーターの処理が終わるまで再帰1繰り返し処理の処理を行たら、再帰1繰り返し処理の処理を終了する。
Nullデーター配列と同じサイズでstring型の8bitの配列を作成する。作成した配列を圧縮データー配列と呼ぶ。
以下の繰り返し処理をNull消去1繰り返し処理と呼ぶ。
Nullデーター配列の先頭から最後までのデーターを1byteずつ調べて、データーが入力されている配列のデーターだけを1byteずつ取得して、取得したデーターを圧縮データー配列の末尾に代入する。Nullデーター配列の最後のデーターの処理が終わったら、このNull消去1繰り返し処理を終了する。
以下に、Null消去1繰り返し処理の説明を行う。
Null消去1繰り返し処理を行う事で、Nullデーター配列にあるデーターが代入されていない配列の要素の部分が詰められて圧縮データー配列に代入される。
Null消去繰り返し処理の説明を終わる。
圧縮データー配列のサイズ調整を行う。
以下に、圧縮データー配列の作成説明を行う。
圧縮データー配列の作成から、圧縮データー配列のサイズ調整までの処理が終わると圧縮データーが完成する。
圧縮データー配列の作成説明を終了する。
【００４３】
以下に、文字1配列のデーター処理の説明を行う。
文字1配列のデーターは、同じ文字が記録されている場合があるので、同じ文字が有ったら削除する。同じ文字が有ったら削除する理由は、削除すれば辞書が小さくなるからである。
文字1配列のデーター処理の説明を終わる。
256のサイズで8bitのstring型の配列を作成する。作成した配列を整理Ａ配列と呼ぶ。
8bitの型で変数を作成する。作成した変数をカウント2変数と呼ぶ。カウント2変数の初期値として0を代入する。
以下の処理を整理1繰り返し処理と呼ぶ。
整理1繰り返し処理では、文字1配列に代入されている全てのデーターを1byteずつ検査してカウント2変数に代入されている数値と同じ数値が有ったら、カウント2変数に代入された数値を整理Ａ配列のインデックスとして使用して整理Ａ配列に、文字1配列のデーターを上書きで代入する。カウント2変数に1を加算して、カウント2変数のデーターが255になるまで整理1繰り返し処理を繰り返して、整理1繰り返し処理を終了する。
256のサイズで、8bitでstring型の配列を作成する。作成した配列を整理Ｂ配列と呼ぶ。
以下の繰り返し処理を整理2繰り返し処理と呼ぶ。
整理Ａ配列のデーターを1byteずつ調べて、データーが代入されている配列のデーターを取得して整理Ｂ配列の末尾に1byteずつ代入する。整理Ａ配列の最後の位置まで処理を行ったら、整理2繰り返し処理処理を終了する。
整理Ｂ配列の配列サイズの調整を行う。
整理Ｂ配列の配列サイズで、8bitのstring型の配列を作成する。作成した配列を文字2配列と呼ぶ。整理Ｂ配列のデーターを全て文字2配列にコピーする。
以下に、文字2配列の説明を行う。
文字2配列は、これで完成する。完成した文字配列は、文字辞書として使用する配列である。
文字2配列の説明を終了する。
【００４４】
文字2配列の配列サイズで2048byteのstring型の配列を作成して個数2配列と呼ぶ。
文字2配列の配列サイズで2048byteのstring型の配列を作成して位置2配列と呼ぶ。
以下に、個数2配列と位置2配列の説明を行う。
個数2配列が個数辞書である。
位置2配列が位置辞書である。
個数2配列と位置2配列の説明を終了する。
カウント2変数に0を上書きで代入する。
以下の処理をマトメ繰り返し処理と呼ぶ。
マトメ繰り返し処理では、文字2配列のインデックスとしてカウント2変数に代入された数値を使用して文字2配列のデーターを2048byte取得する。
以下に繰り返し処理を行う。文字検査1繰り返し処理と呼ぶ。
文字検査1繰り返し処理では、文字2配列から取得したデーターと文字1配列の最初から最後までのデーターと比較して同じデーターが代入されていた場合と違うデーターが代入されていた場合との2種類に分岐する。この分岐を検査2分岐と呼ぶ。
検査2分岐で、文字2配列のインデックスとしてカウント2変数を使用して文字2配列に代入された数値を2048byte取得して、取得したデーターと文字1配列の最初から最後までのデーターを1byteずつ比較して同じデーターが代入されていた場合は、以下の処理を行う。
カウント2変数を個数2配列のインデックスとして使用して、個数2配列のデーターを2048byte取得して、取得したデーターの後方に、個数1配列の16bitのデーターを連結して、その後方に記号「,」を連結して作成したデーターを作成して、作成したデーターをカウント2変数を個数2配列のインデックスとして使用して個数2配列に代入する。
カウント2変数を位置2配列のインデックスとして使用して、位置2配列のデーターを2048byte取得して、取得したデーターの後方に、位置1配列の64bitのデーターを連結して、その後方に記号「,」を連結して作成したデーターをカウント2変数を位置2配列のインデックスとして使用して位置2配列に代入する。
文字2配列のインデックスとしてカウント2変数を使用して文字2配列に代入された数値を2048byte取得して、取得したデーターと文字1配列の最初から最後までのデーターを1byteずつ比較して違うデーターが代入されていた場合は、何も行わない。
検査2分岐を終了する。
文字1配列の最初から最後までのデーターと比較し終わるまで、文字検査1繰り返し処理を続行したら、文字検査1繰り返し処理を終了する。
カウント2変数に1を加算して、マトメ繰り返し処理の先頭に戻って文字2配列の最後の位置のデーターの処理が完了するまで処理を繰り返して、マトメ繰り返し処理を終了する。
文字列操作関数を使用して個数2配列に代入された全てのデーターを2048byteずつ調べて個数2配列に代入された各々のデーターの末尾に「,」記号が有ったら「,」記号を削除する。
文字列操作関数を使用して位置2配列に代入された全てのデーターを2048byteずつ調べて、位置2配列に代入された各々のデーターの末尾に「,」記号が有ったら「,」記号を削除する。
【００４５】
個数用のマーク数値と位置用のマーク数値の説明を行う。
個数用のマークとしての数値を決定する。個数は、圧縮できた文字の個数を記録するものなので、絶対に0が使われる事のない数値である。従って、0をマーク用の数値とする。個数用なので圧縮する文字数として設定した文字数より少ない数値であるならば、絶対に使われる事のない数値になるので、0ではなくて、他の数値を個数用のマークとしての数値に決定する事も可能である。個数マーク変数に代入する数値をマーク数値と呼ぶ。
個数用のマークに使用するマーク数値は、数値で0と決めている。また、位置用のマークに使用する数値マークは、65533と65534と65535を使用すると決めている。
従って、圧縮ファイルを作成する場合に、圧縮ファイルに位置用のマーク数値と個数用のマーク数値を記録させる必要が無い。
しかしながら、実施例では、位置用のマーク数値と個数用のマーク数値を圧縮ファイルに記録して、展開時に位置用のマーク数値と個数用マークの数値を読み込むという手間をかけている。
処理する必要のない処理を実施例で行っているのであるが、この様な処理する必要のない処理を割愛しても本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
個数用のマーク数値と位置用のマーク数値の説明を終了する。
16byteのstring型で変数を作成する。作成した変数を個数マーク変数と呼ぶ。個数マーク変数に16個の0を代入する。
以下に16個の0の説明を行う。
16個の0は、「0000000000000000」であるが、2進数で0を16桁で表すと「0000000000000000」になる。
16個の0の説明を終了する。
【００４６】
再帰1変数に0を上書きで代入する。
64bitの型で変数を作成する。この変数をインデ変数と呼ぶ。インデ変数に0を代入する。
2個のサイズの64bitの型で配列を作成する。この配列を倍数余り配列と呼ぶ。
2048byteのstring型で変数を作成する。作成した変数を仮データー1変数と呼ぶ。
位置2配列のサイズで、2048byteのstring型の配列を作成する。作成した配列を位置3配列と呼ぶ。
64bitの型で変数を作成する。作成した変数をテスト1変数と呼ぶ。
64bitの型で変数を作成する。作成した変数をテスト2変数と呼ぶ。
テスト2変数に初期値として0を代入する。
以下に、繰り返し処理を行う。この繰り返し処理を符号化繰り返し処理と呼ぶ。
位置2配列のインデックスとして再帰1変数に代入された数値を使用して位置配列のデーターを取得して、文字列操作関数を使用して「,」記号でセパレートしたデーターを全て代入できるサイズで16byteのstring型の配列を作成する。作成した配列を位置セパレート1配列と呼ぶ。
位置2配列のインデックスとして再帰1変数に代入された数値を使用して位置配列のデーターを取得して、文字列操作関数を使用して「,」記号でセパレートしたデーターを位置セパレート1配列の最初から最後の位置までに16byteずつ代入する。
以下に繰り返し処理を行う。以下の繰り返し処理を分割1繰り返し処理と呼ぶ。
位置セパレート1配列のインデックスとしてインデ変数に代入されている数値を使用して位置セパレート1配列のデーターを取得する。
64bitの型で変数を作成する。作成した変数を倍数変数と呼ぶ。
64bitの型で変数を作成する。作成した変数を余り変数と呼ぶ。
取得した位置セパレート1配列のデーターが65533以上の場合と65532以下の場合とに分岐する。この分岐を倍数計算分岐と呼ぶ。
倍数計算分岐で、取得した位置セパレート1配列のデーターが65533以上の場合は、取得した位置セパレート1配列のデーターを65532で割った数値の小数点以下を切り捨てた数値を算出して倍数余り配列の最初のデーターの位置に代入する。取得した位置セパレート1配列のデーターを65532で割った余りを算出して倍数余り配列の最後の位置に代入する。
倍数計算分岐で、取得した位置セパレート1配列のデーターが65532以下の場合は、倍数余り配列の最初の位置のデーターとして0を代入して、倍数余り配列の最後の位置のデーターとして、取得した位置セパレート1配列のデーターを代入する。倍数計算分岐を終了する。
テスト1変数に倍数余り配列の最初の位置に代入されているデーターを代入する。
以下に分岐処理を行う。この分岐を倍数記号代入分岐と呼ぶ。
倍数記号代入分岐では、テスト1変数のデーターとテスト2変数のデーターが同じで、テスト1変数のデーターが0の場合と、テスト1変数のデーターの方がテスト2変数のデーターよりも大きくて、テスト1変数のデーターが0より大きい場合と、テスト1変数のデーターとテスト2変数のデーターが同じで、テスト1変数のデーターが0より大きい場合と、その他の場合の4種類に分岐する。
倍数記号代入分岐で、テスト1変数のデーターとテスト2変数のデーターが同じでテスト1変数のデーターが0の場合は、以下の処理を行う。
倍数余り配列の最後の位置のデーターの後方に、「,」記号を連結して、連結して作成したデーターを仮データー1変数の末尾に代入する。
倍数記号代入分岐で、テスト1変数のデーターがテスト2変数のデーターよりも大きくて、テスト1変数のデーターが0より大きい場合は、分岐する。この分岐を連続分岐と呼ぶ。
連続分岐で、テスト1変数のデーターからテスト2変数のデーターを減算した数値が1である場合とテスト1変数のデーターからテスト2変数のデーターを減算した数値が1より大きい場合とに分岐する。
連続分岐で、テスト1変数のデーターからテスト2変数のデーターを減算した数値が1である場合は、以下の処理を行う。
テスト1変数に代入されているデーターをテスト2変数に上書きで代入する。
記号の「?」の後方に「,」記号を連結して、その後方に倍数余り配列の最後の位置のデーターを連結して、その後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入する。
連続分岐で、テスト1変数のデーターからテスト2変数のデーターを減算した数値が1より大きい場合は、以下の処理を行う。
テスト1変数に代入されているデーターをテスト2変数に上書きで代入する。
倍数余り配列の最初の位置のデーターの後方に「,」記号を連結して、その後方に「/」記号を連結して、その後方に「,」記号を連結して、その後方に倍数余り配列の最後の位置のデーターを連結して、その後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入する。
連続分岐を終了する。
倍数記号代入分岐で、テスト1変数のデーターとテスト2変数のデーターが同じで、テスト1変数のデーターが0より大きい場合は、以下の処理を行う。
倍数余り配列の最後の位置のデーターの後方に「,」記号を連結して作成したデーターを仮データー1変数の末尾に代入する。
倍数記号代入分岐で、その他の場合は、エラーなので全ての処理を終了する。
倍数記号代入分岐を終了する。
分割1繰り返し処理の最初の処理に戻って、位置セパレート1配列の最後の位置のデーターを処理するまで処理を繰り返して、分割1繰り返し処理を終了する。
位置3配列のインデックスとして再帰1変数のデーターを使用して、位置3配列のインデックスの位置に、仮データー1変数のデーターを代入する。
仮データー1変数のデーターを削除する。
再帰1変数に1を加算して符号化繰り返し処理の最初の処理に戻って、再帰1変数のデーターが、位置2配列の最後の位置のインデックスになるまで符号化繰り返し処理の処理を繰り返して、符号化繰り返し処理を終了する。
文字列操作関数を使用して、位置3配列のデーターを2048byteずつ全て検査して、位置3配列に代入されている各々のデーターの最後の文字に「,」記号があったら、「,」記号を削除する。
【００４７】
3個のサイズで16byteのstring型で配列を作成する。作成した配列を位置マーク配列と呼ぶ。
位置マーク配列のデーターを代入できる領域の最初の位置に65535を代入する。
位置マーク配列のデーターを代入できる領域の2番目の位置に65534を代入する。
位置マーク配列のデーターを代入できる領域の最後の位置に65533を代入する。
以下に、位置マーク配列に代入した3種類の数値の説明を行う。
位置マーク配列に代入した3種類の数値の事をマーク数値と呼ぶ。
位置マーク配列に代入した3種類の数値の65535と65534と65533は、マーク数値として使用する為に位置を示すデーターを65532で割って、倍数と余りを算出した事で、位置を示すデーターとして全く使用する事のない数値となっている数値である。どこの処理であるかを示すと、倍数計算分岐で位置セパレート1配列のデーターが65533以上の場合以下の処理である。2進数で16bitだと、1111111111111111が最大値となる。1111111111111111を10進数に変換すると65535である。
これで、位置マーク配列に代入した3種類の数値の説明を終了する。
【００４８】
位置3配列と同じサイズで、2048byteのstring型の配列を作成して仮位置配列と呼ぶ。
個数2配列と同じサイズで、2048byteのstring型の配列を作成して個数3配列と呼ぶ。
個数2配列と同じサイズで、1byteのstring型の配列を作成してナンバー配列と呼ぶ。
以下の処理をナンバー配列作成工程と呼ぶ。
ナンバー配列の最初の位置の1byteには、何も代入せずに、2番目の位置から最後の位置までに、1byteの「|」記号を一つずつ代入する。
ナンバー配列作成工程を終了する。
以下の処理をナンバー個数連結処理と呼ぶ。
分岐する。この分岐をナンバー連結1分岐と呼ぶ。
ナンバー連結1分岐で、ナンバー配列の最初の位置のデーターを処理する場合は、以下の処理を行う。
個数3配列の最初の位置に、個数2配列の最初の位置の2048byteのデーターを代入する。
ナンバー連結1分岐で、ナンバー配列の2番目以降の位置のデーターを処理する場合は、以下の処理を行う。
ナンバー配列の2番目の位置から最後の位置までのデーターを1byteずつ順番にインデックスで取得して、ナンバー配列で使用したインデックスを使用して個数3配列から2048byteずつ順番にデーターを取得して、ナンバー配列のデーターの後方に「,」記号を連結して、その後方に個数2配列のデーターを連結してデーターを作成して、この連結して作成したデーターをナンバー配列で使用したインデックスを個数3配列のインデックスとして使用して個数3配列に2048byteずつ順番に代入する。
ナンバー連結1分岐を終了する。
ナンバー個数連結処理を終了する。
以下の処理をナンバー位置連結処理と呼ぶ。
分岐する。この分岐をナンバー連結2分岐と呼ぶ。
ナンバー連結2分岐で、ナンバー配列の最初の位置のデーターを処理する場合は、以下の処理を行う。
仮位置配列の最初の位置に、位置3配列の最初の位置の2048byteのデーターを代入する。
ナンバー連結2分岐で、ナンバー配列の2番目の位置のデーターを処理する場合は、以下の処理を行う。
ナンバー配列の2番目の位置から最後の位置までのデーターを1byteずつ順番にインデックスで取得して、ナンバー配列で使用したインデックスを位置3配列のインデックスとして使用して位置3配列から2048byteずつ順番にデーターを取得して、取得したナンバー配列のデーターの後方に「,」記号を連結して、その後方に取得した位置3配列のデーターを連結してデーターを作成して、この連結して作成したデーターをナンバー配列で使用したインデックスを仮位置配列のインデックスとして使用して仮位置配列に2048byteずつ順番に代入する。
ナンバー連結2分岐を終了する。
仮位置配列の最初から最後までのデーターを位置3配列に上書きでコピーする。
ナンバー位置連結処理を終了する。
以下に、ナンバー配列作成工程の説明を行う。
「|」記号は、任意に別の記号にする事が出来るが、倍数余りで使用する記号とは別のものでなければならない。実施例で、倍数余りで使用している記号は、「/」記号と「?」記号の二種類である。「|」記号は、バイナリー形式でファイルに1byteずつ記録してファイルを作成する場合、実施例で使用したコンパイラには、改行マークを代入して記録する方法がないので、改行マークの代わりに代入するマークとして使用するものである。バイナリー形式で記録する場合に、改行マークを代入して記録する方法がコンパイラに準備されている場合でも、「|」記号を代入する処理が必要になる。改行マークに使用されている文字コードが0〜255までの数値なので位置や個数を表す数値で使用されている可能性が高い為に使用できないのである。
実施例で使用しているコンパイラには、バイナリー形式でファイルを作成する場合に改行マークを代入してファイルを作成する機能が無いが、テスキト形式でファイルを作成する場合は、改行マークを代入してファイルに記録する機能がある。テキスト形式で改行マークを代入する方法でファイルを作成して、作成したファイルをバイナリー形式で読み込んで、読み込んだデーターをバイナリー形式で保存する事でも、改行マークを代入したバイナリー形式のファイルが作成できるが、このようなファイル操作を複雑に行う処理を行う場合は、「|」記号を使用する処理をする必要が無くなる。「|」記号やマーク数値を使用して改行マークを代入する処理をファイル操作などの他の方法で処理したとしても、簡単な処理の変更でしかないし、この部分は本発明の特許の範囲外の処理であるから、実施例と違う処理を行う事で本発明と違う技術である事を主張しても何らの意味を持たないものであり、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明記する。尚、本発明の実施例では、「|」記号をマーク数値に変更してバイナリー形式でファイルに保存している。「|」記号のままファイルに保存するものではない。
ナンバー配列作成工程の説明を終了する。
【００４９】
圧縮対象配列と同じサイズで16byteのstring型で配列を作成する。作成した配列を10進位置1配列と呼ぶ。
以下の処理を分離1繰り返し処理と呼ぶ。
位置3配列の最初の位置のインデックスで取得した2048byteのデーターを文字列操作関数を使用して「,」記号で分割して16byteずつ順番に10進位置1配列の末尾に順番通りに代入する。位置3配列のインデックスに1を加算して位置3配列で使用しているインデックスが位置3配列の最後の位置に達するまで分離1繰り返し処理を繰り返して、分離1繰り返し処理を終了する。
圧縮対象配列と同じサイズで16byteのstring型の配列を作成する。作成した配列を10進個数1配列と呼ぶ。
以下の処理を分離2繰り返し処理と呼ぶ。
個数3配列の最初の位置のインデックスで取得した2048byteのデーターを文字列操作関数を使用して「,」記号で分割して順番に10進個数1配列の末尾に16byteずつ順番通りに代入する。個数3配列で使用しているインデックスに1を加算して個数3配列のインデックスが個数3配列の最後の位置に達するまで分離2処理を繰り返して、分離2繰り返し処理を終了する。
【００５０】
10進位置1配列の配列サイズの調整を行う。
10進個数1配列の配列サイズの調整を行う。
10進位置1配列と同じサイズで16byteのstring型で配列を作成する。作成した配列を2進位置1配列と呼ぶ。
10進位置1配列と同じサイズで16byteのstring型の配列を作成する。作成した配列を2進個数1配列と呼ぶ。
以下に、繰り返し処理を行う。この繰り返し処理を非記号2進変換1繰り返し処理と呼ぶ。
10進位置1配列の最初から最後までのデーターを16byteずつ検査して、10進位置1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合と、10進位置1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合とに分岐する。この分岐を記号1分岐と呼ぶ。
記号1分岐で、10進位置1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、以下の処理を行う。
10進位置1配列のデーターを、2進位置1配列の末尾に代入する。
記号1分岐で、10進位置1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、以下の処理を行う。
10進位置1配列のデーターを2進数に変換して2進位置1配列の末尾に代入する。
記号1分岐を終了する。
10進位置1配列の最後までのデーターを検査し終わったら、非記号2進変換1繰り返し処理を終了する。
以下に、繰り返し処理を行う。この繰り返し処理を非記号2進変換2繰り返し処理と呼ぶ。
10進個数1配列の最初から最後までのデーターを16byteずつ検査して、10進個数1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合と、10進位置1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合とに分岐する。この分岐を記号2分岐と呼ぶ。
記号2分岐で、10進個数1配列のデーターが３種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、以下の処理を行う。
10進個数1配列のデーターを、2進個数1配列の末尾に代入する。
記号2分岐で、10進個数1配列のデーターが３種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、以下の処理を行う。
10進個数1配列のデーターを2進数に変換して2進個数1配列の末尾に代入する。
記号2分岐を終了する。
10進個数1配列の最後の位置まで処理が完了したら、非記号2進変換2繰り返し処理を終了する。
【００５１】
2進位置1配列のサイズで16byteのstring型の配列を作成する。作成した配列を2進位置2配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を桁数調整1繰り返し処理と呼ぶ。
2進位置1配列のインデックスを使用して16byteずつ検査して、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合と2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号3分岐と呼ぶ。
記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は、以下の処理を行う。
2進位置1配列のデーターを、2進位置2配列の末尾に代入する。
記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は、以下の分岐処理を行う。この分岐を記号ネスト1分岐と呼ぶ。
記号ネスト1分岐で、2進位置1配列のデーターを文字列操作関数を使用して文字数を調べて16文字に達していない場合は、以下の処理を行う。
2進位置1配列のデーターが16文字になる様に2進位置1配列のデーターの先頭に0を16文字に足りない分だけ連結して16文字の文字列を作成して、2進位置2配列の末尾に代入する。
記号ネスト1分岐で、2進位置1配列のデーターを文字列操作関数を使用して文字数を調べて16文字だった場合は、何もせずに2進位置1配列のデーターを2進位置2配列の末尾に代入する。
記号ネスト1分岐を終了する。
記号3分岐を終了する。
2進位置1配列の最後の位置のデーターを検査し終わったら、桁数調整1繰り返し処理を終了する。
2進個数1配列のサイズで16byteのstring型の配列を作成する。作成した配列を2進個数2配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を桁数調整2繰り返し処理と呼ぶ。
2進個数1配列のインデックスを使用して16byteずつ検査して、2進個数1配列のデーターが「|」記号に該当する場合と2進位置1配列のデーターが「|」記号に該当しない場合とに分岐する。この分岐を記号4分岐と呼ぶ。
記号4分岐で、2進個数1配列のデーターが「|」記号に該当する場合は、以下の処理を行う。
2進個数1配列のデーターを、2進個数2配列の末尾に代入する。
記号4分岐で、2進個数1配列のデーターが「|」記号に該当しない場合は、以下の分岐処理を行う。この分岐処理を記号ネスト2分岐と呼ぶ。
記号ネスト2分岐で、2進個数1配列のデーターを文字列操作関数を使用して文字数を調べて16文字に達していない場合は、以下の処理を行う。
16文字になる様に2進個数1配列のデーターの先頭に0を16文字に足りない分だけ連結して16文字の文字列を作成して、2進個数2配列の末尾に代入する。
記号ネスト2分岐で、2進個数1配列のデーターを文字列操作関数を使用して文字数を調べて16文字だった場合は、以下の処理を行う。
2進個数1配列のデーターを2進個数2配列の末尾に代入する。
記号ネスト2分岐を終了する。
記号4分岐を終了する。
2進個数1配列の最後の位置のデーターを検査し終わったら、桁数調整2繰り返し処理を終了する。
【００５２】
圧縮対象配列のサイズで8byteのstring型の配列を作成する。作成した配列を記号バイト位置配列と呼ぶ。
以下に、繰り返し処理を行う。この繰り返し処理を記号バイト代入1繰り返し処理と呼ぶ。
2進位置2配列の最初から最後までのデーターを16byteずつ調べて2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合と2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号5分岐と呼ぶ。
記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は、以下の処理を行う。
2進位置2配列のデーターを記号バイト位置配列の末尾に代入する。
記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は、以下の処理を行う。
文字列操作関数を使用して、前方の8文字を取得して記号バイト位置配列の末尾に代入して、次に、後方の8文字を取得して記号バイト位置配列の末尾に代入する。
記号5分岐を終了する。
2進位置2配列の最初から最後までのデーターを検査し終わったら、記号バイト代入1繰り返し処理を終了する。
圧縮対象配列のサイズで8byteのstring型の配列を作成する。作成した配列を記号バイト個数配列と呼ぶ。
以下に、繰り返し処理を行う。この繰り返し処理を記号バイト代入2繰り返し処理と呼ぶ。
2進個数2配列の最初から最後までのデーターを16byteずつ調べて2進個数2配列のデーターが「|」記号に該当する場合と2進個数2配列のデーターが「|」記号に該当しない場合とに分岐する。この分岐を記号6分岐と呼ぶ。
記号6分岐で、2進個数2配列のデーターが「|」記号に該当する場合は、以下の処理を行う。
2進個数2配列のデーターを記号バイト個数配列の末尾に代入する。
記号6分岐で、個数位置2配列のデーターが「|」記号に該当しない場合は、以下の処理を行う。
文字列操作関数を使用して、前方の8文字を取得して記号バイト個数配列の末尾に代入して、次に、後方の8文字を取得して記号バイト個数配列の末尾に代入する。
記号6分岐を終了する。
2進個数2配列の最初から最後までのデーターを検査し終わったら、記号バイト代入2繰り返し処理を終了する。
記号バイト位置配列の配列サイズ調整を行う。
記号バイト個数配列の配列サイズ調整を行う。
【００５３】
以下の処理を位置マーク2進数変換繰り返し処理と呼ぶ。
位置マーク配列の最初から最後までの全てのデーターを16byteずつ取得して、取得したデーターを2進数に変換して、2進数に変換したデーターを位置マーク配列のデーターを取得した位置に上書きで16byteずつ代入する。
位置マーク配列の最後の位置のデーターの処理が終わったら、位置マーク2進数変換繰り返し処理を終了する。
以下に、位置マーク配列のデーターについての説明をする。
位置マーク配列のデーターは、全て大きな数値なので、2進数に変換した場合に全てのデーターが16桁になるので、先頭位置に0を代入して16桁に調整を行う処理の桁数調整処理を行う必要が無い。
位置マーク配列のデーターについての説明を終了する。
【００５４】
3個のサイズで1byteのstring型の配列を作成する。作成した配列を記号文字位置配列と呼ぶ。
記号文字位置配列の最初の位置に「|」記号を代入して、2番目の位置に「/」記号を代入して、最後の位置に「?」記号を代入する。
圧縮対象配列のサイズで8bitのstring型の配列を作成する。作成した配列をバイト位置配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を記号変換1繰り返し処理と呼ぶ。
記号バイト位置配列の最初の位置から最後の位置までのデーターを8byteずつ検査して、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合と記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号7分岐と呼ぶ。
記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれかに該当する場合は、以下の処理を行う。
記号バイト位置配列のデーターが「|」記号の場合と記号バイト位置配列のデーターが「/」記号の場合と記号バイト位置配列のデーターが「?」記号の場合に分岐する。この分岐をマーク1分岐と呼ぶ。
マーク1分岐で、記号バイト位置配列のデーターが「|」記号の場合は、以下の処理を行う。
位置マーク配列の最初の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐で、記号バイト位置配列のデーターが「/」記号の場合は、以下の処理を行う。
位置マーク配列の2番目の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐で、記号バイト位置配列のデーターが「?」記号の場合は、以下の処理を行う。
位置マーク配列の最後の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐を終了する。
記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の３種類の記号のどれにも該当しない場合は、以下の処理を行う。
記号バイト位置配列のデーターをバイト位置配列の末尾に代入する。
記号7分岐を終了する。
記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換1繰り返し処理を終了する。
圧縮対象配列のサイズで8byteのstring型の配列を作成する。作成した配列をバイト個数配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を記号変換2繰り返し処理と呼ぶ。
記号バイト個数配列の最初の位置から最後の位置までのデーターを8byteずつ検査して、記号バイト個数配列のデーターが「|」記号に該当する場合と記号バイト個数配列のデーターが「|」記号に該当しない場合とに分岐する。この分岐を記号8分岐と呼ぶ。
記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当する場合は、以下の処理を行う。
個数マーク変数に代入されているデーターの先頭から8文字を取得してバイト個数配列の末尾に代入して、次に、後方の8文字を取得してバイト個数配列の末尾に代入する。
記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当しない場合は、以下の処理を行う。記号バイト個数配列のデーターをバイト個数配列の末尾に代入する。
記号8分岐を終了する。
記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換2繰り返し処理を終了する。
バイト位置配列の配列サイズ調整を行う。
バイト個数配列の配列サイズ調整を行う。
【００５５】
バイト位置配列の配列サイズと同じサイズで、8bitのstring型の配列を作成する。作成した配列を位置10進数配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を10進数変換1処理と呼ぶ。
バイト位置配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを位置10進数配列の末尾に順番に8bitずつ代入する。バイト位置配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換1処理を終了する。
バイト個数配列の配列サイズと同じサイズで、8bitのstring型の配列を作成する。作成した配列を個数10進数配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を10進数変換2処理と呼ぶ。
バイト個数配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを個数10進数配列の末尾に順番に8bitずつ代入する。バイト個数配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換2処理を終了する。
【００５６】
6個のサイズで8bitのstring型の配列を作成する。保存位置マーク配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を保存配列作成1繰り返し処理と呼ぶ。
位置マーク配列の位置を示すインデックスで位置マーク配列のデーターを16byteずつ取得して、文字列操作関数を使用して取得したデーターの先頭から8文字のデーターを取得して保存位置マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存位置マーク配列の末尾に代入する。
位置マーク配列の最後の位置のデーターを処理するまで保存配列作成1繰り返し処理を行い、保存配列作成1繰り返し処理を終了する。
2個のサイズで8bitのstring型の変数を作成する。保存個数マーク配列と呼ぶ。
以下の処理を保存配列作成2処理と呼ぶ。
個数マーク変数に代入された16byteの2進数のデーターを文字列操作関数を使用して先頭から8文字を取得して保存個数マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存個数マーク配列の末尾に代入する。
保存配列作成2処理を終了する。
【００５７】
以下に繰り返し処理を行う。以下の繰り返し処理を進数変換1繰り返し処理と呼ぶ。
保存位置マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存位置マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入する。保存位置マーク配列の最後の位置まで処理を行ったら、進数変換1繰り返し処理を終了する。
以下に繰り返し処理を行う。以下の繰り返し処理を進数変換2繰り返し処理と呼ぶ。
保存個数マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存個数マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入する。保存個数マーク配列の最後の位置まで処理を行ったら、進数変換2繰り返し処理を終了する。
【００５８】
32byteのstring型の変数を作成する。作成した変数を文字サイズ変数と呼ぶ。
32byteのstring型の変数を作成する。作成した変数を位置サイズ変数と呼ぶ。
32byteのstring型の変数を作成する。作成した変数を個数サイズ変数と呼ぶ。
64byteのstring型の変数を作成する。作成した変数を圧縮対象ファイルサイズ変数と呼ぶ。
64byteのstring型の変数を作成する。作成した変数を圧縮データーサイズ変数と呼ぶ。
文字2配列の配列サイズを取得して、取得したデーターを2進数に変換して文字サイズ変数に代入する。
位置10進数配列の配列サイズを取得して、取得したデーターを2進数に変換して位置サイズ変数に代入する。
個数10進数配列の配列サイズを取得して、取得したデーターを2進数に変換して個数サイズ変数に代入する。
圧縮対象配列の配列サイズを取得して、取得したデーターを2進数に変換して圧縮対象ファイルサイズ変数に代入する。
圧縮データー配列の配列サイズを取得して、取得したデーターを2進数に変換して圧縮データーサイズ変数に代入する。
文字サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を文字サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、文字サイズ変数に上書きで代入する。
位置サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を位置サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、位置サイズ変数に上書きで代入する。
個数サイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて32文字になる様に、32文字に少ない分だけ0を個数サイズ変数に代入されたデーターの先頭に連結して32文字の0と1で構成された2進数を作成して、個数サイズ変数に上書きで代入する。
圧縮対象ファイルサイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて64文字になる様に、64文字に少ない分だけ0を圧縮対象ファイルサイズ変数に代入されたデーターの先頭に連結して64文字の0と1で構成された2進数を作成して、圧縮対象ファイルサイズ変数に上書きで代入する。
圧縮データーサイズ変数に代入されたデーターを文字列操作関数を使用して文字数を調べて64文字になる様に、64文字に少ない分だけ0を圧縮データーサイズ変数に代入されたデーターの先頭に連結して64文字の0と1で構成された2進数を作成して、圧縮データーサイズ変数に上書きで代入する。
【００５９】
以下に、文字サイズと位置サイズと個数サイズと圧縮対象ファイルサイズと圧縮データーサイズの説明をする。
文字サイズと位置サイズと個数サイズは、各々を4byteで保存すると言う規則で保存する事とする。また、圧縮対象ファイルサイズと圧縮データーサイズは、各々を8byteで保存すると言う規則で保存する事とする。
文字サイズと位置サイズと個数サイズと圧縮対象ファイルサイズと圧縮データーサイズの説明を終わる。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を文字サイズ10進配列と呼ぶ。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を位置サイズ10進配列と呼ぶ。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を個数サイズ10進配列と呼ぶ。
8個のサイズでstring型の8bitの配列を作成する。この作成した配列を圧縮対象サイズ10進配列と呼ぶ。
8個のサイズでstring型の8bitの配列を作成する。この作成した配列を圧縮データーサイズ10進配列と呼ぶ。
【００６０】
以下の繰り返し処理をバイト代入1繰り返し処理と呼ぶ。
文字列操作関数を使用して、文字サイズ変数の先頭から8文字までを取得して文字サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、文字サイズ変数の9文字から16文字までを文字サイズ10進配列の末尾に代入し、文字列操作関数を使用して、文字サイズ変数の17文字から24文字までを取得して文字サイズ10進配列の末尾に代入し、文字列操作関数を使用して、文字サイズ変数の25文字から最後までを取得して文字サイズ10進配列の最後の位置に代入する。バイト代入1繰り返し処理を終了する。
以下の繰り返し処理をバイト代入2繰り返し処理と呼ぶ。
文字列操作関数を使用して、位置サイズ変数の先頭から8文字までを取得して位置サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、位置サイズ変数の9文字から16文字までを位置サイズ10進配列の末尾に代入し、文字列操作関数を使用して、位置サイズ変数の17文字から24文字までを取得して位置サイズ10進配列の末尾に代入し、文字列操作関数を使用して、位置サイズ変数の25文字から最後までを取得して位置サイズ10進配列の最後の位置に代入する。バイト代入2繰り返し処理を終了する。
以下の繰り返し処理をバイト代入3繰り返し処理と呼ぶ。
文字列操作関数を使用して、個数サイズ変数の先頭から8文字までを取得して個数サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、個数サイズ変数の9文字から16文字までを個数サイズ10進配列の末尾に代入し、文字列操作関数を使用して、個数サイズ変数の17文字から24文字までを取得して個数サイズ10進配列の末尾に代入し、文字列操作関数を使用して、個数サイズ変数の25文字から最後までを取得して個数サイズ10進配列の最後の位置に代入する。バイト代入3繰り返し処理を終了する。
以下の繰り返し処理をバイト代入4繰り返し処理と呼ぶ。
文字列操作関数を使用して、圧縮対象ファイルサイズ変数の先頭から8文字までを取得して圧縮対象サイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の9文字から16文字までを圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の17文字から24文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の25文字から32文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の33から40文字までを取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の41文字から48文字までを圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の49文字から56文字までの文字を取得して圧縮対象サイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮対象ファイルサイズ変数の57文字から最後までの文字を取得して圧縮対象サイズ10進配列の末尾に代入する。バイト代入4繰り返し処理を終了する。
以下の繰り返し処理をバイト代入5繰り返し処理と呼ぶ。
文字列操作関数を使用して、圧縮データーサイズ変数の先頭から8文字までを取得して圧縮データーサイズ10進配列の最初の位置に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の9文字から16文字までを圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の17文字から24文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の25文字から32文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の33から40文字までを取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の41文字から48文字までを圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の49文字から56文字までの文字を取得して圧縮データーサイズ10進配列の末尾に代入し、文字列操作関数を使用して、圧縮データーサイズ変数の57文字から最後までの文字を取得して圧縮データーサイズ10進配列の末尾に代入する。バイト代入5繰り返し処理を終了する。
【００６１】
以下の繰り返し処理を10進数1繰り返し処理と呼ぶ。
文字サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の最初の位置に上書きで代入し、文字サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の2番目の位置に上書きで代入し、文字サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の3番目の位置に上書きで代入し、文字サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して文字サイズ10進配列の最後の位置に上書きで代入する。10進数1繰り返し処理を終わる。
以下の繰り返し処理を10進数2繰り返し処理と呼ぶ。
位置サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の最初の位置に上書きで代入し、位置サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の2番目の位置に上書きで代入し、位置サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の3番目の位置に上書きで代入し、位置サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して位置サイズ10進配列の最後の位置に上書きで代入する。10進数2繰り返し処理を終わる。
以下の繰り返し処理を10進数3繰り返し処理と呼ぶ。
個数サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の最初の位置に上書きで代入し、個数サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の2番目の位置に上書きで代入し、個数サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の3番目の位置に上書きで代入し、個数サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して個数サイズ10進配列の最後の位置に上書きで代入する。10進数3繰り返し処理を終わる。
以下の繰り返し処理を10進数4繰り返し処理と呼ぶ。
圧縮対象サイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の最初の位置に上書きで代入し、圧縮対象サイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の2番目の位置に上書きで代入し、圧縮対象サイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の3番目の位置に上書きで代入し、圧縮対象サイズ10進配列の4番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の4番目の位置に上書きで代入し、圧縮対象サイズ10進配列の5番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の5番目の位置に上書きで代入し、圧縮対象サイズ10進配列の6番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の6番目の位置に上書きで代入し、圧縮対象サイズ10進配列の7番目の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の7番目の位置に上書きで代入し、圧縮対象サイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して圧縮対象サイズ10進配列の最後の位置に上書きで代入する。10進数4繰り返し処理を終わる。
以下の繰り返し処理を10進数5繰り返し処理と呼ぶ。
圧縮データーサイズ10進配列の最初の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の最初の位置に上書きで代入し、圧縮データーサイズ10進配列の2番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の2番目の位置に上書きで代入し、圧縮データーサイズ10進配列の3番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の3番目の位置に上書きで代入し、圧縮データーサイズ10進配列の4番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の4番目の位置に上書きで代入し、圧縮データーサイズ10進配列の5番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の5番目の位置に上書きで代入し、圧縮データーサイズ10進配列の6番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の6番目の位置に上書きで代入し、圧縮データーサイズ10進配列の7番目の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の7番目の位置に上書きで代入し、圧縮データーサイズ10進配列の最後の位置のデーターを8byte取得して10進数に変換して圧縮データーサイズ10進配列の最後の位置に上書きで代入する。10進数5繰り返し処理を終わる。
【００６２】
圧縮ファイル作成の規則の説明をする。
(1)  保存位置マーク配列 2byteで一文字として3個分6byte保存
(2)  位置サイズ10進配列 4byteで一文字として4byte保存
(3)  位置10進数配列 2byte一文字として保存
(4)  保存個数マーク配列 2byteで一文字として2byte保存
(5)  個数サイズ10進配列 4byteで一文字として4byte保存
(6)  個数10進数配列 2byte一文字として保存
(7)  文字サイズ10進配列 4byteで一文字として4byte保存
(8)  文字2配列 1byte一文字として保存
(9)  圧縮対象サイズ10進配列 8byteで一文字として8byte保存
(10) 圧縮データーサイズ10進配列 8byteで一文字として8byte保存
(11) 圧縮データー配列 1byte一文字として保存
上記の(1)から(11)の順番に保存して作成するという一定の規則で圧縮ファイルを作成する。圧縮ファイルが一定の規則で作成されているので、この順番で読み込んで圧縮ファイルを圧縮されていない元のファイルの状態に戻すと言う展開処理を行う事とする。
圧縮ファイル作成の規則の説明を終わる。
【００６３】
保存位置マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
位置サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
位置10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
保存個数マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
個数サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
個数10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
文字サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
文字2配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮対象サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮データーサイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮データー配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
任意のファイル名でファイルを保存する。実施例では、Runlength.ykmと言う名称で圧縮ファイルを保存した。
【００６４】
圧縮データーを図符号Ｇの圧縮されたファイルのヘッダー無の内容を表示するリッチテキストボックスに表示する。
圧縮対象配列の配列サイズを取得して図符号Ｈの圧縮対象ファイルのサイズを表示するテキストボックスにサイズを表示する。
Runlength.ykmと言う名称のファイルのサイズを取得して、図符号Ｊの圧縮ファイルのサイズを表示するテキストボックスに表示する。
【００６５】
次に、ステップ１０２の「図符号Ｎのデーター表示 1の画面を表示するボタンをクリックする」に進む。ステップ１０２は、人為的な手動による操作または入力処理工程である。
図符号Ｎのデーター表示 1の画面を表示するボタンを図符号Ｄのマウスでクリックすると図４の画面が表示される。
【００６６】
次に、ステップ１０３の「図4のデーター表示 1の画面を表示して辞書データーを表示する」に進む。ステップ１０３は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
図４の画面が表示された後に、自動的に以下の処理が行われる。
文字2配列のデーターを図符号Ｔの圧縮した文字表示欄に表示する。
位置3配列のデーターを図符号Ｕの圧縮した位置表示欄に表示する。
個数3配列のデーターを図符号Ｖの圧縮した文字の個数表示欄に表示する。
以上で圧縮工程を終了する。
【００６７】
次に、ステップ１０４の「圧縮ファイルを選択して図符号Ｑの展開開始ボタンをクリックして展開工程をスタートさせる」に進む。ステップ１０４は、人為的な手動による操作または入力処理工程である。ステップ１０４からは、展開工程の処理である。
図符号Ｒの展開ファイル指定用参照ボタンを図符号Ｄのマウスでクリックしてハードディスクの中を参照して、圧縮ファイルのRunlength.ykmと言う名称のファイルを図符号Ｄのマウスで選択する方法か、または、図符号Ｃのキーボードで圧縮ファイルのRunlength.ykmと言う名称のファイルを入力して指定する方法のどちらかの方法で圧縮ファイルを指定する。図符号Ｑの展開開始ボタンをマウスでクリックして展開工程をスタートさせる。
【００６８】
次に、ステップ１０５の「圧縮データーと辞書データーで元のファイルに戻す 元のファイルの内容を表示する」に進む。ステップ１０５は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
辞書データーの説明を行う。
辞書データーとは、圧縮した文字と位置データーと個数データーの事である。圧縮した時の配列の名称で言うと、文字2配列や位置2配列や個数2配列の事であり、各々の配列に代入されたデーターの事である。展開工程では、辞書データーと呼んでいる文字と位置データーと個数データーの3種類の配列を圧縮工程とは、違う別の名称で呼ぶ事とする。
辞書データーの説明を終わる。
ファイルの読み込み規則の説明を行う。
段落〔００６２〕の記述通りに圧縮ファイルが作られているので、展開時は、段落〔００６２〕の記述の順番に読み込んで処理する事とする。
ファイルの読み込み規則の説明を終了する。
【００６９】
圧縮ファイルを1byteずつ読み込んで全て読み込む事が可能なサイズで1byteのstring型で配列を作成する。作成した配列をＤ圧縮ファイル配列と呼ぶ。圧縮ファイルをバイナリー形式で開いて1byteずつ最初から最後まで全てのデーターを読み込んでＤ圧縮ファイル配列の最初の位置から最後の位置までに1byteずつ代入する。
64bitの型で変数を作成する。作成した変数を読込位置変数と呼ぶ。読込位置変数に0を代入する。
64bitの型で変数を作成する。作成した変数を読込量変数と呼ぶ。読込量変数に6を代入する。
64bitの型で変数を作成する。作成した変数を読込終端変数と呼ぶ。読込終端変数に6を代入する。
6個のサイズで1byteのstring型で配列を作成する。作成した配列をＤ位置マーク1配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の位置から読込量変数の数値までのデーターを1byteずつ読み込んで、1byteずつＤ位置マーク1配列の末尾に代入する。
6個のサイズで8byteのstring型の配列を作成する。作成した配列を位置マーク2進配列と呼ぶ。
以下の繰り返し処理を2進数変換1繰り返し処理と呼ぶ。
位置マーク1配列の最初のインデックスの8bitのデーターを取得して2進数に変換して位置マーク2進配列の末尾に代入する。インデックスに1を加算して2進数変換1繰り返し処理の最初に戻って処理を続行する。位置マーク1配列の最後の位置のインデックスでデーターを取得して、取得したデーターの処理が終了したら、2進数変換1繰り返し処理を終了する。
以下の繰り返し処理を桁調整1繰り返し処理と呼ぶ。
位置マーク2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト1分岐と呼ぶ。
バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字に満たない場合は、位置マーク2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得した位置マーク2進配列の位置に作成した文字列を上書きで代入する。バイト1分岐で、位置マーク2進配列のデーターの文字数が8文字の場合は、何も行わない。
これでバイト1分岐を終了する。
位置マーク2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整1繰り返し処理を終了する。
以下に、位置マーク2進配列のデーターの説明を行う。
位置マーク2進配列に代入されているデーターは、2byteで一文字の数値なので、2byteずつのサイズに連結する。以下の2バイト連結1繰り返し処理で2byteずつのサイズに連結する処理を行う。
位置マーク2進配列のデーターの説明を終了する。
【００７０】
以下に注目配列と注目配列+1と注目配列-1の説明を行う。
配列の位置を示すインデックスでデーターを取得して、取得したデーターが格納されていた配列の位置を注目配列とする。注目配列のインデックスに1加算したインデックスで示す配列の位置を、注目配列+1と呼ぶ事とする。また、注目配列のインデックスに2加算したインデックスで示す配列の位置を、注目配列+2と呼ぶ事とする。また、注目配列のインデックスに3加算したインデックスで示す配列の位置を、注目配列+3と呼ぶ事とする。また、注目配列のインデックスに1を減算したインデックスで示す配列の位置を、注目配列-1と呼ぶ事とする。また、注目配列のインデックスに2減算したインデックスで注目配列が在る配列の位置を、注目配列-2と呼ぶ事とする。また、注目配列のインデックスに3を減算したインデックスで示す配列の位置を、注目配列-3と呼ぶ事とする。注目配列と注目配列+1等は、判断用検査技術を使用した場合の一つの表現である。表現が全く違う表現であっても、内容が1個の配列から配列のインデックスを指定する方法で幾つものデーターを取得している場合は、判断用検査技術を使用しているもの以外の何物でもない事を明言する。
注目配列と注目配列+1と注目配列-1の説明を終了する。
【００７１】
以下に、インデックスの説明を行う。
配列のインデックスの初期値として何も書かれていない場合は、配列のインデックスの最初の数値は、0である。また、配列のインデックスは、配列の最初の位置を０とするものである。配列の最初の位置を任意の数値に変更する事は出来ないのがインデックスである。
インデックスの説明を終了する。
3個のサイズで16byteのstring型で配列を作成する。作成した配列を位置マーク連結配列と呼ぶ。
1byteの型で変数を作成する。この変数をインデ1変数と呼ぶ。インデ1変数に0を代入する。
以下の繰り返し処理を2バイト連結1繰り返し処理と呼ぶ。
位置マーク2進配列のインデックスを使用して位置マーク2進配列のデーターを8byte取得して位置マーク2進配列の注目配列+1のデーターを8byte取得する。
以下の分岐を注目条件1分岐と呼ぶ。
注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、2バイト連結1繰り返し処理を終了する。
注目条件1分岐で、インデ1変数が0より大きい数値である事とインデ1変数が位置マーク2進配列のサイズの半分以上の場合の両方に該当する場合は、以下の処理を行う。
注目配列のデーターの後方に注目配列+1のデーターを連結して、連結して作成したデーターを位置マーク連結配列のインデックスとしてインデ1変数を使用して位置マーク連結配列に代入する。
インデ1変数のデーターに1を加算する。
注目条件1分岐を終了する。
注目配列の位置のインデックスに2を加算して2バイト連結1繰り返し処理の最初に戻って、繰り返し処理を繰り返す。位置マーク2進配列の最後の位置よりも一つ手前の位置のデーターを注目配列として処理し終わったら、2バイト連結1繰り返し処理を終了する。
【００７２】
3個のサイズでstring型の16bitで配列を作成する。作成した配列をＤ位置マーク10進配列と呼ぶ。以下の繰り返し処理を10進数変換1繰り返し処理と呼ぶ。
位置マーク連結配列の最初のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の最初の位置に代入する。
位置マーク連結配列の2番目のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の2番目の位置に代入する。
位置マーク連結配列の最後のデーター16byteを取得して、取得したデーターを10進数に変換してＤ位置マーク10進配列の最後の位置に代入する。
10進数変換1繰り返し処理を終了する。
【００７３】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をＤ位置サイズ配列と呼ぶ。
Ｄ位置サイズ配列に、Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ取得して、取得したデーターを1byteずつＤ位置サイズ配列の最初の位置から最後の位置までに代入する。
4個のサイズで8byteのstring型の配列を作成する。作成した配列をＤ位置サイズ2進配列と呼ぶ。
Ｄ位置サイズ配列の最初の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の最初の位置に代入する。
Ｄ位置サイズ配列の2番目の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の2番目の位置に代入する。
Ｄ位置サイズ配列の3番目の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の3番目の位置に代入する。
Ｄ位置サイズ配列の最後の位置のデーターを1byte取得して2進数に変換して、Ｄ位置サイズ2進配列の最後の位置に代入する。
以下の繰り返し処理を桁調整2繰り返し処理と呼ぶ。
Ｄ位置サイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用してデーターの文字数を調べて、取得したデーターの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト2分岐と呼ぶ。
バイト2分岐で、Ｄ位置サイズ2進配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
Ｄ位置サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ位置サイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト2分岐で、Ｄ位置サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
これでバイト2分岐を終了する。
桁調整2繰り返し処理の先頭に戻って、処理を繰り返す。
Ｄ位置サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整2繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をＤ位置サイズ10進変数と呼ぶ。
Ｄ位置サイズ2進配列の最初の位置の8byteのデーターの後方に、2番目の位置の8byteのデーター、その後方に3番目の位置の8byteのデーター、その後方に最後の位置の8byteのデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ位置サイズ10進変数に代入する。
【００７４】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とＤ位置サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
Ｄ位置サイズ10進変数に代入された数値をサイズとして1byteのstring型の配列を作成する。作成した配列をＤ位置1配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ位置1配列の最初から最後の位置までに1byteずつ代入する。
【００７５】
Ｄ位置1配列の配列サイズの半分のサイズで1byteのstring型の配列を作成する。作成した配列をＤ位置2進配列と呼ぶ。
64bitの型で変数を作成する。作成した変数をインデ2変数と呼ぶ。インデ2変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ3変数と呼ぶ。インデ3変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ4変数と呼ぶ。インデ4変数に0を代入する。
2個のサイズでstring型の1byteの配列を作成する。作成した配列を2進バイト仮配列と呼ぶ。
string型の1byteの変数を作成する。作成した変数を2進連結仮変数と呼ぶ。
以下の繰り返し処理を2進変換連結1繰り返し処理と呼ぶ。
インデ2変数のデーターがＤ位置1配列の配列サイズから2を減算した数値になるまで以下の処理を繰り返す。
Ｄ位置1配列からインデ2変数のデーターをインデックスとして使用してデーターを1byte取得して、2進数に変換してインデ1変数のデーターをインデックスとして使用して2進バイト仮配列に上書きで代入する。
インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列のデーターを1byte取得して、文字列操作関数を使用して文字数を調べて8文字の場合と8文字に満たない場合とに分岐する。この分岐をバイト3分岐と呼ぶ。
バイト3分岐で、取得した2進バイト仮配列のデーターの文字数が8文字の場合は、何も行わない。
バイト3分岐で、取得した2進バイト仮配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入する。
バイト3分岐を終了する。
インデ2変数のデーターに1を加算する。
インデ1変数のデーターに1を加算する。
インデ2変数のデーターをＤ位置1配列のインデックスとして使用してＤ位置1配列のデーターを1byte取得して、取得したデーターを2進数に変換してインデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入する。
インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列のデーターを1byte取得して、文字列操作関数を使用して文字数を調べて8文字の場合と8文字に満たない場合とに分岐する。この分岐をバイト4分岐と呼ぶ。
バイト4分岐で、取得した2進バイト仮配列のデーターの文字数が8文字の場合は、何も行わない。
バイト4分岐で、取得した2進バイト仮配列のデーターの文字数が8文字に満たない場合は、文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ1変数のデーターを2進バイト仮配列のインデックスとして使用して2進バイト仮配列に上書きで代入する。
バイト4分岐を終了する。
インデ2変数のデーターに1を加算する。
インデ1変数のデーターに0を上書きで代入する。
2進バイト仮配列の最初の位置の8bitのデーターの後方に2進バイト仮配列の最後の位置の8bitのデーターを連結した2進数の文字列を作成して、作成した2進数の文字列を2進連結仮変数に上書きで代入する。
インデ3変数のデーターをＤ位置2進配列のインデックスとして使用してＤ位置2進配列に代入する。
インデ3変数のデーターに1を加算する。
2進変換連結1繰り返し処理の先頭に戻って処理を繰り返す。インデ2変数のデーターがＤ位置1配列のサイズから2減算した数値になるまで処理を繰り返して、インデ2変数のデーターがＤ位置1配列のサイズから2減算した数値になったら、2進変換連結1繰り返し処理を終了する。
【００７６】
Ｄ位置1配列のデーターを全て削除して、Ｄ位置1配列のサイズをＤ位置2進配列のサイズに変更する。
以下の繰り返し処理を10進数変換2繰り返し処理と呼ぶ。
Ｄ位置2進配列の最初から最後の位置までの2進数で表されたデーターを16byteずつ取得して、10進数に変換してＤ位置1配列の末尾に2byteずつ代入する。Ｄ位置2進配列の次のデーターの処理に進めて、10進数変換2繰り返し処理の先頭に戻って処理を繰り返す。Ｄ位置2進配列の最後のデーターの処理が終わったら、10進数変換2繰り返し処理を終了する。
【００７７】
1byteの型で変数を作成する。作成した変数を文字記号1変数と呼ぶ。文字記号1変数に文字「|」記号を代入する。
1byteの型で変数を作成する。作成した変数を文字記号コード1変数と呼ぶ。文字記号コード1変数に文字記号1変数に代入されたデーターの文字コードを取得して代入する。
1byteの型で変数を作成する。作成した変数を文字記号2変数と呼ぶ。文字記号2変数に文字「/」記号を代入する。
1byteの型で変数を作成する。作成した変数を文字記号コード2変数と呼ぶ。文字記号コード2変数に文字記号2変数に代入されたデーターの文字コードを取得して代入する。
1byteの型で変数を作成する。作成した変数を文字記号3変数と呼ぶ。文字記号3変数に文字「,」記号を代入する。
1byteの型で変数を作成する。作成した変数を文字記号コード3変数と呼ぶ。文字記号コード3変数に文字記号3変数に代入されたデーターの文字コードを取得して代入する。
1byteの型で変数を作成する。作成した変数を文字記号4変数と呼ぶ。文字記号2変数に文字「?」記号を代入する。
1byteの型で変数を作成する。作成した変数を文字記号コード4変数と呼ぶ。文字記号コード4変数に文字記号4変数に代入されたデーターの文字コードを取得して代入する。
【００７８】
Ｄ圧縮ファイル配列のサイズで16bitのstring型で配列を作成する。作成した配列をＤ位置2配列と呼ぶ。
インデ2変数に0を上書きで代入する。
以下の繰り返し処理を記号入力1繰り返し処理と呼ぶ。
Ｄ位置1配列の最初から最後までのデーターを16bitずつ取得して分岐する。この分岐を入力条件1分岐と呼ぶ。
入力条件1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれかに該当する場合は、分岐する。この分岐を個別1分岐と呼ぶ。
個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合は、インデ2変数の数値をインデックスとして使用してＤ位置2配列に文字記号1変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合は、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号2変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合は、インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号4変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐を終了する。
入力条件1分岐で、Ｄ位置1配列のデーターがＤ位置マーク10進配列の最初の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の2番目の位置のデーターと一致する場合とＤ位置1配列のデーターがＤ位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれにも該当しない場合は、Ｄ位置1配列のデーターをインデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をＤ位置2配列のインデックスとして使用してＤ位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
入力条件1分岐を終了する。
Ｄ位置1配列の次のデーターを取得して記号入力1繰り返し処理の先頭に戻って、繰り返し処理を行い、Ｄ位置1配列の最後の位置の処理が終わったら、記号入力1繰り返し処理を終了する。
Ｄ位置2配列のサイズ調整を行う。
【００７９】
以下の繰り返し処理を記号削除1繰り返し処理と呼ぶ。
以下に、記号検査1分岐の説明を行う。
記号検査1分岐は、ＩＦ条件制御処理である。
記号検査1分岐の説明の説明を終わる。
Ｄ位置2配列の最初から最後までのデーターを配列のインデックスを使用して16bitずつ取得して取得した配列の位置を注目配列とする。以下に、分岐処理を行う。この分岐を記号検査1分岐と呼ぶ。記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがＤ位置2配列のサイズに満たない数値である場合の両方に該当する場合は、分岐する。この分岐を記号確認1分岐と呼ぶ。
以下に、記号確認1分岐の文言の説明を行う。
注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号1変数と一致する場合の両方に一致する場合を第1条件と呼ぶ。
注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号2変数と一致する場合の両方に一致する場合を第2条件と呼ぶ。
注目配列が文字記号3変数と一致する場合と注目配列-1が文字記号4変数と一致する場合の両方に一致する場合を第3条件と呼ぶ。
注目配列が文字記号3変数と一致する場合と注目配列+1が文字記号2変数と一致する場合の両方に一致する場合を第4条件と呼ぶ。
記号確認1分岐の文言の説明を終了する。
記号確認1分岐で、第1条件と第2条件と第3条件と第4条件のどれかに該当する場合は、Ｄ位置2配列の注目配列のデーターを削除する。
記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがＤ位置2配列のサイズに満たない数値である場合の両方に該当しない場合は、処理を行わない。
記号確認1分岐を終了する。
記号検査1分岐を終了する。
注目配列のインデックスに1を加算して記号削除1繰り返し処理の先頭に戻って、処理を続行する。
注目配列のインデックスがＤ位置2配列の最後の位置になるまで処理を繰り返して、記号削除1繰り返し処理を終了する。
【００８０】
Ｄ位置2配列と同じサイズで16bitのstring型で配列を作成する。この作成した配列を仮Ｄ位置2配列と呼ぶ。
以下の繰り返し処理をNull消去2繰り返し処理と呼ぶ。
Ｄ位置2配列の先頭から最後までのデーターを2byteずつ調べて、データーが入力されている配列のデーターだけを取得してを仮Ｄ位置2配列の末尾に代入する。Nullデーター配列の最後のデーターの処理が終わったら、このNull消去2繰り返し処理を終了する。
Ｄ位置2配列に代入されているデーターを全て削除して、仮Ｄ位置2配列のデーターをＤ位置2配列にコピーする。
【００８１】
8bitの型で変数を作成する。この作成した変数をバトン1変数と呼ぶ。バトン1変数に0を入力する。
8bitの型で変数を作成する。この作成した変数をバトン2変数と呼ぶ。バトン2変数に0を入力する。
Ｄ位置2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をＤ位置仮配列と呼ぶ。
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を配列復元1繰り返し処理と呼ぶ。
Ｄ位置2配列の最初から最後までのデーターを2byteずつ取得して分岐する。この分岐を記号判断1分岐と呼ぶ。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列のデーターを取得して、取得したＤ位置仮配列のデーターの後方にＤ位置2配列のデーターを連結して作成したデーターをインデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列に上書きで代入する。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入する。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入する。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列にＤ位置2配列のデーターを上書きで代入する。
以下に、分岐条件の文言の説明を行う。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第5条件と呼ぶ。
記号判断1分岐で、Ｄ位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第6条件と呼ぶ。
分岐条件の文言の説明を終了する。
記号判断1分岐で、Ｄ位置2配列のデーターが第5条件か第6条件のいずれかに該当する場合は、インデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列のデーターを取得して、取得したＤ位置仮配列のデーターの後方にＤ位置2配列のデーターを連結して作成したデーターをインデ2変数をＤ位置仮配列のインデックスとして使用してＤ位置仮配列に上書きで代入する。
記号判断1分岐で、Ｄ位置2配列のデーターがその他の場合は、処理を行わない。
記号判断1分岐を終了する。
Ｄ位置2配列のデーターを処理する位置を一つずらして、配列復元1繰り返し処理の先頭に戻って処理を続行して、Ｄ位置2配列の最後の位置のデーターの処理を完了したら、配列復元1繰り返し処理を終了する。
Ｄ位置2配列のデーターを全て削除して、Ｄ位置仮配列の全てのデーターをＤ位置2配列にコピーする。
【００８２】
以下の処理をボトムチェック1繰り返し処理と呼ぶ。
Ｄ位置2配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無1分岐と呼ぶ。
データー有無1分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト1分岐と呼ぶ。
有無ネスト1分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入する。
有無ネスト1分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入する。
有無ネスト1分岐を終了する。
データー有無1分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認し、データーが代入されていない場合は、何も行わない。
データー有無1分岐を終了する。
Ｄ位置2配列のインデックスに1を加算して、ボトムチェック1繰り返し処理の先頭に戻って、処理を続行する。
Ｄ位置2配列の最後の位置のデーターの処理が終わったら、ボトムチェック1繰り返し処理を終了する。
【００８３】
以下の繰り返し処理をフロントチェック1繰り返し処理と呼ぶ。
Ｄ位置2配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。
この分岐をデーター有無2分岐と呼ぶ。
データー有無2分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この処理を有無ネスト2分岐と呼ぶ。
有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してＤ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入する。
有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置2配列から取得したデーターの先頭に「|」記号が無い場合は、Ｄ位置2配列のデーターを取得したＤ位置2配列の位置に上書きで代入する。
有無ネスト2分岐を終了する。
データー有無2分岐で、文字列操作関数を使用して、Ｄ位置2配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無2分岐を終了する。
Ｄ位置2配列のインデックスに1を加算して、フロントチェック1繰り返し処理の先頭に戻って、処理を続行する。
Ｄ位置2配列の最後の位置のデーターの処理が終わったら、フロントチェック1繰り返し処理を終了する。
Ｄ位置2配列のサイズ調整を行う。
【００８４】
Ｄ位置2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をＤ位置3配列と呼ぶ。
2個のサイズで16byteのstring型の配列を作成する。この配列をスラッシュ分割配列と呼ぶ。
インデ2変数に上書きで0を代入する。
64bitの型で変数を作成する。作成した変数をリミット1変数と呼ぶ。Ｄ位置2配列のサイズをリミット1変数に代入する。
64bitの型で変数を作成する。作成した変数をリミット2変数と呼ぶ。
64bitの型で変数を作成する。作成した変数をゲット数値変数と呼ぶ。
64bitの型で変数を作成する。作成した変数を確認変数と呼ぶ。
2048byteのstring型の変数を作成する。作成した変数を復号変数と呼ぶ。
以下の繰り返し処理を符号復元繰り返し処理と呼ぶ。
インデ2変数の数値をインデックスとして使用してＤ位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割した場合に分割される数を配列のサイズとして、16byte
のstring型の配列を作成する。作成した配列をカンマ分割配列と呼ぶ。
インデ2変数の数値をインデックスとして使用してＤ位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割して、カンマ分割配列に16byteずつ代入する。
カンマ分割配列のサイズをリミット2変数に代入する。
以下の繰り返し処理を分割Ａ検査繰り返し処理と呼ぶ。
インデ3変数に上書きで0を代入する。
インデ3変数をインデックスとして使用してカンマ分割配列のデーターを取得する。以下に、分岐する。この分岐をカンマ分岐処理と呼ぶ。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号が有るかどうかを検査して「/」記号が有る場合は、以下の処理を行う。
スラッシュ分割配列にカンマ分割配列のデーターを「/」記号で分割して16byteずつ上書きで代入する。
カンマ分割配列の最初の位置のデーターを確認変数に上書きで代入する。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数を連結して、その後方に「,」記号を連結したデーターを作成して、Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したデーターに連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入する。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号と「?」記号が有るかどうかを検査して「/」記号と「?」記号の両方の記号が無い場合は、分岐する。この分岐を記号無分岐処理と呼ぶ。
記号無分岐処理で、確認変数が0の場合は、以下の処理を行う。
Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に「,」記号を連結したデーターを作成して、その後方に、カンマ分割配列のデーターを連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入する。
記号無分岐処理で、確認変数が0より大きい場合は、以下の処理を行う。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成してＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に連結して作成したデーターを上書きで代入する。
記号無分岐処理を終了する。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「?」記号が有るかどうかを検査して「?」記号が有る場合は、分岐する。この分岐をクエスチョン分岐と呼ぶ。
クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が有る場合は、以下の処理を行う。
確認変数に1を加算する。
文字列操作関数を使用して「?」記号の後方に記述されている数値を全て取得して、ゲット数値変数に上書きで代入する。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
Ｄ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列のデーターを取得して、取得したＤ位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成して、連結して作成したデーターをＤ位置3配列のインデックスとしてインデ2変数を使用してＤ位置3配列に上書きで代入する。
クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が無い場合は、何も行わない。
クエスチョン分岐を終了する。
カンマ分岐処理を終了する。
インデ3変数に1を加算する。
分割Ａ検査繰り返し処理の先頭に戻って、繰り返し処理を続行する。インデ3変数のデーターが、リミット2変数のデーターになるまで分割Ａ検査繰り返し処理を行って、分割Ａ検査繰り返し処理を終了する。
インデ2変数に1を加算する。
確認変数に上書きで0を代入する。
符号復元繰り返し処理の先頭に戻って、繰り返し処理を続行する。インデ2変数のデーターが、リミット1変数のデーターなるまで符号復元繰り返し処理を行って、符号復元繰り返し処理を終了する。
【００８５】
Ｄ位置3配列のサイズを調整する。
Ｄ位置3配列のサイズで、2048byteのstring型の配列を作成する。作成した配列をＤ位置4配列と呼ぶ。
Ｄ位置3配列の全てのデーターをＤ位置4配列にコピーする。
【００８６】
以下の処理をボトムチェック2繰り返し処理と呼ぶ。
Ｄ位置4配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無3分岐と呼ぶ。
データー有無3分岐で、文字列操作関数を使用して、Ｄ位置4配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト2分岐と呼ぶ。
有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置4配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ位置4配列のデーターを取得したＤ位置4配列の位置に上書きで代入する。
有無ネスト2分岐で、文字列操作関数を使用して、Ｄ位置4配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ位置4配列のデーターを取得したＤ位置4配列の位置に上書きで代入する。
有無ネスト2分岐を終了する。
データー有無3分岐で、文字列操作関数を使用して、Ｄ位置4配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無3分岐を終了する。
Ｄ位置4配列のインデックスに1を加算して、ボトムチェック2繰り返し処理の先頭に戻って、処理を続行する。
Ｄ位置4配列の最後の位置のデーターの処理が終わったら、ボトムチェック2繰り返し処理を終了する。
【００８７】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と2を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
16bitのstring型で変数を作成する。作成した変数をＤ個数マーク10進変数と呼ぶ。
2個のサイズで8bitのstring型で配列を作成する。作成した配列を個数マーク1配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んで個数マーク1変数の最初から最後の位置までに1byteずつ代入する。
8byteのstring型で変数を作成する。作成した変数を個数マーク2進変数と呼ぶ。
以下の繰り返し処理を2進数変換2繰り返し処理と呼ぶ。
個数マーク1配列のインデックスを使用して1byteのデーターを取得して2進数に変換して個数マーク2進配列の末尾に8byteずつ代入する。インデックスに1を加算して2進数変換2繰り返し処理の最初に戻って処理を続行する。個数マーク1配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換2繰り返し処理を終了する。
以下の繰り返し処理を桁調整3繰り返し処理と呼ぶ。
個数マーク2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト5分岐と呼ぶ。
バイト5分岐で、個数マーク2進配列のデーターの文字数が8文字に満たない場合は、個数マーク2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得した個数マーク2進配列の位置に作成した文字列を上書きで代入する。バイト5分岐で、個数マーク2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト5分岐を終了する。
個数マーク2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整3繰り返し処理を終了する。
以下に、個数マーク2進配列のデーターの説明を行う。
個数マーク2進配列に代入されているデーターは、2byteで一文字の数値なので、2byteのサイズに連結する。個数マーク2進配列の配列サイズは、2個なので、連結すると1個の数値になる。
個数マーク2進配列のデーターの説明を終了する。
個数マーク2進配列の最初のデーターの後方に個数マーク2進配列の最後のデーターを連結してデーターを作成して、連結して作成したデーターを10進数に変換して、Ｄ個数マーク10進変数に代入する。
【００８８】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をＤ個数サイズ配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ個数サイズ配列の最初から最後の位置までに1byteずつ代入する。
8byteのstring型で変数を作成する。作成した変数をＤ個数サイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換3繰り返し処理と呼ぶ。
Ｄ個数サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してＤ個数サイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換3繰り返し処理の最初に戻って処理を続行する。Ｄ個数サイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換3繰り返し処理を終了する。
以下の繰り返し処理を桁調整4繰り返し処理と呼ぶ。
Ｄ個数サイズ2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト6分岐と呼ぶ。
バイト6分岐で、Ｄ個数サイズ2進配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
Ｄ個数サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ個数サイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト6分岐で、Ｄ個数サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト6分岐を終了する。
Ｄ個数サイズ2進配列のインデックスに１を加算する。
桁調整4繰り返し処理の最初に戻って処理を繰り返す。
Ｄ個数サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整4繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をＤ個数10進変数と呼ぶ。
Ｄ個数サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成したデーターを10進数に変換して、Ｄ個数サイズ10進変数に代入する。
【００８９】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とＤ個数サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
Ｄ個数サイズ10進変数のデーターをサイズとして1byteのstring型の配列を作成する。作成した配列をＤ個数1配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ個数1配列の最初から最後の位置までに1byteずつ代入する。
Ｄ個数サイズ10進変数のデーターの半分のサイズを配列サイズとして2byteのstring型の配列を作成する。作成した配列をＤ個数2進配列と呼ぶ。
インデ2変数に0を上書きで代入する。
インデ3変数に0を上書きで代入する。
インデ4変数に0を上書きで代入する。
2個のサイズでstring型の1byteの配列を作成する。作成した配列を2進バイト仮2配列と呼ぶ。
string型の2byteの変数を作成する。作成した変数を2進連結仮2変数と呼ぶ。
以下の繰り返し処理を2進変換連結2繰り返し処理と呼ぶ。
インデ2変数のデーターがＤ個数1配列の配列サイズから2を減算した数値になるまで以下の処理を繰り返す。
Ｄ個数1配列からインデ2変数のデーターをインデックスとして使用してデーターを取得して、2進数に変換してインデ1変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入する。インデ1変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列のデーターを取得して、文字列操作関数を使用して文字数を調べて8文字の場合と8文字に満たない場合とに分岐する。この分岐をバイト7分岐と呼ぶ。
バイト7分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字の場合は、何も行わない。
バイト7分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮2配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入する。
バイト7分岐を終了する。
インデ2変数のデーターに1を加算する。
インデ4変数のデーターに1を加算する。
Ｄ個数1配列からインデ2変数のデーターをインデックスとして使用してデーターを取得して、2進数に変換してインデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入する。インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列のデーターを取得して、文字列操作関数を使用して文字数を調べて8文字の場合と8文字に満たない場合とに分岐する。この分岐をバイト8分岐と呼ぶ。
バイト8分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字の場合は、何も行わない。
バイト8分岐で、取得した2進バイト仮2配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
文字数が合計で8文字になる様に、8文字に足りない分だけ取得した2進バイト仮2配列のデーターの前方に0を連結して8文字の2進数を作成して、インデ4変数のデーターを2進バイト仮2配列のインデックスとして使用して2進バイト仮2配列に上書きで代入する。
バイト8分岐を終了する。
インデ2変数のデーターに1を加算する。
インデ4変数のデーターに0を上書きで代入する。
2進バイト仮2配列の最初の位置のデーターの後方に2進バイト仮2配列の最後の位置のデーターを連結した2進数の文字列を作成して、作成した2進数の文字列を2進連結仮2変数に上書きで代入する。
インデ3変数のデーターをＤ個数2進配列のインデックスとして使用してＤ個数2進配列に代入する。
インデ3変数のデーターに1を加算する。
2進変換連結2繰り返し処理の先頭に戻って処理を繰り返す。Ｄ個数1配列の最後の位置の一つ手前の位置のデーターを処理するまで繰り返し処理を行い、Ｄ個数1配列の最後の位置の一つ手前の位置のデーターを処理し終わったら、2進変換連結2繰り返し処理を終了する。
【００９０】
Ｄ個数2進配列のサイズで16bitのstring型の配列を作成する。作成した配列をＤ個数2配列と呼ぶ。
以下の繰り返し処理を10進数変換3繰り返し処理と呼ぶ。
Ｄ個数2進配列のインデックスを使用して16byteずつ取得して、10進数に変換してＤ個数2配列の末尾に16bitずつ代入する。Ｄ個数2進配列のインデックスに１を加算する。
10進数変換3繰り返し処理の先頭に戻って処理を繰り返す。
Ｄ個数2進配列の最後のデーターの処理が終わったら、10進数変換3繰り返し処理を終了する。
Ｄ圧縮ファイル配列のサイズで16bitのstring型の配列を作成する。作成した配列を仮Ｄ個数1配列と呼ぶ。
インデ2変数に0を上書きで代入する。
インデ3変数に0を上書きで代入する。
以下に、記号検査2分岐の説明を行う。
記号検査2分岐は、ＩＦ条件制御処理である。
記号検査2分岐の説明の説明を終わる。
以下の繰り返し処理を記号入力2繰り返し処理と呼ぶ。
Ｄ個数2配列からインデ3変数をインデックスとして使用して、Ｄ個数2配列のインデ3変数の位置を注目配列とし、注目配列のデーターを取得して分岐する。以下の分岐を記号検査2分岐と呼ぶ。
記号検査2分岐で、インデ3変数に1を加算した数値がＤ個数2配列のサイズに満たない場合は、分岐する。この分岐をマーク検査1分岐と呼ぶ。
マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致する場合は、以下の処理を行う。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「|」記号を仮Ｄ個数1配列に代入する。
インデ2変数に1を加算する。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入する。
インデ2変数に1を加算する。
マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致しない場合とＤ個数マーク10進変数と注目配列+1のデーターが一致しない場合の両方に該当する場合は、以下の処理を行う。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入する。
インデ2変数に1を加算する。
マーク検査1分岐で、Ｄ個数マーク10進変数と注目配列のデーターが一致しない場合とＤ個数マーク10進変数と注目配列+1のデーターが一致する場合の両方に該当する場合は、以下の処理を行う。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
マーク検査1分岐を終了する。
記号検査2分岐で、インデ3変数のデーターがＤ個数2配列のサイズから1を減算した数値に一致する場合は、以下の処理を行う。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して仮Ｄ個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
仮Ｄ個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮Ｄ個数1配列に代入する。
インデ2変数に1を加算する。
記号検査2分岐を終了する。
インデ3変数に1を加算する。
記号入力2繰り返し処理の先頭に戻って処理を繰り返す。インデ3変数のデーターがＤ個数2配列の最後の位置のデーターを処理する数値になるまで処理を繰り返して、記号入力2繰り返し処理を終了する。
Ｄ個数2配列のデーターを全て削除して、仮Ｄ個数1配列の全てのデーターをＤ個数2配列にコピーする。
Ｄ個数2配列のサイズ調整を行う。
【００９１】
以下に、記号検査3分岐の説明を行う。
記号検査3分岐は、ＩＦ条件制御処理である。
記号検査3分岐の説明の説明を終わる。
以下の繰り返し処理を記号削除2繰り返し処理と呼ぶ。
記号削除2繰り返し処理では、Ｄ個数2配列の最初から最後までのデーターを16bitずつ取得して処理を行う。Ｄ個数2配列からデーターを取得した位置を注目配列とする。
分岐する。この分岐を記号検査3分岐と呼ぶ。
記号検査3分岐で、注目配列を示すインデックスが0より大きい数値である場合には、分岐する。この分岐を記号削除分岐と呼ぶ。
記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当する場合は、Ｄ個数2配列の注目配列の位置のデーターを削除する。
記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当しない場合は、何も行わない。
記号削除分岐を終了する。
記号検査3分岐で、注目配列を示すインデックスが0と一致する数値の場合には、処理を行わない。
記号検査3分岐を終了する。
注目配列を一つ先に進めて、記号削除2繰り返し処理の先頭に戻って処理を繰り返し行う。Ｄ個数2配列の最後の位置を注目配列として処理し終わったら、記号削除2繰り返し処理を終了する。
【００９２】
Ｄ個数2配列のサイズで16bitのstring型の配列を作成する。作成した配列を仮Ｄ個数2配列と呼ぶ。
以下の繰り返し処理をNull消去3繰り返し処理と呼ぶ。
Ｄ個数2配列の先頭から最後までのデーターを16bitずつ調べて、データーが入力されている配列のデーターだけを取得してを仮Ｄ個数2配列の末尾に代入する。Ｄ個数2配列の最後のデーターの処理が終わったら、このNull消去3繰り返し処理を終了する。
Ｄ個数2配列のデーターを全て削除して、仮Ｄ個数2配列の全てのデーターをＤ個数2配列にコピーする。
【００９３】
バトン1変数に0を上書きで代入する。
バトン2変数に0を上書きで代入する。
Ｄ個数2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をＤ個数3配列と呼ぶ。
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を配列復元2繰り返し処理と呼ぶ。
Ｄ個数2配列からインデックスを使用してデーターを2byteずつ取得して分岐する。この分岐を記号判断2分岐と呼ぶ。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をインデックスとして使用してＤ個数3配列のデーターを取得して、取得したＤ個数3配列のデーターの後方にＤ個数2配列のデーターを連結して作成したデーターをインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列に上書きで代入する。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入する。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入する。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列にＤ個数2配列のデーターを上書きで代入する。
以下に、分岐条件の文言の説明を行う。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第7条件と呼ぶ。
記号判断2分岐で、Ｄ個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第8条件と呼ぶ。
分岐条件の文言の説明を終了する。
記号判断2分岐で、Ｄ位置2配列のデーターが第7条件か第8条件のいずれかに該当する場合は、Ｄインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列のデーターを取得して、取得したＤ個数3配列のデーターの後方にＤ個数2配列のデーターを連結して作成したデーターをインデ2変数をＤ個数3配列のインデックスとして使用してＤ個数3配列に上書きで代入する。
記号判断2分岐で、Ｄ個数2配列のデーターがその他の場合は、処理を行わない。
記号判断2分岐を終了する。
Ｄ個数2配列のインデックスに1を加算して、配列復元2繰り返し処理の先頭に戻って処理を続行して、Ｄ個数2配列の最後の位置のデーターの処理を完了したら、配列復元2繰り返し処理を終了する。
【００９４】
Ｄ個数3配列の配列サイズの調整を行う。
以下の処理をボトムチェック3繰り返し処理と呼ぶ。
Ｄ個数3配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無4分岐と呼ぶ。
データー有無4分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト3分岐と呼ぶ。
有無ネスト3分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してＤ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入する。
有無ネスト3分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの末尾に「,」記号が無かった場合は、Ｄ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入する。
有無ネスト3分岐を終了する。
データー有無4分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無4分岐を終了する。
Ｄ個数3配列のインデックスに1を加算して、ボトムチェック3繰り返し処理の先頭に戻って、処理を続行する。
Ｄ個数3配列の最後の位置のデーターの処理が終わったら、ボトムチェック3繰り返し処理を終了する。
以下の繰り返し処理をフロントチェック2繰り返し処理と呼ぶ。
Ｄ個数3配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。
この分岐をデーター有無5分岐と呼ぶ。
データー有無5分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この処理を有無ネスト4分岐と呼ぶ。
有無ネスト4分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してＤ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入する。
有無ネスト4分岐で、文字列操作関数を使用して、Ｄ個数3配列から取得したデーターの先頭に「|」記号が無い場合は、Ｄ個数3配列のデーターを取得したＤ個数3配列の位置に上書きで代入する。
有無ネスト4分岐を終了する。
データー有無5分岐で、文字列操作関数を使用して、Ｄ個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無5分岐を終了する。
Ｄ個数3配列のインデックスに1を加算して、フロントチェック2繰り返し処理の先頭に戻って、処理を続行する。
Ｄ個数3配列の最後の位置のデーターの処理が終わったら、フロントチェック2繰り返し処理を終了する。
Ｄ個数3配列の配列サイズ調整を行う。
【００９５】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をＤ文字サイズ配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ文字サイズ配列の最初から最後の位置までに1byteずつ代入する。
8byteのstring型で変数を作成する。作成した変数をＤ文字サイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換4繰り返し処理と呼ぶ。
Ｄ文字サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してＤ文字サイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換4繰り返し処理の最初に戻って処理を続行する。Ｄ文字サイズ配列の最後の位置のデーターの処理が終了したら、2進数変換4繰り返し処理を終了する。
以下の繰り返し処理を桁調整5繰り返し処理と呼ぶ。
Ｄ個数サイズ2進配列からインデックスを使用して8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト9分岐と呼ぶ。
バイト9分岐で、Ｄ文字サイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ文字サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ文字サイズ2進配列の位置に作成した文字列を上書きで代入する。バイト9分岐で、Ｄ文字サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト9分岐を終了する。
Ｄ文字サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整5繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をＤ文字10進変数と呼ぶ。
Ｄ文字サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ文字サイズ10進変数に代入する。
【００９６】
Ｄ文字サイズ10進変数に代入されたデーターをサイズとして1byteのstring型の配列を作成する。作成した配列をＤ文字1配列と呼ぶ。
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とＤ文字サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ文字1配列の最初から最後の位置までに1byteずつ代入する。
【００９７】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数に8を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
8個のサイズで1byteのstring型の配列を作成する。作成した配列をＤ圧縮Ｆサイズ配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮Ｆサイズ配列の最初から最後の位置までに1byteずつ代入する。
64bitのstring型で変数を作成する。作成した変数をＤ圧縮Ｆサイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換5繰り返し処理と呼ぶ。
Ｄ圧縮Ｆサイズ配列のインデックスの1byteのデーターを取得して2進数に変換してＤ圧縮Ｆサイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換5繰り返し処理の最初に戻って処理を続行する。Ｄ圧縮Ｆサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換5繰り返し処理を終了する。
以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ。
Ｄ圧縮Ｆサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト10分岐と呼ぶ。
バイト10分岐で、Ｄ圧縮Ｆサイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ圧縮Ｆサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ圧縮Ｆサイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト10分岐で、Ｄ圧縮Ｆサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト10分岐を終了する。
Ｄ圧縮Ｆサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整6繰り返し処理を終了する。
64bitのstring型の変数を作成する。作成した変数をＤ圧縮ファイルサイズ10進変数と呼ぶ。
Ｄ圧縮Ｆサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ圧縮ファイルサイズ10進変数に代入する。
【００９８】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数に8を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
8個のサイズで1byteのstring型の配列を作成する。作成した配列をＤ圧縮データーサイズ配列と呼ぶ。
Ｄ圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮データーサイズ配列の最初から最後の位置までに1byteずつ代入する。
64bitのstring型で変数を作成する。作成した変数をＤ圧縮データーサイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換6繰り返し処理と呼ぶ。
Ｄ圧縮データーサイズ配列のインデックスの1byteのデーターを取得して2進数に変換してＤ圧縮Ｆデーター2進配列の末尾に代入する。
インデックスに1を加算して2進数変換6繰り返し処理の最初に戻って処理を続行する。Ｄ圧縮データーサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換6繰り返し処理を終了する。
以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ。
Ｄ圧縮データーサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト11分岐と呼ぶ。
バイト11分岐で、Ｄ圧縮データーサイズ2進配列のデーターの文字数が8文字に満たない場合は、Ｄ圧縮データーサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したＤ圧縮データーサイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト11分岐で、Ｄ圧縮データーサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト11分岐を終了する。
Ｄ圧縮データーサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整7繰り返し処理を終了する。
64bitのstring型の変数を作成する。作成した変数をＤ圧縮データーサイズ10進変数と呼ぶ。
Ｄ圧縮データーサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、Ｄ圧縮データーサイズ10進変数に代入する。
【００９９】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数にＤ圧縮データーサイズ10進変数のサイズを代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
読込量変数のサイズで1byteのstring型の配列を作成する。作成した配列をＤ圧縮データー配列と呼ぶ。
以下に、Ｄ圧縮データー配列の説明を行う。
Ｄ圧縮データー配列に代入されるデーターは、圧縮データーである。
Ｄ圧縮データー配列の説明を終了する。
Ｄ圧縮データー配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでＤ圧縮データー配列の最初から最後の位置までに1byteずつ代入する。
【０１００】
Ｄ圧縮ファイルサイズ10進変数に代入されているデーターのサイズで8bitのstring型の配列を作成する。作成した配列を展開データー配列と呼ぶ。
インデ2変数に上書きで0を代入する。
64bitの型で変数を作成する。作成した変数をインデ5変数と呼ぶ。インデ5変数に0を代入する。 
64bitの型で変数を作成する。作成した変数をインデ6変数と呼ぶ。インデ6変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ7変数と呼ぶ。インデ7変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ8変数と呼ぶ。インデ8変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ9変数と呼ぶ。インデ9変数に0を代入する。
以下の繰り返し処理を展開1繰り返し処理と呼ぶ。
Ｄ位置4配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成する。作成した配列を位置個別配列と呼ぶ。
Ｄ個数3配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成する。作成した配列を個数個別配列と呼ぶ。
位置個別配列のサイズを取得してインデ6変数とインデ7変数の両方の変数に代入する。
インデ3変数に上書きで0を代入する。
インデ4変数に上書きで0を代入する。
以下に繰り返し処理を行う。以下の繰り返し処理を展開ネスト1繰り返し処理と呼ぶ。
分岐する。以下の分岐を位置条件分岐と呼ぶ。
位置条件分岐で、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、取得したデーターがインデ4変数と一致する場合は、以下の処理を行う。
以下の繰り返し処理を展開ネスト2繰り返し処理と呼ぶ。
インデ4変数のデーターをインデ9変数に上書きで代入する。
インデ5変数をＤ文字1配列のインデックスとして使用してＤ文字1配列のデーターを8bitずつ取得して、インデ9変を展開データー配列のインデックスとして使用して展開データー配列に8bitずつ代入する。
インデ9変数に1を加算する。
展開ネスト2繰り返し処理の先頭に戻って、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、インデ9変数の数値が取得したデーターとインデ4変数に加算した数値になるまで展開ネスト2繰り返し処理を繰り返して、展開ネスト2繰り返し処理を終了する。
分岐する。以下の分岐を回数確認分岐と呼ぶ。
回数確認分岐で、インデ6変数から1を減算した数値が0と一致する場合は、以下の処理を行う。
インデ5変数に1を加算する。
回数確認分岐で、インデ6変数から1を減算した数値が0と一致しない場合は、何も行わない。
回数確認分岐を終了する。
インデ3変数に1を加算する。
位置条件分岐で、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、取得したデーターがインデ4変数と一致しない場合は、以下の処理を行う。
インデ4変数に1を加算する。
位置条件分岐を終了する。
展開ネスト1繰り返し処理の先頭に戻って、処理を繰り返す。位置個別配列の最後の位置のデーターの処理が終了するまで繰り返し処理を行って、展開ネスト1繰り返し処理を終了する。
インデ2変数に1を加算する。
展開1繰り返し処理の先頭に戻って、処理を繰り返す。Ｄ文字1配列の最後の位置の処理が終了するまで処理を繰り返して、展開1繰り返し処理を終了する。
【０１０１】
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を展開2繰り返し処理と呼ぶ。
展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、空白の場合とデーターが代入されている場合に分岐する。この分岐を空白入力分岐と呼ぶ。
空白入力分岐で、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、空白の場合は、以下の処理を行う。
展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列に、インデ2変数をＤ圧縮データー配列のインデックスとして使用してＤ圧縮データー配列のデーターを取得して代入する。
インデ2変数に1を加算する。
空白入力分岐で、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、データーが代入されている場合は、何も行わない。
空白入力分岐を終了する。
インデ8変数に1を加算する。
展開データー配列の最後の位置のデーターの処理が終わるまで処理を繰り返して、展開2繰り返し処理を終了する。
【０１０２】
展開データー配列の最初から最後までのデーターを1byteずつファイルに書き込んでバイナリー形式で名称を付けてファイルを作成して展開ファイルとして保存する。実施例では、DeCord.txtと言う名称のファイルを作成して展開ファイルとして保存した。
図符号Ｊの圧縮ファイルのサイズを表示するテキストボックスに、Ｄ圧縮ファイル配列のサイズを表示する。
図符号Ｍの展開ファイルのサイズを表示するテキストボックスに、Ｄ圧縮ファイルサイズ10進変数のデーターを表示する。
図符号Ｋの展開ファイルの内容を表示するリッチテキストボックスにDeCord.txtという名称で保存した展開ファイルを開いて表示する。
【０１０３】
次に、ステップ１０６の「図符号Ｏのデーター表示 2ボタンをクリックする」に進む。ステップ１０６は、人為的な手動による操作または入力処理工程である。
図符号Ｏのデーター表示 2の画面を表示するボタンを図符号Ｄのマウスでクリックすると図５の画面が表示される。
【０１０４】
次に、ステップ１０７の「図５のデーター表示 1の画面を表示して辞書データーを表示する」に進む。ステップ１０７は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
図の画面が表示された後に、自動的に以下の処理が行われる。
Ｄ文字1配列のデーターを図符号Ｗの圧縮した文字表示欄に表示する。
Ｄ位置4配列のデーターを図符号Ｘの圧縮した位置表示欄に表示する。
Ｄ個数3配列のデーターを図符号Ｙの圧縮した文字の個数表示欄に表示する。
以上で展開工程を終了する。
【符号の説明】
【０１０５】
Ａ：モニター
Ｂ：コンピューター本体
Ｃ：キーボード
Ｄ：マウス
Ｅ：圧縮対象ファイルを指定するテキストボックス
Ｆ：圧縮対象ファイルの内容を表示するリッチテキストボックス
Ｇ：圧縮されたファイルのヘッダー無の内容を表示するリッチテキストボックス
Ｈ：圧縮対象ファイルのサイズを表示するテキストボックス
Ｉ：圧縮ファイルを指定するテキストボックス
Ｊ：圧縮ファイルのサイズを表示するテキストボックス
Ｋ：展開ファイルの内容を表示するリッチテキストボックス
Ｌ：圧縮ファイルのサイズを表示するテキストボックス
Ｍ：展開ファイルのサイズを表示するテキストボックス
Ｎ：データー表示 1の画面を表示するボタン
Ｏ：データー表示 2の画面を表示するボタン
Ｐ：圧縮開始ボタン
Ｑ：展開開始ボタン
Ｒ：展開ファイル指定用参照ボタン
Ｓ：圧縮ファイル指定用参照ボタン
Ｔ：圧縮した文字表示欄
Ｕ：圧縮した位置表示欄
Ｖ：圧縮した文字の個数表示欄
Ｗ：展開した文字表示欄
Ｘ：展開した位置表示欄
Ｙ：展開した文字の個数表示欄
Ｚ：余りや倍数に満たない数値
ａ：倍数
ｂ：倍数と余りがある事を示す記号
ｃ：倍数が連続していることを示す記号
ｄ：人為的な手動による操作または入力処理工程
ｅ：マルメ圧縮ソフトウェアとコンピューターによる自動処理工程
【図１】
2018032227.tif 000003
【図２】
2018032227.tif 000004
【図３】
2018032227.tif 000005
【図４】
2018032227.tif 000006
【図５】
2018032227.tif 000007
【図６】
2018032227.tif 000008
【図７】
2018032227.tif 000009
【図８】
2018032227.tif 000010
【図９】
2018032227.tif 000011
【図１０】
2018032227.tif 000012
【図１１】
2018032227.tif 000013
【図１２】
2018032227.tif 000014
【手続補正書】
【提出日】平成28年11月10日(2016.11.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
倍数と余りで数値を表す技術で先頭位置を記録する事で大きな数値を記録する。図１０のマルメ圧縮ソフトウェアの数値記録技術の説明１図を参照。
倍数が無い場合は、[数値]のみを記録する。倍数がある場合は、[倍数/数値]で記録する。倍数が同じ場合は、[倍数/]を記録せずに[数値]のみを記録する。倍数が同じ場合は、[倍数/]を記録せずに[数値]のみを記録した状態を表したのが、図１１のマルメ圧縮ソフトウェアの数値記録技術の説明２図である。更に、辞書データーを小さくする。倍数が連続している場合は、[倍数/]を[?]に置き換えて[?数値]として記録する。倍数が連続している場合は、[倍数/]を[?]に置き換えて[?数値]として記録した状態が、図１２のマルメ圧縮ソフトウェアの数値記録技術の説明３図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
以下に、プログラマーとは、ソフトウェアを作成する人間の事を言う。人工知能でソフトウェアを作成する場合は、人工知能もプログラマーである。
図１２のマルメ圧縮ソフトウェアの数値記録技術の説明３図と、〔特許文献１〕特許第５３３６６４５号 倍数乗数分割ソフトウェアを記録した記録媒体と比較すると大きく違う事が確認できると思う。本発明のマルメ圧縮ソフトウェアの数値記録技術は、辞書データーに記録する数値記録技術なので、全く違う技術である。
倍数が連続している場合に、[倍数/]を[?]に置き換えて[?数値]として記録する技術は、今までに無い数値記録技術である。また、記号の[/]と[?]は、適当に決めた記号である。任意に、その他の文字を記号として使用しても良い。また、記号ではなくて、数値をマークとして使用する事も可能である。数値をマークとして使用する場合は、文字列操作関数が使用できないので、全て配列に一文字分ずつ数値を代入して処理する必要がある。ここで言う一文字分ずつとは、最大値を2byteや4byteや10byteや16byteで表す事をフログラマーが任意に決定する一文字分の事である。例えば、2byteの数値までを一文字分の数値だとプログラマーが決めて、メモリーを確保して変数や配列を作成すると16bitの型で変数や配列を作成する事になるわけだが、16bitに代入できる最大値までが、一文字分となると言う意味である。2進数で16bitの数値は、1111111111111111が最大値となるが、10進数に変換すると、65535である。
本発明の実施例では、全てを配列で処理せずに文字列操作関数を使用して処理しているが、文字列操作関数を使用しなくても処理が可能である。文字列操作関数を使用しない処理だと全てを配列や変数で処理する事で処理が出来るのである。配列だけで処理する技術は、簡単なレパートリーなので本発明のマルメ圧縮ソフトウェアを記録した記録媒体であると明言する。実施例では、文字列操作関数を使用して処理する為に、記号の「/」や記号の「?」を使用しているだけである。最初から最後まで文字の記号を使わずに数値をマークとして使用して処理する場合も、本発明の簡単なレパートリーであるから、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。