Micro Focus のルーチンは、CBLDCnnn というモジュールに格納されています。nnn は 001 ~ 127 の数字です。Micro Focus の圧縮ルーチンを使用するには、FCD の fcd-data-compress に 001 ~ 127 の値を設定します。
圧縮ルーチン CBLDC001 では、ランレングス エンコーディング形式を使用します。このエンコーディングは、同じ文字の文字列 (ラン) を検出し、その文字列を 1 つの識別子 (その文字のカウントおよび 1 つのオカレンス) に切り詰める圧縮方法です。
このルーチンは、空白文字、バイナリのゼロと文字のゼロ (1 文字に短縮可能)、印刷可能文字 (繰り返される文字とその後に続くカウント数の計 2 文字に短縮可能) の連続に特に重点を置いています。
圧縮ファイルでは、バイトは次の意味を持っています (16 進値表示)。
20-7F | ほとんどの印刷可能な文字。通常の ASCII 文字です。 |
80-9F | それぞれ 1 ~ 32 文字までの空白文字。 |
A0-BF | それぞれ 1 ~ 32 文字までのバイナリのゼロ。 |
C0-DF | それぞれ 1 ~ 32 文字までの文字のゼロ。 |
E0-FF | 後に続く文字の 1 ~ 32 回までのオカレンス数。 |
00-1F | 後に続く文字の 1 ~ 32 回までのオカレンス数。圧縮コードとしてではなく、文字どおり解釈します。 元のデータに 00-1F、80-9F、A0-BF、C0-DF、E0-FF のいずれかの範囲の文字が存在するときに使用されます(このような文字の 1 文字は 2 バイトに拡張されます。それ以外の場合には、圧縮により発生する弊害はありません)。 |