Micro Focus の圧縮ルーチンの呼び出し

データ ファイルを圧縮する場合には、ファイル ハンドラーは DATACOMPRESS コンパイラ指令で指定する圧縮ルーチンを呼び出します。

Micro Focus の圧縮ルーチンを呼び出すには、次の構文を使用します。

COBOL:

call "CBLDCnnn" using input-buffer,
                      input-buffer-size,
                      output-buffer,
                      output-buffer-size,
                      compression-type

C:

CBLDCnnn(input_buffer, &input_buffer_size,  
         output_buffer, &output_buffer_size,
         &compression-type);

ルーチン CBLDC001 と CBLDC003 のパラメーターの内容は、次のとおりです。

nnn 001 ~ 127 のデータ圧縮ルーチン。
input_buffer PIC X(サイズ) データ項目。ルーチンの入口で圧縮または圧縮解除するデータを記述する必要があります。最大サイズは 65,535 バイトです。
input_buffer_size 2 バイトの (C では int、COBOL では PIC XX COMP-5) データ項目。入口で入力バッファーのデータ長を記述する必要があります。
output_buffer PIC X(サイズ) データ項目。終了時に、結果データを格納します。
output_buffer_size 2 バイトの (C では int、COBOL では PIC XX COMP-5) データ項目。入口で使用可能な出力バッファーのサイズを記述する必要があり、終了時にはバッファーのデータ長を格納します。
compression-type 1 バイトの (C では char、COBOL では PIC X COMP-X) データ項目。入口で入力データを圧縮するか圧縮解除するかを指定する必要があります。

0 - 圧縮、1 - 圧縮解除

ルーチン CBLDC101 と CBLDC103 のパラメーターの内容は、次のとおりです。

nnn 001 ~ 127 のデータ圧縮ルーチン。
input_buffer PIC X(サイズ) データ項目。ルーチンの入口で、圧縮または圧縮解除するデータを記述する必要があります。最大サイズは 256 MB です。
input_buffer_size 4 バイトの (C では int、COBOL では PIC XXXX COMP-5) データ項目。入口で入力バッファーのデータ長を記述する必要があります。
output_buffer PIC X(サイズ) データ項目。終了時に、結果データを格納します。
output_buffer_size 4 バイトの (C では int、COBOL では PIC XXXX COMP-5) データ項目。入口で使用可能な出力バッファーのサイズを記述する必要があり、終了時にはバッファーのデータ長を格納します。
compression-type 1 バイトの (C では char、COBOL では PIC X COMP-X) データ項目。入口で入力データを圧縮するか圧縮解除するかを指定する必要があります。

0 - 圧縮、1 - 圧縮解除

RETURN-CODE 特殊レジスタは、操作が成功したかどうかを示します。圧縮または圧縮解除は、出力バッファーが小さく結果を受け付けられない場合のみに失敗します。0 は成功、1 は失敗を示します。