Micro Focus のルーチンは、CBLDCnnn というモジュールに格納されています。nnn は 001 ~ 127 の数字です。Micro Focus の圧縮ルーチンを使用するには、FCD の fcd-data-compress に 001 ~ 127 の値を設定します。
圧縮ルーチン CBLDC001 では、ランレングス エンコーディング形式を使用します。このエンコーディングは、同じ文字の文字列 (ラン) を検出し、その文字列を 1 つの識別子 (その文字のカウントおよび 1 つのオカレンス) に切り詰める圧縮方法です。
このルーチンは、空白文字、バイナリのゼロと文字のゼロ (1 文字に短縮可能)、印刷可能文字 (繰り返される文字とその後に続くカウント数の計 2 文字に短縮可能) の連続に特に重点を置いています。
圧縮ルーチン CBLDC101 の動作は CBLDC001 とまったく同じです。
CBLDC001 と CBLDC101 の違いは、CBLDC101 が 256 KB までの長さの文字列を処理できる一方で、CBLDC001 は 65535 バイトまでの文字列しか処理できないということです。
圧縮ファイルでは、バイトは次の意味を持っています (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 バイトに拡張されます。それ以外の場合には、圧縮により発生する弊害はありません)。 |
CBLDC001 と同様、CBLDC003 ルーチンではランレングス エンコーディング (RLC) を使用しますが、1 バイトと 2 バイトの文字列 (ラン) を検出します。このルーチンは DBCS 文字に適していますが、CBLDC001 のかわりに使用することもできます。
CBLDC103 ルーチンの動作は CBLDC003 ルーチンと同じです。
CBLDC003 と CBLDC103 の違いは、CBLDC103 が 256 KB までの長さの文字列を処理できる一方で、CBLDC003 は 65535 バイトまでの文字列しか処理できないということです。
圧縮形式は、ヘッダー バイト 2 個の後に 1 つ以上の文字が続きます。ヘッダー バイトのビットの内容は次のとおりです。
文字列の長さはヘッダーのビットによって異なります。