データ ファイルを圧縮する場合には、ファイル ハンドラーは 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 は失敗を示します。