【実施例】
【0033】
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9は、実際とは、多少異なる事を明記する。
【0034】
以下の段落に於いて、変数を作成すると記述しているが変数や配列が作成される場所は、図符号Bのコンピューター本体の内部にある本体メモリーに作成される。但し、OSと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Bのコンピューター本体の内部にある本体メモリーまたは、図符号Bのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、変数や配列を作成すると記述している場合の変数や配列が作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されると言う表現になる。
【0035】
以下の段落に於いて、全て一次元配列や変数を使用してプログラムを作成しているが、多次元配列を使用したり、ファイルを使用する事でも同じ処理が出来ると考えられる。また、一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明のマルメ圧縮ソフトウェアを記録した記録媒体の単純なレパートリーでしかないと言う事を明言する。
以下のマルメ圧縮ソフトウェアを記録した記録媒体とコンピューターによる自動処理の部分の処理工程を記述したCPUに対する命令文の事をプログラムと呼ぶ事とする。また、配列のサイズの調整なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、配列の型の変換処理なども当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、変数の型の変換処理についても当該事業者にとって常識的な技術であると考えられる事であるから何も書いていない場合がある。また、配列のデーターを全て別の配列にコピーする場合も、常識的な技術なので何も書いていない場合がある。また、配列のサイズを変更する処理も常識的な処理なので何も書いていない。
また、繰り返し処理の途中で配列を作成したり、変数を作成する場合がある。繰り返し処理の途中で配列を作成したり変数を作成すると、既に作成されている同名の配列や変数に代入されているデーターは全て自動的に削除されて、新規に配列を作った場合と同じ状態になる。繰り返し処理の途中で配列や変数を作成した場合に、データーが削除されて新規に配列や変数を作成したのと同じ状態になる事は、常識的な自動処理工程なので何も記述していない。
また、データーの内容を表示する処理工程やファイルの内容を表示する処理工程も常識的な処理なので何も書いていない場合がある。
また、配列に代入されているデーターを別の配列にコピーする技術も常識的な処理なので何も書いていない場合がある。
以下に、「配列のデーターを代入できる領域の最初の位置から最後の位置まで」を「配列の最初の位置から最後の位置まで」と略して表現する場合がある。また、「配列のデーターを代入できる領域の最初の位置」や「配列のデーターを代入できる領域の最後の位置」や「配列のデーターを代入できる領域の2番目の位置」の事を各々、「配列の最初の位置」や「配列の最後の位置」や「配列2番目の位置」と表現する事がある。また、「配列の最初の位置」や「配列の最後の位置」や「配列2番目の位置」の事を「配列の最初のデーター」や「配列の最後のデーター」や「配列2番目のデーター」と表現する場合がある。
また、「配列に代入されたデーター」や「変数に代入されたデーター」の事を各々、「配列のデーター」や「変数のデーター」または、「変数」や「配列」と略して表現する事がある。
また、配列や変数に代入されたデーターの事を「配列の数値」「変数の数値」と呼ぶ事がある。
【0036】
図1の<マルメ圧縮ソフトウェアのフローチャート図>を参照の事。図符号Dと図符号Eには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明のマルメ圧縮ソフトウェアを記録した記録媒体を起動すると、
図3の<マルメ圧縮ソフトウェアの操作画面図>の様な操作画面が図符号Aのモニターに表示される。
【0037】
ステップ100の「圧縮対象ファイルを選択して図符号Pの圧縮開始ボタンをクリックして圧縮工程をスタートさせる処理工程」に進む。ステップ100は、人為的な手動による操作または入力処理工程である。ステップ100は、圧縮工程の処理である。
図符号Eの<圧縮対象ファイルを指定するテキストボックス>に図符号Cのキーボードなどの入力デバイスを使用して圧縮対象ファイルを指定する事が出来る様になっている。また、図符号Sの圧縮ファイル指定用参照ボタンを図符号Dのマウスなどの入力デバイスを使用してクリックする事でハードディスク内を参照して圧縮対象ファイルを選択する事が出来る様になっている。
図符号Eの<圧縮対象ファイルを指定するテキストボックス>に図符号Cのキーボードなどの入力デバイスを使用して圧縮対象ファイルを指定する操作を行うか、図符号Sの圧縮ファイル指定用参照ボタンを図符号Dのマウスなどの入力デバイスを使用してクリックする事でハードディスク内を参照して圧縮対象ファイルを選択する事で圧縮対象ファイルを指定する操作を行うかのどちらかの操作をする事で圧縮対象ファイルを指定する。次に、図符号Pの<圧縮開始ボタン>を図符号Dのマウスなどの入力デバイスを使用してクリックする事で圧縮工程の処理を開始する。
【0038】
次に、ステップ101の「圧縮データーと辞書データーを作成し、圧縮ファイルを作成し保存する 圧縮ファイルの内容を表示する工程」に進む。ステップ101は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
【0039】
圧縮対象ファイルをテキスト形式で開いて記録されている全てのデーターを1byteずつ読み込んで図符号Fの圧縮対象ファイルの内容を表示するリッチテキストボックスに表示する。
【0040】
圧縮対象ファイルのデーターを1byteずつ読み込んで、圧縮対象ファイルのデーターを1byteずつ全て代入できるサイズで8bitのstring型で配列を作成する。作成した配列を圧縮対象配列と呼ぶ事とする。圧縮対象ファイルの最初から最後までのデーターを1byteずつ読み込んで、圧縮対象配列の末尾に1byteずつ全てのデーターを代入する。
【0041】
圧縮対象配列と同じサイズで64bitのstring型で配列を作成する。作成した配列を位置1配列と呼ぶ。
圧縮対象配列と同じサイズで16bitのstring型で配列を作成する。作成した配列を個数1配列と呼ぶ。
圧縮対象配列と同じサイズで8bitのstring型で配列を作成する。作成した配列を文字1配列と呼ぶ。
8bitのstring型で変数を作成して、作成した変数を仮文字1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数を仮位置1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数をカウント1変数と呼ぶ。
64bitの型で変数を作成して、作成した変数をインデックス1変数と呼ぶ。インデックス1変数に0を代入する。
以下の繰り返し処理を注目配列A繰り返し処理と呼ぶ。
注目配列A繰り返し処理では、インデックス1変数に代入された数値を圧縮対象配列のインデックスとして使用して圧縮対象配列のデーターを1byte取得して、取得した配列の位置を注目配列とする。以下の繰り返し処理を注目データー1繰り返し処理と呼ぶ。
注目配列の一つ先の位置の配列の要素を注目配列+1と呼ぶ。
以下に、一つ先の位置のデーターの説明を行う。
圧縮対象配列には、1byteずつデーターが代入されているので一つ先のデーターとは、1byte先の位置のデーターの事を言う。
一つ先の位置のデーターの説明を終了する。
注目配列の一つ先の位置に代入されているデーターを1byte取得する。
注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、同じ場合と同じでない場合とに分岐する。この分岐をカウント1分岐と呼ぶ。
カウント1分岐で注目配列に代入されたデーターと注目配列+1に代入されたデーターが同じ場合は、カウント1変数に1を加算する事で同じ文字であった回数をカウントして、仮文字1変数に、注目配列に代入されているデーターを上書きで代入し、仮位置1変数に注目配列のインデックスを代入し、注目配列+1の配列を1byte先にずらして注目データー1繰り返し処理の先頭に戻って注目データー1繰り返し処理を続行する。
注目配列に代入されたデーターと注目配列+1に代入されたデーターとを比較検査して、注目配列+1が、圧縮対象配列の最後の位置に代入されたデーターを検査するまで1byetずつ注目配列+1の位置を先にずらして、注目データー1繰り返し処理の先頭に戻って処理を続行する。
注目配列に代入されたデーターと注目配列+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繰り返し処理を終了する。
【0042】
位置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消去繰り返し処理の説明を終わる。
圧縮データー配列のサイズ調整を行う。
以下に、圧縮データー配列の作成説明を行う。
圧縮データー配列の作成から、圧縮データー配列のサイズ調整までの処理が終わると圧縮データーが完成する。
圧縮データー配列の作成説明を終了する。
【0043】
以下に、文字1配列のデーター処理の説明を行う。
文字1配列のデーターは、同じ文字が記録されている場合があるので、同じ文字が有ったら削除する。同じ文字が有ったら削除する理由は、削除すれば辞書が小さくなるからである。
文字1配列のデーター処理の説明を終わる。
256のサイズで8bitのstring型の配列を作成する。作成した配列を整理A配列と呼ぶ。
8bitの型で変数を作成する。作成した変数をカウント2変数と呼ぶ。カウント2変数の初期値として0を代入する。
以下の処理を整理1繰り返し処理と呼ぶ。
整理1繰り返し処理では、文字1配列に代入されている全てのデーターを1byteずつ検査してカウント2変数に代入されている数値と同じ数値が有ったら、カウント2変数に代入された数値を整理A配列のインデックスとして使用して整理A配列に、文字1配列のデーターを上書きで代入する。カウント2変数に1を加算して、カウント2変数のデーターが255になるまで整理1繰り返し処理を繰り返して、整理1繰り返し処理を終了する。
256のサイズで、8bitでstring型の配列を作成する。作成した配列を整理B配列と呼ぶ。
以下の繰り返し処理を整理2繰り返し処理と呼ぶ。
整理A配列のデーターを1byteずつ調べて、データーが代入されている配列のデーターを取得して整理B配列の末尾に1byteずつ代入する。整理A配列の最後の位置まで処理を行ったら、整理2繰り返し処理処理を終了する。
整理B配列の配列サイズの調整を行う。
整理B配列の配列サイズで、8bitのstring型の配列を作成する。作成した配列を文字2配列と呼ぶ。整理B配列のデーターを全て文字2配列にコピーする。
以下に、文字2配列の説明を行う。
文字2配列は、これで完成する。完成した文字配列は、文字辞書として使用する配列である。
文字2配列の説明を終了する。
【0044】
文字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配列に代入された各々のデーターの末尾に「,」記号が有ったら「,」記号を削除する。
【0045】
個数用のマーク数値と位置用のマーク数値の説明を行う。
個数用のマークとしての数値を決定する。個数は、圧縮できた文字の個数を記録するものなので、絶対に0が使われる事のない数値である。従って、0をマーク用の数値とする。個数用なので圧縮する文字数として設定した文字数より少ない数値であるならば、絶対に使われる事のない数値になるので、0ではなくて、他の数値を個数用のマークとしての数値に決定する事も可能である。個数マーク変数に代入する数値をマーク数値と呼ぶ。
個数用のマークに使用するマーク数値は、数値で0と決めている。また、位置用のマークに使用する数値マークは、65533と65534と65535を使用すると決めている。
従って、圧縮ファイルを作成する場合に、圧縮ファイルに位置用のマーク数値と個数用のマーク数値を記録させる必要が無い。
しかしながら、実施例では、位置用のマーク数値と個数用のマーク数値を圧縮ファイルに記録して、展開時に位置用のマーク数値と個数用マークの数値を読み込むという手間をかけている。
処理する必要のない処理を実施例で行っているのであるが、この様な処理する必要のない処理を割愛しても本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明言する。
個数用のマーク数値と位置用のマーク数値の説明を終了する。
16byteのstring型で変数を作成する。作成した変数を個数マーク変数と呼ぶ。個数マーク変数に16個の0を代入する。
以下に16個の0の説明を行う。
16個の0は、「0000000000000000」であるが、2進数で0を16桁で表すと「0000000000000000」になる。
16個の0の説明を終了する。
【0046】
再帰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配列に代入されている各々のデーターの最後の文字に「,」記号があったら、「,」記号を削除する。
【0047】
3個のサイズで16byteのstring型で配列を作成する。作成した配列を位置マーク配列と呼ぶ。
位置マーク配列のデーターを代入できる領域の最初の位置に65535を代入する。
位置マーク配列のデーターを代入できる領域の2番目の位置に65534を代入する。
位置マーク配列のデーターを代入できる領域の最後の位置に65533を代入する。
以下に、位置マーク配列に代入した3種類の数値の説明を行う。
位置マーク配列に代入した3種類の数値の事をマーク数値と呼ぶ。
位置マーク配列に代入した3種類の数値の65535と65534と65533は、マーク数値として使用する為に位置を示すデーターを65532で割って、倍数と余りを算出した事で、位置を示すデーターとして全く使用する事のない数値となっている数値である。どこの処理であるかを示すと、倍数計算分岐で位置セパレート1配列のデーターが65533以上の場合以下の処理である。2進数で16bitだと、1111111111111111が最大値となる。1111111111111111を10進数に変換すると65535である。
これで、位置マーク配列に代入した3種類の数値の説明を終了する。
【0048】
位置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までの数値なので位置や個数を表す数値で使用されている可能性が高い為に使用できないのである。
実施例で使用しているコンパイラには、バイナリー形式でファイルを作成する場合に改行マークを代入してファイルを作成する機能が無いが、テスキト形式でファイルを作成する場合は、改行マークを代入してファイルに記録する機能がある。テキスト形式で改行マークを代入する方法でファイルを作成して、作成したファイルをバイナリー形式で読み込んで、読み込んだデーターをバイナリー形式で保存する事でも、改行マークを代入したバイナリー形式のファイルが作成できるが、このようなファイル操作を複雑に行う処理を行う場合は、「|」記号を使用する処理をする必要が無くなる。「|」記号やマーク数値を使用して改行マークを代入する処理をファイル操作などの他の方法で処理したとしても、簡単な処理の変更でしかないし、この部分は本発明の特許の範囲外の処理であるから、実施例と違う処理を行う事で本発明と違う技術である事を主張しても何らの意味を持たないものであり、本発明のマルメ圧縮ソフトウェアを記録した記録媒体である事を明記する。尚、本発明の実施例では、「|」記号をマーク数値に変更してバイナリー形式でファイルに保存している。「|」記号のままファイルに保存するものではない。
ナンバー配列作成工程の説明を終了する。
【0049】
圧縮対象配列と同じサイズで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繰り返し処理を終了する。
【0050】
10進位置1配列の配列サイズの調整を行う。
10進個数1配列の配列サイズの調整を行う。
10進位置1配列と同じサイズで16byteのstring型で配列を作成する。作成した配列を2進位置1配列と呼ぶ。
10進位置1配列と同じサイズで16byteのstring型の配列を作成する。作成した配列を2進個数1配列と呼ぶ。
以下に、繰り返し処理を行う。この繰り返し処理を非記号2進変換1繰り返し処理と呼ぶ。
10進位置1配列の最初から最後までのデーターを16byteずつ検査して、10進位置1配列のデーターが3種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合と、10進位置1配列のデーターが3種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合とに分岐する。この分岐を記号1分岐と呼ぶ。
記号1分岐で、10進位置1配列のデーターが3種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、以下の処理を行う。
10進位置1配列のデーターを、2進位置1配列の末尾に代入する。
記号1分岐で、10進位置1配列のデーターが3種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、以下の処理を行う。
10進位置1配列のデーターを2進数に変換して2進位置1配列の末尾に代入する。
記号1分岐を終了する。
10進位置1配列の最後までのデーターを検査し終わったら、非記号2進変換1繰り返し処理を終了する。
以下に、繰り返し処理を行う。この繰り返し処理を非記号2進変換2繰り返し処理と呼ぶ。
10進個数1配列の最初から最後までのデーターを16byteずつ検査して、10進個数1配列のデーターが3種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合と、10進位置1配列のデーターが3種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合とに分岐する。この分岐を記号2分岐と呼ぶ。
記号2分岐で、10進個数1配列のデーターが3種類の記号の「|」記号と「/」記号と「?」記号のどれかに一致する場合は、以下の処理を行う。
10進個数1配列のデーターを、2進個数1配列の末尾に代入する。
記号2分岐で、10進個数1配列のデーターが3種類の記号の「|」記号と「/」と記号と「?」記号のどれにも一致しない場合は、以下の処理を行う。
10進個数1配列のデーターを2進数に変換して2進個数1配列の末尾に代入する。
記号2分岐を終了する。
10進個数1配列の最後の位置まで処理が完了したら、非記号2進変換2繰り返し処理を終了する。
【0051】
2進位置1配列のサイズで16byteのstring型の配列を作成する。作成した配列を2進位置2配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を桁数調整1繰り返し処理と呼ぶ。
2進位置1配列のインデックスを使用して16byteずつ検査して、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合と2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号3分岐と呼ぶ。
記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合は、以下の処理を行う。
2進位置1配列のデーターを、2進位置2配列の末尾に代入する。
記号3分岐で、2進位置1配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合は、以下の分岐処理を行う。この分岐を記号ネスト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繰り返し処理を終了する。
【0052】
圧縮対象配列のサイズで8byteのstring型の配列を作成する。作成した配列を記号バイト位置配列と呼ぶ。
以下に、繰り返し処理を行う。この繰り返し処理を記号バイト代入1繰り返し処理と呼ぶ。
2進位置2配列の最初から最後までのデーターを16byteずつ調べて2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合と2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号5分岐と呼ぶ。
記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合は、以下の処理を行う。
2進位置2配列のデーターを記号バイト位置配列の末尾に代入する。
記号5分岐で、2進位置2配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合は、以下の処理を行う。
文字列操作関数を使用して、前方の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繰り返し処理を終了する。
記号バイト位置配列の配列サイズ調整を行う。
記号バイト個数配列の配列サイズ調整を行う。
【0053】
以下の処理を位置マーク2進数変換繰り返し処理と呼ぶ。
位置マーク配列の最初から最後までの全てのデーターを16byteずつ取得して、取得したデーターを2進数に変換して、2進数に変換したデーターを位置マーク配列のデーターを取得した位置に上書きで16byteずつ代入する。
位置マーク配列の最後の位置のデーターの処理が終わったら、位置マーク2進数変換繰り返し処理を終了する。
以下に、位置マーク配列のデーターについての説明をする。
位置マーク配列のデーターは、全て大きな数値なので、2進数に変換した場合に全てのデーターが16桁になるので、先頭位置に0を代入して16桁に調整を行う処理の桁数調整処理を行う必要が無い。
位置マーク配列のデーターについての説明を終了する。
【0054】
3個のサイズで1byteのstring型の配列を作成する。作成した配列を記号文字位置配列と呼ぶ。
記号文字位置配列の最初の位置に「|」記号を代入して、2番目の位置に「/」記号を代入して、最後の位置に「?」記号を代入する。
圧縮対象配列のサイズで8bitのstring型の配列を作成する。作成した配列をバイト位置配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を記号変換1繰り返し処理と呼ぶ。
記号バイト位置配列の最初の位置から最後の位置までのデーターを8byteずつ検査して、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合と記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合とに分岐する。この分岐を記号7分岐と呼ぶ。
記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれかに該当する場合は、以下の処理を行う。
記号バイト位置配列のデーターが「|」記号の場合と記号バイト位置配列のデーターが「/」記号の場合と記号バイト位置配列のデーターが「?」記号の場合に分岐する。この分岐をマーク1分岐と呼ぶ。
マーク1分岐で、記号バイト位置配列のデーターが「|」記号の場合は、以下の処理を行う。
位置マーク配列の最初の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐で、記号バイト位置配列のデーターが「/」記号の場合は、以下の処理を行う。
位置マーク配列の2番目の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐で、記号バイト位置配列のデーターが「?」記号の場合は、以下の処理を行う。
位置マーク配列の最後の位置に代入されているデーターの先頭から8文字を取得してバイト位置配列の末尾に代入して、次に、後方の8文字を取得してバイト位置配列の末尾に代入する。
マーク1分岐を終了する。
記号7分岐で、記号バイト位置配列のデーターが「|」記号と「/」記号と「?」記号の3種類の記号のどれにも該当しない場合は、以下の処理を行う。
記号バイト位置配列のデーターをバイト位置配列の末尾に代入する。
記号7分岐を終了する。
記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換1繰り返し処理を終了する。
圧縮対象配列のサイズで8byteのstring型の配列を作成する。作成した配列をバイト個数配列と呼ぶ。
以下に繰り返し処理を行う。この繰り返し処理を記号変換2繰り返し処理と呼ぶ。
記号バイト個数配列の最初の位置から最後の位置までのデーターを8byteずつ検査して、記号バイト個数配列のデーターが「|」記号に該当する場合と記号バイト個数配列のデーターが「|」記号に該当しない場合とに分岐する。この分岐を記号8分岐と呼ぶ。
記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当する場合は、以下の処理を行う。
個数マーク変数に代入されているデーターの先頭から8文字を取得してバイト個数配列の末尾に代入して、次に、後方の8文字を取得してバイト個数配列の末尾に代入する。
記号8分岐で、記号バイト個数配列のデーターが「|」記号に該当しない場合は、以下の処理を行う。記号バイト個数配列のデーターをバイト個数配列の末尾に代入する。
記号8分岐を終了する。
記号バイト位置配列の最初から最後までのデーターを検査し終わったら、記号変換2繰り返し処理を終了する。
バイト位置配列の配列サイズ調整を行う。
バイト個数配列の配列サイズ調整を行う。
【0055】
バイト位置配列の配列サイズと同じサイズで、8bitのstring型の配列を作成する。作成した配列を位置10進数配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を10進数変換1処理と呼ぶ。
バイト位置配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを位置10進数配列の末尾に順番に8bitずつ代入する。バイト位置配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換1処理を終了する。
バイト個数配列の配列サイズと同じサイズで、8bitのstring型の配列を作成する。作成した配列を個数10進数配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を10進数変換2処理と呼ぶ。
バイト個数配列の最初から最後までの全てのデーターを8byteずつ取得して、取得したデーターを10進数に変換して、10進数に変換したデーターを個数10進数配列の末尾に順番に8bitずつ代入する。バイト個数配列の最後の位置に代入されたデーターの処理を終了したら、10進数変換2処理を終了する。
【0056】
6個のサイズで8bitのstring型の配列を作成する。保存位置マーク配列と呼ぶ。
以下に繰り返し処理を行う。以下の繰り返し処理を保存配列作成1繰り返し処理と呼ぶ。
位置マーク配列の位置を示すインデックスで位置マーク配列のデーターを16byteずつ取得して、文字列操作関数を使用して取得したデーターの先頭から8文字のデーターを取得して保存位置マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存位置マーク配列の末尾に代入する。
位置マーク配列の最後の位置のデーターを処理するまで保存配列作成1繰り返し処理を行い、保存配列作成1繰り返し処理を終了する。
2個のサイズで8bitのstring型の変数を作成する。保存個数マーク配列と呼ぶ。
以下の処理を保存配列作成2処理と呼ぶ。
個数マーク変数に代入された16byteの2進数のデーターを文字列操作関数を使用して先頭から8文字を取得して保存個数マーク配列の末尾に代入して、残りの後方の8文字のデーターを取得して保存個数マーク配列の末尾に代入する。
保存配列作成2処理を終了する。
【0057】
以下に繰り返し処理を行う。以下の繰り返し処理を進数変換1繰り返し処理と呼ぶ。
保存位置マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存位置マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入する。保存位置マーク配列の最後の位置まで処理を行ったら、進数変換1繰り返し処理を終了する。
以下に繰り返し処理を行う。以下の繰り返し処理を進数変換2繰り返し処理と呼ぶ。
保存個数マーク配列の最初の位置から最後の位置までに代入されたデーターを8byteずつ取得して、取得したデーターを10進数に変換して、保存個数マーク配列のデーターを取得した位置に10進数に変換したデーターを上書きで代入する。保存個数マーク配列の最後の位置まで処理を行ったら、進数変換2繰り返し処理を終了する。
【0058】
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進数を作成して、圧縮データーサイズ変数に上書きで代入する。
【0059】
以下に、文字サイズと位置サイズと個数サイズと圧縮対象ファイルサイズと圧縮データーサイズの説明をする。
文字サイズと位置サイズと個数サイズは、各々を4byteで保存すると言う規則で保存する事とする。また、圧縮対象ファイルサイズと圧縮データーサイズは、各々を8byteで保存すると言う規則で保存する事とする。
文字サイズと位置サイズと個数サイズと圧縮対象ファイルサイズと圧縮データーサイズの説明を終わる。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を文字サイズ10進配列と呼ぶ。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を位置サイズ10進配列と呼ぶ。
4個のサイズでstring型の8bitの配列を作成する。この作成した配列を個数サイズ10進配列と呼ぶ。
8個のサイズでstring型の8bitの配列を作成する。この作成した配列を圧縮対象サイズ10進配列と呼ぶ。
8個のサイズでstring型の8bitの配列を作成する。この作成した配列を圧縮データーサイズ10進配列と呼ぶ。
【0060】
以下の繰り返し処理をバイト代入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繰り返し処理を終了する。
【0061】
以下の繰り返し処理を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繰り返し処理を終わる。
【0062】
圧縮ファイル作成の規則の説明をする。
(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)の順番に保存して作成するという一定の規則で圧縮ファイルを作成する。圧縮ファイルが一定の規則で作成されているので、この順番で読み込んで圧縮ファイルを圧縮されていない元のファイルの状態に戻すと言う展開処理を行う事とする。
圧縮ファイル作成の規則の説明を終わる。
【0063】
保存位置マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
位置サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
位置10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
保存個数マーク配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
個数サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
個数10進数配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
文字サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
文字2配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮対象サイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮データーサイズ10進配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
圧縮データー配列の最初から最後までのデーターを1byteずつバイナリー形式でデーターをファイルの末尾に記録する。
任意のファイル名でファイルを保存する。実施例では、Runlength.ykmと言う名称で圧縮ファイルを保存した。
【0064】
圧縮データーを図符号Gの圧縮されたファイルのヘッダー無の内容を表示するリッチテキストボックスに表示する。
圧縮対象配列の配列サイズを取得して図符号Hの圧縮対象ファイルのサイズを表示するテキストボックスにサイズを表示する。
Runlength.ykmと言う名称のファイルのサイズを取得して、図符号Jの圧縮ファイルのサイズを表示するテキストボックスに表示する。
【0065】
次に、ステップ102の「図符号Nのデーター表示 1の画面を表示するボタンをクリックする」に進む。ステップ102は、人為的な手動による操作または入力処理工程である。
図符号Nのデーター表示 1の画面を表示するボタンを図符号Dのマウスでクリックすると
図4の画面が表示される。
【0066】
次に、ステップ103の「
図4のデーター表示 1の画面を表示して辞書データーを表示する」に進む。ステップ103は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
図4の画面が表示された後に、自動的に以下の処理が行われる。
文字2配列のデーターを図符号Tの圧縮した文字表示欄に表示する。
位置3配列のデーターを図符号Uの圧縮した位置表示欄に表示する。
個数3配列のデーターを図符号Vの圧縮した文字の個数表示欄に表示する。
以上で圧縮工程を終了する。
【0067】
次に、ステップ104の「圧縮ファイルを選択して図符号Qの展開開始ボタンをクリックして展開工程をスタートさせる」に進む。ステップ104は、人為的な手動による操作または入力処理工程である。ステップ104からは、展開工程の処理である。
図符号Rの展開ファイル指定用参照ボタンを図符号Dのマウスでクリックしてハードディスクの中を参照して、圧縮ファイルのRunlength.ykmと言う名称のファイルを図符号Dのマウスで選択する方法か、または、図符号Cのキーボードで圧縮ファイルのRunlength.ykmと言う名称のファイルを入力して指定する方法のどちらかの方法で圧縮ファイルを指定する。図符号Qの展開開始ボタンをマウスでクリックして展開工程をスタートさせる。
【0068】
次に、ステップ105の「圧縮データーと辞書データーで元のファイルに戻す 元のファイルの内容を表示する」に進む。ステップ105は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
辞書データーの説明を行う。
辞書データーとは、圧縮した文字と位置データーと個数データーの事である。圧縮した時の配列の名称で言うと、文字2配列や位置2配列や個数2配列の事であり、各々の配列に代入されたデーターの事である。展開工程では、辞書データーと呼んでいる文字と位置データーと個数データーの3種類の配列を圧縮工程とは、違う別の名称で呼ぶ事とする。
辞書データーの説明を終わる。
ファイルの読み込み規則の説明を行う。
段落〔0062〕の記述通りに圧縮ファイルが作られているので、展開時は、段落〔0062〕の記述の順番に読み込んで処理する事とする。
ファイルの読み込み規則の説明を終了する。
【0069】
圧縮ファイルを1byteずつ読み込んで全て読み込む事が可能なサイズで1byteのstring型で配列を作成する。作成した配列をD圧縮ファイル配列と呼ぶ。圧縮ファイルをバイナリー形式で開いて1byteずつ最初から最後まで全てのデーターを読み込んでD圧縮ファイル配列の最初の位置から最後の位置までに1byteずつ代入する。
64bitの型で変数を作成する。作成した変数を読込位置変数と呼ぶ。読込位置変数に0を代入する。
64bitの型で変数を作成する。作成した変数を読込量変数と呼ぶ。読込量変数に6を代入する。
64bitの型で変数を作成する。作成した変数を読込終端変数と呼ぶ。読込終端変数に6を代入する。
6個のサイズで1byteのstring型で配列を作成する。作成した配列をD位置マーク1配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の位置から読込量変数の数値までのデーターを1byteずつ読み込んで、1byteずつD位置マーク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進配列のデーターの説明を終了する。
【0070】
以下に注目配列と注目配列+1と注目配列-1の説明を行う。
配列の位置を示すインデックスでデーターを取得して、取得したデーターが格納されていた配列の位置を注目配列とする。注目配列のインデックスに1加算したインデックスで示す配列の位置を、注目配列+1と呼ぶ事とする。また、注目配列のインデックスに2加算したインデックスで示す配列の位置を、注目配列+2と呼ぶ事とする。また、注目配列のインデックスに3加算したインデックスで示す配列の位置を、注目配列+3と呼ぶ事とする。また、注目配列のインデックスに1を減算したインデックスで示す配列の位置を、注目配列-1と呼ぶ事とする。また、注目配列のインデックスに2減算したインデックスで注目配列が在る配列の位置を、注目配列-2と呼ぶ事とする。また、注目配列のインデックスに3を減算したインデックスで示す配列の位置を、注目配列-3と呼ぶ事とする。注目配列と注目配列+1等は、判断用検査技術を使用した場合の一つの表現である。表現が全く違う表現であっても、内容が1個の配列から配列のインデックスを指定する方法で幾つものデーターを取得している場合は、判断用検査技術を使用しているもの以外の何物でもない事を明言する。
注目配列と注目配列+1と注目配列-1の説明を終了する。
【0071】
以下に、インデックスの説明を行う。
配列のインデックスの初期値として何も書かれていない場合は、配列のインデックスの最初の数値は、0である。また、配列のインデックスは、配列の最初の位置を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繰り返し処理を終了する。
【0072】
3個のサイズでstring型の16bitで配列を作成する。作成した配列をD位置マーク10進配列と呼ぶ。以下の繰り返し処理を10進数変換1繰り返し処理と呼ぶ。
位置マーク連結配列の最初のデーター16byteを取得して、取得したデーターを10進数に変換してD位置マーク10進配列の最初の位置に代入する。
位置マーク連結配列の2番目のデーター16byteを取得して、取得したデーターを10進数に変換してD位置マーク10進配列の2番目の位置に代入する。
位置マーク連結配列の最後のデーター16byteを取得して、取得したデーターを10進数に変換してD位置マーク10進配列の最後の位置に代入する。
10進数変換1繰り返し処理を終了する。
【0073】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をD位置サイズ配列と呼ぶ。
D位置サイズ配列に、D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ取得して、取得したデーターを1byteずつD位置サイズ配列の最初の位置から最後の位置までに代入する。
4個のサイズで8byteのstring型の配列を作成する。作成した配列をD位置サイズ2進配列と呼ぶ。
D位置サイズ配列の最初の位置のデーターを1byte取得して2進数に変換して、D位置サイズ2進配列の最初の位置に代入する。
D位置サイズ配列の2番目の位置のデーターを1byte取得して2進数に変換して、D位置サイズ2進配列の2番目の位置に代入する。
D位置サイズ配列の3番目の位置のデーターを1byte取得して2進数に変換して、D位置サイズ2進配列の3番目の位置に代入する。
D位置サイズ配列の最後の位置のデーターを1byte取得して2進数に変換して、D位置サイズ2進配列の最後の位置に代入する。
以下の繰り返し処理を桁調整2繰り返し処理と呼ぶ。
D位置サイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用してデーターの文字数を調べて、取得したデーターの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト2分岐と呼ぶ。
バイト2分岐で、D位置サイズ2進配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
D位置サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したD位置サイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト2分岐で、D位置サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
これでバイト2分岐を終了する。
桁調整2繰り返し処理の先頭に戻って、処理を繰り返す。
D位置サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整2繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をD位置サイズ10進変数と呼ぶ。
D位置サイズ2進配列の最初の位置の8byteのデーターの後方に、2番目の位置の8byteのデーター、その後方に3番目の位置の8byteのデーター、その後方に最後の位置の8byteのデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、D位置サイズ10進変数に代入する。
【0074】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とD位置サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
D位置サイズ10進変数に代入された数値をサイズとして1byteのstring型の配列を作成する。作成した配列をD位置1配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD位置1配列の最初から最後の位置までに1byteずつ代入する。
【0075】
D位置1配列の配列サイズの半分のサイズで1byteのstring型の配列を作成する。作成した配列をD位置2進配列と呼ぶ。
64bitの型で変数を作成する。作成した変数をインデ2変数と呼ぶ。インデ2変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ3変数と呼ぶ。インデ3変数に0を代入する。
64bitの型で変数を作成する。作成した変数をインデ4変数と呼ぶ。インデ4変数に0を代入する。
2個のサイズでstring型の1byteの配列を作成する。作成した配列を2進バイト仮配列と呼ぶ。
string型の1byteの変数を作成する。作成した変数を2進連結仮変数と呼ぶ。
以下の繰り返し処理を2進変換連結1繰り返し処理と呼ぶ。
インデ2変数のデーターがD位置1配列の配列サイズから2を減算した数値になるまで以下の処理を繰り返す。
D位置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変数のデーターをD位置1配列のインデックスとして使用してD位置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変数のデーターをD位置2進配列のインデックスとして使用してD位置2進配列に代入する。
インデ3変数のデーターに1を加算する。
2進変換連結1繰り返し処理の先頭に戻って処理を繰り返す。インデ2変数のデーターがD位置1配列のサイズから2減算した数値になるまで処理を繰り返して、インデ2変数のデーターがD位置1配列のサイズから2減算した数値になったら、2進変換連結1繰り返し処理を終了する。
【0076】
D位置1配列のデーターを全て削除して、D位置1配列のサイズをD位置2進配列のサイズに変更する。
以下の繰り返し処理を10進数変換2繰り返し処理と呼ぶ。
D位置2進配列の最初から最後の位置までの2進数で表されたデーターを16byteずつ取得して、10進数に変換してD位置1配列の末尾に2byteずつ代入する。D位置2進配列の次のデーターの処理に進めて、10進数変換2繰り返し処理の先頭に戻って処理を繰り返す。D位置2進配列の最後のデーターの処理が終わったら、10進数変換2繰り返し処理を終了する。
【0077】
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変数に代入されたデーターの文字コードを取得して代入する。
【0078】
D圧縮ファイル配列のサイズで16bitのstring型で配列を作成する。作成した配列をD位置2配列と呼ぶ。
インデ2変数に0を上書きで代入する。
以下の繰り返し処理を記号入力1繰り返し処理と呼ぶ。
D位置1配列の最初から最後までのデーターを16bitずつ取得して分岐する。この分岐を入力条件1分岐と呼ぶ。
入力条件1分岐で、D位置1配列のデーターがD位置マーク10進配列の最初の位置のデーターと一致する場合とD位置1配列のデーターがD位置マーク10進配列の2番目の位置のデーターと一致する場合とD位置1配列のデーターがD位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれかに該当する場合は、分岐する。この分岐を個別1分岐と呼ぶ。
個別1分岐で、D位置1配列のデーターがD位置マーク10進配列の最初の位置のデーターと一致する場合は、インデ2変数の数値をインデックスとして使用してD位置2配列に文字記号1変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐で、D位置1配列のデーターがD位置マーク10進配列の2番目の位置のデーターと一致する場合は、インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号2変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐で、D位置1配列のデーターがD位置マーク10進配列の最後の位置のデーターと一致する場合は、インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号4変数のデーターを代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
個別1分岐を終了する。
入力条件1分岐で、D位置1配列のデーターがD位置マーク10進配列の最初の位置のデーターと一致する場合とD位置1配列のデーターがD位置マーク10進配列の2番目の位置のデーターと一致する場合とD位置1配列のデーターがD位置マーク10進配列の最後の位置のデーターと一致する場合の3種類の場合の内のどれにも該当しない場合は、D位置1配列のデーターをインデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に代入する。インデ2変数の数値に1を加算する。インデ2変数の数値をD位置2配列のインデックスとして使用してD位置2配列に文字記号3変数のデーターを代入する。インデ2変数の数値に1を加算する。
入力条件1分岐を終了する。
D位置1配列の次のデーターを取得して記号入力1繰り返し処理の先頭に戻って、繰り返し処理を行い、D位置1配列の最後の位置の処理が終わったら、記号入力1繰り返し処理を終了する。
D位置2配列のサイズ調整を行う。
【0079】
以下の繰り返し処理を記号削除1繰り返し処理と呼ぶ。
以下に、記号検査1分岐の説明を行う。
記号検査1分岐は、IF条件制御処理である。
記号検査1分岐の説明の説明を終わる。
D位置2配列の最初から最後までのデーターを配列のインデックスを使用して16bitずつ取得して取得した配列の位置を注目配列とする。以下に、分岐処理を行う。この分岐を記号検査1分岐と呼ぶ。記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがD位置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条件のどれかに該当する場合は、D位置2配列の注目配列のデーターを削除する。
記号検査1分岐で、注目配列のインデックスが0より大きい数値である場合と注目配列+1のインデックスがD位置2配列のサイズに満たない数値である場合の両方に該当しない場合は、処理を行わない。
記号確認1分岐を終了する。
記号検査1分岐を終了する。
注目配列のインデックスに1を加算して記号削除1繰り返し処理の先頭に戻って、処理を続行する。
注目配列のインデックスがD位置2配列の最後の位置になるまで処理を繰り返して、記号削除1繰り返し処理を終了する。
【0080】
D位置2配列と同じサイズで16bitのstring型で配列を作成する。この作成した配列を仮D位置2配列と呼ぶ。
以下の繰り返し処理をNull消去2繰り返し処理と呼ぶ。
D位置2配列の先頭から最後までのデーターを2byteずつ調べて、データーが入力されている配列のデーターだけを取得してを仮D位置2配列の末尾に代入する。Nullデーター配列の最後のデーターの処理が終わったら、このNull消去2繰り返し処理を終了する。
D位置2配列に代入されているデーターを全て削除して、仮D位置2配列のデーターをD位置2配列にコピーする。
【0081】
8bitの型で変数を作成する。この作成した変数をバトン1変数と呼ぶ。バトン1変数に0を入力する。
8bitの型で変数を作成する。この作成した変数をバトン2変数と呼ぶ。バトン2変数に0を入力する。
D位置2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をD位置仮配列と呼ぶ。
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を配列復元1繰り返し処理と呼ぶ。
D位置2配列の最初から最後までのデーターを2byteずつ取得して分岐する。この分岐を記号判断1分岐と呼ぶ。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列のデーターを取得して、取得したD位置仮配列のデーターの後方にD位置2配列のデーターを連結して作成したデーターをインデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列に上書きで代入する。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列にD位置2配列のデーターを上書きで代入する。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列にD位置2配列のデーターを上書きで代入する。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列にD位置2配列のデーターを上書きで代入する。
以下に、分岐条件の文言の説明を行う。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第5条件と呼ぶ。
記号判断1分岐で、D位置2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第6条件と呼ぶ。
分岐条件の文言の説明を終了する。
記号判断1分岐で、D位置2配列のデーターが第5条件か第6条件のいずれかに該当する場合は、インデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列のデーターを取得して、取得したD位置仮配列のデーターの後方にD位置2配列のデーターを連結して作成したデーターをインデ2変数をD位置仮配列のインデックスとして使用してD位置仮配列に上書きで代入する。
記号判断1分岐で、D位置2配列のデーターがその他の場合は、処理を行わない。
記号判断1分岐を終了する。
D位置2配列のデーターを処理する位置を一つずらして、配列復元1繰り返し処理の先頭に戻って処理を続行して、D位置2配列の最後の位置のデーターの処理を完了したら、配列復元1繰り返し処理を終了する。
D位置2配列のデーターを全て削除して、D位置仮配列の全てのデーターをD位置2配列にコピーする。
【0082】
以下の処理をボトムチェック1繰り返し処理と呼ぶ。
D位置2配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無1分岐と呼ぶ。
データー有無1分岐で、文字列操作関数を使用して、D位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト1分岐と呼ぶ。
有無ネスト1分岐で、文字列操作関数を使用して、D位置2配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してD位置2配列のデーターを取得したD位置2配列の位置に上書きで代入する。
有無ネスト1分岐で、文字列操作関数を使用して、D位置2配列から取得したデーターの末尾に「,」記号が無かった場合は、D位置2配列のデーターを取得したD位置2配列の位置に上書きで代入する。
有無ネスト1分岐を終了する。
データー有無1分岐で、文字列操作関数を使用して、D位置2配列にデーターが代入されているかどうかを確認し、データーが代入されていない場合は、何も行わない。
データー有無1分岐を終了する。
D位置2配列のインデックスに1を加算して、ボトムチェック1繰り返し処理の先頭に戻って、処理を続行する。
D位置2配列の最後の位置のデーターの処理が終わったら、ボトムチェック1繰り返し処理を終了する。
【0083】
以下の繰り返し処理をフロントチェック1繰り返し処理と呼ぶ。
D位置2配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。
この分岐をデーター有無2分岐と呼ぶ。
データー有無2分岐で、文字列操作関数を使用して、D位置2配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この処理を有無ネスト2分岐と呼ぶ。
有無ネスト2分岐で、文字列操作関数を使用して、D位置2配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してD位置2配列のデーターを取得したD位置2配列の位置に上書きで代入する。
有無ネスト2分岐で、文字列操作関数を使用して、D位置2配列から取得したデーターの先頭に「|」記号が無い場合は、D位置2配列のデーターを取得したD位置2配列の位置に上書きで代入する。
有無ネスト2分岐を終了する。
データー有無2分岐で、文字列操作関数を使用して、D位置2配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無2分岐を終了する。
D位置2配列のインデックスに1を加算して、フロントチェック1繰り返し処理の先頭に戻って、処理を続行する。
D位置2配列の最後の位置のデーターの処理が終わったら、フロントチェック1繰り返し処理を終了する。
D位置2配列のサイズ調整を行う。
【0084】
D位置2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をD位置3配列と呼ぶ。
2個のサイズで16byteのstring型の配列を作成する。この配列をスラッシュ分割配列と呼ぶ。
インデ2変数に上書きで0を代入する。
64bitの型で変数を作成する。作成した変数をリミット1変数と呼ぶ。D位置2配列のサイズをリミット1変数に代入する。
64bitの型で変数を作成する。作成した変数をリミット2変数と呼ぶ。
64bitの型で変数を作成する。作成した変数をゲット数値変数と呼ぶ。
64bitの型で変数を作成する。作成した変数を確認変数と呼ぶ。
2048byteのstring型の変数を作成する。作成した変数を復号変数と呼ぶ。
以下の繰り返し処理を符号復元繰り返し処理と呼ぶ。
インデ2変数の数値をインデックスとして使用してD位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割した場合に分割される数を配列のサイズとして、16byte
のstring型の配列を作成する。作成した配列をカンマ分割配列と呼ぶ。
インデ2変数の数値をインデックスとして使用してD位置2配列のデーターを2048byteずつ取得して、文字列操作関数を使用して「,」記号で分割して、カンマ分割配列に16byteずつ代入する。
カンマ分割配列のサイズをリミット2変数に代入する。
以下の繰り返し処理を分割A検査繰り返し処理と呼ぶ。
インデ3変数に上書きで0を代入する。
インデ3変数をインデックスとして使用してカンマ分割配列のデーターを取得する。以下に、分岐する。この分岐をカンマ分岐処理と呼ぶ。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号が有るかどうかを検査して「/」記号が有る場合は、以下の処理を行う。
スラッシュ分割配列にカンマ分割配列のデーターを「/」記号で分割して16byteずつ上書きで代入する。
カンマ分割配列の最初の位置のデーターを確認変数に上書きで代入する。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
D位置3配列のインデックスとしてインデ2変数を使用してD位置3配列のデーターを取得して、取得したD位置3配列のデーターの後方に復号変数を連結して、その後方に「,」記号を連結したデーターを作成して、D位置3配列のインデックスとしてインデ2変数を使用してD位置3配列のデーターを取得して、取得したデーターに連結して作成したデーターをD位置3配列のインデックスとしてインデ2変数を使用してD位置3配列に上書きで代入する。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「/」記号と「?」記号が有るかどうかを検査して「/」記号と「?」記号の両方の記号が無い場合は、分岐する。この分岐を記号無分岐処理と呼ぶ。
記号無分岐処理で、確認変数が0の場合は、以下の処理を行う。
D位置3配列のインデックスとしてインデ2変数を使用してD位置3配列のデーターを取得して、取得したD位置3配列のデーターの後方に「,」記号を連結したデーターを作成して、その後方に、カンマ分割配列のデーターを連結して作成したデーターをD位置3配列のインデックスとしてインデ2変数を使用してD位置3配列に上書きで代入する。
記号無分岐処理で、確認変数が0より大きい場合は、以下の処理を行う。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
D位置3配列のインデックスとしてインデ2変数を使用してD位置3配列のデーターを取得して、取得したD位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成してD位置3配列のインデックスとしてインデ2変数を使用してD位置3配列に連結して作成したデーターを上書きで代入する。
記号無分岐処理を終了する。
カンマ分岐処理で、文字列操作関数を使用してカンマ分割配列のデーターの中に「?」記号が有るかどうかを検査して「?」記号が有る場合は、分岐する。この分岐をクエスチョン分岐と呼ぶ。
クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が有る場合は、以下の処理を行う。
確認変数に1を加算する。
文字列操作関数を使用して「?」記号の後方に記述されている数値を全て取得して、ゲット数値変数に上書きで代入する。
カンマ分割配列の最初の位置のデーターを65532倍した数値とカンマ分割配列の最後の位置のデーターを加算して復号変数に上書きで代入する。
D位置3配列のインデックスとしてインデ2変数を使用してD位置3配列のデーターを取得して、取得したD位置3配列のデーターの後方に復号変数、その後方に「,」記号を連結したデーターを作成して、連結して作成したデーターをD位置3配列のインデックスとしてインデ2変数を使用してD位置3配列に上書きで代入する。
クエスチョン分岐で、カンマ分割配列のデーターの中に「?」記号が無い場合は、何も行わない。
クエスチョン分岐を終了する。
カンマ分岐処理を終了する。
インデ3変数に1を加算する。
分割A検査繰り返し処理の先頭に戻って、繰り返し処理を続行する。インデ3変数のデーターが、リミット2変数のデーターになるまで分割A検査繰り返し処理を行って、分割A検査繰り返し処理を終了する。
インデ2変数に1を加算する。
確認変数に上書きで0を代入する。
符号復元繰り返し処理の先頭に戻って、繰り返し処理を続行する。インデ2変数のデーターが、リミット1変数のデーターなるまで符号復元繰り返し処理を行って、符号復元繰り返し処理を終了する。
【0085】
D位置3配列のサイズを調整する。
D位置3配列のサイズで、2048byteのstring型の配列を作成する。作成した配列をD位置4配列と呼ぶ。
D位置3配列の全てのデーターをD位置4配列にコピーする。
【0086】
以下の処理をボトムチェック2繰り返し処理と呼ぶ。
D位置4配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無3分岐と呼ぶ。
データー有無3分岐で、文字列操作関数を使用して、D位置4配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト2分岐と呼ぶ。
有無ネスト2分岐で、文字列操作関数を使用して、D位置4配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してD位置4配列のデーターを取得したD位置4配列の位置に上書きで代入する。
有無ネスト2分岐で、文字列操作関数を使用して、D位置4配列から取得したデーターの末尾に「,」記号が無かった場合は、D位置4配列のデーターを取得したD位置4配列の位置に上書きで代入する。
有無ネスト2分岐を終了する。
データー有無3分岐で、文字列操作関数を使用して、D位置4配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無3分岐を終了する。
D位置4配列のインデックスに1を加算して、ボトムチェック2繰り返し処理の先頭に戻って、処理を続行する。
D位置4配列の最後の位置のデーターの処理が終わったら、ボトムチェック2繰り返し処理を終了する。
【0087】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と2を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
16bitのstring型で変数を作成する。作成した変数をD個数マーク10進変数と呼ぶ。
2個のサイズで8bitのstring型で配列を作成する。作成した配列を個数マーク1配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを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進数に変換して、D個数マーク10進変数に代入する。
【0088】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をD個数サイズ配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD個数サイズ配列の最初から最後の位置までに1byteずつ代入する。
8byteのstring型で変数を作成する。作成した変数をD個数サイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換3繰り返し処理と呼ぶ。
D個数サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してD個数サイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換3繰り返し処理の最初に戻って処理を続行する。D個数サイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換3繰り返し処理を終了する。
以下の繰り返し処理を桁調整4繰り返し処理と呼ぶ。
D個数サイズ2進配列からインデックスを使用して代入されたデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト6分岐と呼ぶ。
バイト6分岐で、D個数サイズ2進配列のデーターの文字数が8文字に満たない場合は、以下の処理を行う。
D個数サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したD個数サイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト6分岐で、D個数サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト6分岐を終了する。
D個数サイズ2進配列のインデックスに1を加算する。
桁調整4繰り返し処理の最初に戻って処理を繰り返す。
D個数サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整4繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をD個数10進変数と呼ぶ。
D個数サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成したデーターを10進数に変換して、D個数サイズ10進変数に代入する。
【0089】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とD個数サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
D個数サイズ10進変数のデーターをサイズとして1byteのstring型の配列を作成する。作成した配列をD個数1配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD個数1配列の最初から最後の位置までに1byteずつ代入する。
D個数サイズ10進変数のデーターの半分のサイズを配列サイズとして2byteのstring型の配列を作成する。作成した配列をD個数2進配列と呼ぶ。
インデ2変数に0を上書きで代入する。
インデ3変数に0を上書きで代入する。
インデ4変数に0を上書きで代入する。
2個のサイズでstring型の1byteの配列を作成する。作成した配列を2進バイト仮2配列と呼ぶ。
string型の2byteの変数を作成する。作成した変数を2進連結仮2変数と呼ぶ。
以下の繰り返し処理を2進変換連結2繰り返し処理と呼ぶ。
インデ2変数のデーターがD個数1配列の配列サイズから2を減算した数値になるまで以下の処理を繰り返す。
D個数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を加算する。
D個数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変数のデーターをD個数2進配列のインデックスとして使用してD個数2進配列に代入する。
インデ3変数のデーターに1を加算する。
2進変換連結2繰り返し処理の先頭に戻って処理を繰り返す。D個数1配列の最後の位置の一つ手前の位置のデーターを処理するまで繰り返し処理を行い、D個数1配列の最後の位置の一つ手前の位置のデーターを処理し終わったら、2進変換連結2繰り返し処理を終了する。
【0090】
D個数2進配列のサイズで16bitのstring型の配列を作成する。作成した配列をD個数2配列と呼ぶ。
以下の繰り返し処理を10進数変換3繰り返し処理と呼ぶ。
D個数2進配列のインデックスを使用して16byteずつ取得して、10進数に変換してD個数2配列の末尾に16bitずつ代入する。D個数2進配列のインデックスに1を加算する。
10進数変換3繰り返し処理の先頭に戻って処理を繰り返す。
D個数2進配列の最後のデーターの処理が終わったら、10進数変換3繰り返し処理を終了する。
D圧縮ファイル配列のサイズで16bitのstring型の配列を作成する。作成した配列を仮D個数1配列と呼ぶ。
インデ2変数に0を上書きで代入する。
インデ3変数に0を上書きで代入する。
以下に、記号検査2分岐の説明を行う。
記号検査2分岐は、IF条件制御処理である。
記号検査2分岐の説明の説明を終わる。
以下の繰り返し処理を記号入力2繰り返し処理と呼ぶ。
D個数2配列からインデ3変数をインデックスとして使用して、D個数2配列のインデ3変数の位置を注目配列とし、注目配列のデーターを取得して分岐する。以下の分岐を記号検査2分岐と呼ぶ。
記号検査2分岐で、インデ3変数に1を加算した数値がD個数2配列のサイズに満たない場合は、分岐する。この分岐をマーク検査1分岐と呼ぶ。
マーク検査1分岐で、D個数マーク10進変数と注目配列のデーターが一致する場合は、以下の処理を行う。
仮D個数1配列のインデックスとしてインデ2変数を使用して「|」記号を仮D個数1配列に代入する。
インデ2変数に1を加算する。
仮D個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮D個数1配列に代入する。
インデ2変数に1を加算する。
マーク検査1分岐で、D個数マーク10進変数と注目配列のデーターが一致しない場合とD個数マーク10進変数と注目配列+1のデーターが一致しない場合の両方に該当する場合は、以下の処理を行う。
仮D個数1配列のインデックスとしてインデ2変数を使用して仮D個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
仮D個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮D個数1配列に代入する。
インデ2変数に1を加算する。
マーク検査1分岐で、D個数マーク10進変数と注目配列のデーターが一致しない場合とD個数マーク10進変数と注目配列+1のデーターが一致する場合の両方に該当する場合は、以下の処理を行う。
仮D個数1配列のインデックスとしてインデ2変数を使用して仮D個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
マーク検査1分岐を終了する。
記号検査2分岐で、インデ3変数のデーターがD個数2配列のサイズから1を減算した数値に一致する場合は、以下の処理を行う。
仮D個数1配列のインデックスとしてインデ2変数を使用して仮D個数1配列に注目配列のデーターを代入する。
インデ2変数に1を加算する。
仮D個数1配列のインデックスとしてインデ2変数を使用して「,」記号を仮D個数1配列に代入する。
インデ2変数に1を加算する。
記号検査2分岐を終了する。
インデ3変数に1を加算する。
記号入力2繰り返し処理の先頭に戻って処理を繰り返す。インデ3変数のデーターがD個数2配列の最後の位置のデーターを処理する数値になるまで処理を繰り返して、記号入力2繰り返し処理を終了する。
D個数2配列のデーターを全て削除して、仮D個数1配列の全てのデーターをD個数2配列にコピーする。
D個数2配列のサイズ調整を行う。
【0091】
以下に、記号検査3分岐の説明を行う。
記号検査3分岐は、IF条件制御処理である。
記号検査3分岐の説明の説明を終わる。
以下の繰り返し処理を記号削除2繰り返し処理と呼ぶ。
記号削除2繰り返し処理では、D個数2配列の最初から最後までのデーターを16bitずつ取得して処理を行う。D個数2配列からデーターを取得した位置を注目配列とする。
分岐する。この分岐を記号検査3分岐と呼ぶ。
記号検査3分岐で、注目配列を示すインデックスが0より大きい数値である場合には、分岐する。この分岐を記号削除分岐と呼ぶ。
記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当する場合は、D個数2配列の注目配列の位置のデーターを削除する。
記号削除分岐で、注目配列-1が「|」記号と一致する場合と注目配列が「,」記号と一致する場合の両方に該当しない場合は、何も行わない。
記号削除分岐を終了する。
記号検査3分岐で、注目配列を示すインデックスが0と一致する数値の場合には、処理を行わない。
記号検査3分岐を終了する。
注目配列を一つ先に進めて、記号削除2繰り返し処理の先頭に戻って処理を繰り返し行う。D個数2配列の最後の位置を注目配列として処理し終わったら、記号削除2繰り返し処理を終了する。
【0092】
D個数2配列のサイズで16bitのstring型の配列を作成する。作成した配列を仮D個数2配列と呼ぶ。
以下の繰り返し処理をNull消去3繰り返し処理と呼ぶ。
D個数2配列の先頭から最後までのデーターを16bitずつ調べて、データーが入力されている配列のデーターだけを取得してを仮D個数2配列の末尾に代入する。D個数2配列の最後のデーターの処理が終わったら、このNull消去3繰り返し処理を終了する。
D個数2配列のデーターを全て削除して、仮D個数2配列の全てのデーターをD個数2配列にコピーする。
【0093】
バトン1変数に0を上書きで代入する。
バトン2変数に0を上書きで代入する。
D個数2配列のサイズで2048byteのstring型の配列を作成する。作成した配列をD個数3配列と呼ぶ。
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を配列復元2繰り返し処理と呼ぶ。
D個数2配列からインデックスを使用してデーターを2byteずつ取得して分岐する。この分岐を記号判断2分岐と呼ぶ。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、インデ2変数をインデックスとして使用してD個数3配列のデーターを取得して、取得したD個数3配列のデーターの後方にD個数2配列のデーターを連結して作成したデーターをインデ2変数をD個数3配列のインデックスとして使用してD個数3配列に上書きで代入する。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致する場合とバトン1変数が0である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD個数3配列のインデックスとして使用してD個数3配列にD個数2配列のデーターを上書きで代入する。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合は、バトン1変数に0を上書きで代入して、バトン2変数に1を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD個数3配列のインデックスとして使用してD個数3配列にD個数2配列のデーターを上書きで代入する。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致する場合とバトン1変数が1である場合とバトン2変数が1である場合の全てに該当する場合は、バトン1変数に1を上書きで代入して、バトン2変数に0を上書きで代入して、インデ2変数に1を加算して、インデ2変数をD個数3配列のインデックスとして使用してD個数3配列にD個数2配列のデーターを上書きで代入する。
以下に、分岐条件の文言の説明を行う。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が1である場合とバトン2変数が0である場合の全てに該当する場合を第7条件と呼ぶ。
記号判断2分岐で、D個数2配列のデーターが「|」記号と一致しない場合とバトン1変数が0である場合とバトン2変数が1である場合の全てに該当する場合を第8条件と呼ぶ。
分岐条件の文言の説明を終了する。
記号判断2分岐で、D位置2配列のデーターが第7条件か第8条件のいずれかに該当する場合は、Dインデ2変数をD個数3配列のインデックスとして使用してD個数3配列のデーターを取得して、取得したD個数3配列のデーターの後方にD個数2配列のデーターを連結して作成したデーターをインデ2変数をD個数3配列のインデックスとして使用してD個数3配列に上書きで代入する。
記号判断2分岐で、D個数2配列のデーターがその他の場合は、処理を行わない。
記号判断2分岐を終了する。
D個数2配列のインデックスに1を加算して、配列復元2繰り返し処理の先頭に戻って処理を続行して、D個数2配列の最後の位置のデーターの処理を完了したら、配列復元2繰り返し処理を終了する。
【0094】
D個数3配列の配列サイズの調整を行う。
以下の処理をボトムチェック3繰り返し処理と呼ぶ。
D個数3配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。この分岐をデーター有無4分岐と呼ぶ。
データー有無4分岐で、文字列操作関数を使用して、D個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この分岐を有無ネスト3分岐と呼ぶ。
有無ネスト3分岐で、文字列操作関数を使用して、D個数3配列から取得したデーターの末尾に「,」記号が有ったら、「,」記号を削除してD個数3配列のデーターを取得したD個数3配列の位置に上書きで代入する。
有無ネスト3分岐で、文字列操作関数を使用して、D個数3配列から取得したデーターの末尾に「,」記号が無かった場合は、D個数3配列のデーターを取得したD個数3配列の位置に上書きで代入する。
有無ネスト3分岐を終了する。
データー有無4分岐で、文字列操作関数を使用して、D個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無4分岐を終了する。
D個数3配列のインデックスに1を加算して、ボトムチェック3繰り返し処理の先頭に戻って、処理を続行する。
D個数3配列の最後の位置のデーターの処理が終わったら、ボトムチェック3繰り返し処理を終了する。
以下の繰り返し処理をフロントチェック2繰り返し処理と呼ぶ。
D個数3配列のインデックスを使用してデーターを2048byteずつ取得して、分岐する。
この分岐をデーター有無5分岐と呼ぶ。
データー有無5分岐で、文字列操作関数を使用して、D個数3配列にデーターが代入されているかどうかを確認して、データーが代入されている場合は、分岐する。この処理を有無ネスト4分岐と呼ぶ。
有無ネスト4分岐で、文字列操作関数を使用して、D個数3配列から取得したデーターの先頭に「|」記号が有った場合は、「|」記号を削除してD個数3配列のデーターを取得したD個数3配列の位置に上書きで代入する。
有無ネスト4分岐で、文字列操作関数を使用して、D個数3配列から取得したデーターの先頭に「|」記号が無い場合は、D個数3配列のデーターを取得したD個数3配列の位置に上書きで代入する。
有無ネスト4分岐を終了する。
データー有無5分岐で、文字列操作関数を使用して、D個数3配列にデーターが代入されているかどうかを確認して、データーが代入されていない場合は、何も行わない。
データー有無5分岐を終了する。
D個数3配列のインデックスに1を加算して、フロントチェック2繰り返し処理の先頭に戻って、処理を続行する。
D個数3配列の最後の位置のデーターの処理が終わったら、フロントチェック2繰り返し処理を終了する。
D個数3配列の配列サイズ調整を行う。
【0095】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数と4を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
4個のサイズで8bitのstring型の配列を作成する。作成した配列をD文字サイズ配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD文字サイズ配列の最初から最後の位置までに1byteずつ代入する。
8byteのstring型で変数を作成する。作成した変数をD文字サイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換4繰り返し処理と呼ぶ。
D文字サイズ配列のインデックスを使用して8bitのデーターを取得して2進数に変換してD文字サイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換4繰り返し処理の最初に戻って処理を続行する。D文字サイズ配列の最後の位置のデーターの処理が終了したら、2進数変換4繰り返し処理を終了する。
以下の繰り返し処理を桁調整5繰り返し処理と呼ぶ。
D個数サイズ2進配列からインデックスを使用して8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト9分岐と呼ぶ。
バイト9分岐で、D文字サイズ2進配列のデーターの文字数が8文字に満たない場合は、D文字サイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したD文字サイズ2進配列の位置に作成した文字列を上書きで代入する。バイト9分岐で、D文字サイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト9分岐を終了する。
D文字サイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整5繰り返し処理を終了する。
32bitのstring型の変数を作成する。作成した変数をD文字10進変数と呼ぶ。
D文字サイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に最後の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、D文字サイズ10進変数に代入する。
【0096】
D文字サイズ10進変数に代入されたデーターをサイズとして1byteのstring型の配列を作成する。作成した配列をD文字1配列と呼ぶ。
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数とD文字サイズ10進変数を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD文字1配列の最初から最後の位置までに1byteずつ代入する。
【0097】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数に8を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
8個のサイズで1byteのstring型の配列を作成する。作成した配列をD圧縮Fサイズ配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD圧縮Fサイズ配列の最初から最後の位置までに1byteずつ代入する。
64bitのstring型で変数を作成する。作成した変数をD圧縮Fサイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換5繰り返し処理と呼ぶ。
D圧縮Fサイズ配列のインデックスの1byteのデーターを取得して2進数に変換してD圧縮Fサイズ2進配列の末尾に代入する。インデックスに1を加算して2進数変換5繰り返し処理の最初に戻って処理を続行する。D圧縮Fサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換5繰り返し処理を終了する。
以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ。
D圧縮Fサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト10分岐と呼ぶ。
バイト10分岐で、D圧縮Fサイズ2進配列のデーターの文字数が8文字に満たない場合は、D圧縮Fサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したD圧縮Fサイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト10分岐で、D圧縮Fサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト10分岐を終了する。
D圧縮Fサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整6繰り返し処理を終了する。
64bitのstring型の変数を作成する。作成した変数をD圧縮ファイルサイズ10進変数と呼ぶ。
D圧縮Fサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、D圧縮ファイルサイズ10進変数に代入する。
【0098】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数に読込位置変数に8を加算した数値を代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
8個のサイズで1byteのstring型の配列を作成する。作成した配列をD圧縮データーサイズ配列と呼ぶ。
D圧縮ファイル配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD圧縮データーサイズ配列の最初から最後の位置までに1byteずつ代入する。
64bitのstring型で変数を作成する。作成した変数をD圧縮データーサイズ2進変数と呼ぶ。
以下の繰り返し処理を2進数変換6繰り返し処理と呼ぶ。
D圧縮データーサイズ配列のインデックスの1byteのデーターを取得して2進数に変換してD圧縮Fデーター2進配列の末尾に代入する。
インデックスに1を加算して2進数変換6繰り返し処理の最初に戻って処理を続行する。D圧縮データーサイズ配列の最後の位置のインデックスのデーターの処理が終了したら、2進数変換6繰り返し処理を終了する。
以下の繰り返し処理を桁調整6繰り返し処理と呼ぶ。
D圧縮データーサイズ2進配列からインデックスを使用してデーターを8byteずつ取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8文字に満たない場合と8文字の場合の2つに分岐する。この分岐をバイト11分岐と呼ぶ。
バイト11分岐で、D圧縮データーサイズ2進配列のデーターの文字数が8文字に満たない場合は、D圧縮データーサイズ2進配列のデーターの前方に0を連結して合計で8文字になる様に0を連結した文字列を作成して、データーを取得したD圧縮データーサイズ2進配列の位置に作成した文字列を上書きで代入する。
バイト11分岐で、D圧縮データーサイズ2進配列のデーターの文字数が8文字の場合は、何も行わない。
バイト11分岐を終了する。
D圧縮データーサイズ2進配列の最後の位置に代入されたデーターの処理を終了したら、桁調整7繰り返し処理を終了する。
64bitのstring型の変数を作成する。作成した変数をD圧縮データーサイズ10進変数と呼ぶ。
D圧縮データーサイズ配列の最初の位置のデーターを先頭にして、その後方に2番目の位置のデーター、その後方に3番目の位置のデーター、その後方に4番目の位置のデーターという具合に順番に8byteずつの全てのデーターを連結して、連結して作成した2進数の数値を10進数に変換して、D圧縮データーサイズ10進変数に代入する。
【0099】
読込位置変数に読込終端変数のデーターを代入する。
読込終端変数にD圧縮データーサイズ10進変数のサイズを代入する。
読込量変数に読込終端変数から読込位置変数を減算したデーターを代入する。
読込量変数のサイズで1byteのstring型の配列を作成する。作成した配列をD圧縮データー配列と呼ぶ。
以下に、D圧縮データー配列の説明を行う。
D圧縮データー配列に代入されるデーターは、圧縮データーである。
D圧縮データー配列の説明を終了する。
D圧縮データー配列のインデックスとして読込位置変数と読込量変数を使用して、読込位置変数の数値の位置のデーターから読込量変数の数値の位置のデーターまでを1byteずつ読み込んでD圧縮データー配列の最初から最後の位置までに1byteずつ代入する。
【0100】
D圧縮ファイルサイズ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繰り返し処理と呼ぶ。
D位置4配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成する。作成した配列を位置個別配列と呼ぶ。
D個数3配列に代入されているデーターを2048byteずつ取得して文字列操作関数を使用して「,」記号で分割すると16bitずつに分割されるが、分割したデーターを一つずつ全て代入する為に必要なサイズで、16bitのstring型の配列を作成する。作成した配列を個数個別配列と呼ぶ。
位置個別配列のサイズを取得してインデ6変数とインデ7変数の両方の変数に代入する。
インデ3変数に上書きで0を代入する。
インデ4変数に上書きで0を代入する。
以下に繰り返し処理を行う。以下の繰り返し処理を展開ネスト1繰り返し処理と呼ぶ。
分岐する。以下の分岐を位置条件分岐と呼ぶ。
位置条件分岐で、インデ3変数を位置個別配列のインデックスとして使用して位置個別配列のデーターを16bit取得して、取得したデーターがインデ4変数と一致する場合は、以下の処理を行う。
以下の繰り返し処理を展開ネスト2繰り返し処理と呼ぶ。
インデ4変数のデーターをインデ9変数に上書きで代入する。
インデ5変数をD文字1配列のインデックスとして使用してD文字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繰り返し処理の先頭に戻って、処理を繰り返す。D文字1配列の最後の位置の処理が終了するまで処理を繰り返して、展開1繰り返し処理を終了する。
【0101】
インデ2変数に上書きで0を代入する。
以下の繰り返し処理を展開2繰り返し処理と呼ぶ。
展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、空白の場合とデーターが代入されている場合に分岐する。この分岐を空白入力分岐と呼ぶ。
空白入力分岐で、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、空白の場合は、以下の処理を行う。
展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列に、インデ2変数をD圧縮データー配列のインデックスとして使用してD圧縮データー配列のデーターを取得して代入する。
インデ2変数に1を加算する。
空白入力分岐で、展開データー配列のインデックスとしてインデ8変数を使用して展開データー配列のデーターを文字列操作関数を使用して調べて、データーが代入されている場合は、何も行わない。
空白入力分岐を終了する。
インデ8変数に1を加算する。
展開データー配列の最後の位置のデーターの処理が終わるまで処理を繰り返して、展開2繰り返し処理を終了する。
【0102】
展開データー配列の最初から最後までのデーターを1byteずつファイルに書き込んでバイナリー形式で名称を付けてファイルを作成して展開ファイルとして保存する。実施例では、DeCord.txtと言う名称のファイルを作成して展開ファイルとして保存した。
図符号Jの圧縮ファイルのサイズを表示するテキストボックスに、D圧縮ファイル配列のサイズを表示する。
図符号Mの展開ファイルのサイズを表示するテキストボックスに、D圧縮ファイルサイズ10進変数のデーターを表示する。
図符号Kの展開ファイルの内容を表示するリッチテキストボックスにDeCord.txtという名称で保存した展開ファイルを開いて表示する。
【0103】
次に、ステップ106の「図符号Oのデーター表示 2ボタンをクリックする」に進む。ステップ106は、人為的な手動による操作または入力処理工程である。
図符号Oのデーター表示 2の画面を表示するボタンを図符号Dのマウスでクリックすると
図5の画面が表示される。
【0104】
次に、ステップ107の「
図5のデーター表示 1の画面を表示して辞書データーを表示する」に進む。ステップ107は、マルメ圧縮ソフトウェアとコンピューターによる自動処理工程である。
図の画面が表示された後に、自動的に以下の処理が行われる。
D文字1配列のデーターを図符号Wの圧縮した文字表示欄に表示する。
D位置4配列のデーターを図符号Xの圧縮した位置表示欄に表示する。
D個数3配列のデーターを図符号Yの圧縮した文字の個数表示欄に表示する。
以上で展開工程を終了する。