バージョン 8.1.3
 —  ユーティリティ  —

COMPRESS 機能の出力

このドキュメントでは、次のトピックについて説明します。


圧縮されたデータレコード

ADACMP で処理、編集、および圧縮されたデータレコードは、ファイル定義情報とともに可変長のブロックレコード形式でシーケンシャルデータセットに出力されます。 このデータセットは、ADALOD ユーティリティの入力として使用できます。 いくつかの ADACMP 実行の出力を合わせて、ADALOD の入力として使用することもできます。

出力データセットに 1 つもレコードが含まれていない場合(入力データセットに 1 つもレコードを指定しなかったか、またはすべてのレコードが拒否された場合)、その出力も ADALOD ユーティリティの入力として使用できます。 この場合、ファイルに割り当てられているアソシエータスペースの量が十分であることを確認する必要があります。これは、入力レコード値のサンプルなしでは、ADALOD ユーティリティで正しい見積もりを行うことができないためです(詳細は、ADALOD ユーティリティを参照)。

圧縮レコード内の 191 より多い MU および PE オカレンスを識別する方法については、「圧縮レコード内の 191 を超える MU および PE オカレンスの特定」を参照してください。

Top of page

拒否されたデータレコード

ADACMP の圧縮処理中に拒否されたレコードは、すべて DD/FEHL エラーデータセットに書き込まれます。 レコードは、可変長ブロックフォーマットで出力され、複数の物理レコードにセグメント化されることがあります。 各論理拒否レコードの前には、初期 ADAF 拒否レコードヘッダーがあります。 論理レコードおよび ADAF ヘッダーが DD/FEHL 物理レコード長に収まらない場合、ADAN 拒否レコードヘッダーは、論理拒否レコードを構成する残りの物理拒否レコードセグメントに先行します。

これら 2 つのヘッダーの機能は、次のとおりです。

ADAF および ADAN ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAF および ADAN 内にあります。

従来、ADACMP エラーに生成される DD/FEHL エラーデータセットは、FEHL 物理レコード長を超える拒否レコードを切り捨てていました。 バージョン 8 では、拒否されたレコードは切り捨てられずにセグメント化されます。 この変更により、DD/FEHL LRECL 設定には、最低 500 バイトが必要となります。

HEADER=YES が指定された場合、セグメント化された非圧縮レコードが論理レコードへとアセンブルされるときにエラーが発生することがあります。 ADAH ヘッダーでエラーになった場合、ADAH レコードは書き込まれますが、後続の ADAC レコードは次の ADAH レコードが処理されるまで書き込まれません。 ADAC ヘッダーでエラーになった場合、先行する ADAH ヘッダーはペイロードデータなしで書き込まれます。 エラーになった ADAC レコードは完全に書き込まれます。 後続の ADAC レコードは、次の ADAH レコードが処理されるまで書き込まれません。

以下に示すレスポンスコードが返されることがあります。

X'E7'(231) 入力レコードが非常に短い場合(COMPRESS)
X'E8'(232) 出力レコード長のエラー(COMPRESS)
X'E9'(233) 無効な ADAH スパンドレコードヘッダーが見つかった場合 以下に示すサブコードは詳細を表します。
  • 1 -正しくない ADAH アイキャッチャー

  • 2 -正しくない ADAH ヘッダー長

  • 3 -予期しない継続インジケータ

  • 4 -バイナリの 0 に設定されていない予約済みエリア

  • 5 -無効なセグメント長

  • 6 -合計ペイロードデータ長が MAXLOGRECLEN 設定を超過

スパンドレコードおよび ADAH ヘッダーの詳細は、「スパンドレコード」を参照してください。 ADAH ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAH 内にあります。

X'EA'(234) 無効な ADAC スパンドレコードヘッダーが見つかった場合 以下に示すサブコードは詳細を表します。
  • 1 -正しくない ADAC アイキャッチャー

  • 2 -正しくない ADAC ヘッダー長

  • 3 -予期しない継続インジケータ

  • 4 -バイナリの 0 に設定されていない予約済みエリア

  • 5 -無効なセグメント長

  • 6 -予期しない継続レコードシーケンス番号

  • 7 -無効なセグメントオフセット

  • 8 -累積ペイロードデータ長が ADAH の指定合計長を超過

  • 9 -累積ペイロードデータ長が MAXLOGRECLEN 設定を超過

スパンドレコードおよび ADAC ヘッダーの詳細は、「スパンドレコード」を参照してください。 ADAC ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAC 内にあります。

レコード内の最初の無効なフィールドのみが検出され、参照されます。 他のエラーがあっても、次に実行するまで検出されません。

拒否されたデータレコードの例

次の表は、ADACMP の圧縮処理中に拒否された 4 つのレコードの FEHL 出力を示しています。 拒否レコード 1 および 3 には FEHL レコード(ADAF)が 1 つだけ含まれています。拒否レコード 2 は 2 つの FEHL レコード(ADAF および ADAN)にセグメント化されています。拒否レコード 4 は 3 つの FEHL レコード(1 つの ADAF レコードおよび 2 つの ADAN レコード)にセグメント化されています。

注意:
ADAF および ADAN ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAF および ADAN 内にあります。

拒否レコード FEHL レコード FEHL フィールド 説明
フィールド
1 ADAF ADAFEYE ADAF ADAF ヘッダーのアイキャッチャー
ADAFLEN 72 ADAF ヘッダー長
ADAFTYPE R タイプ。 正しい値は次のとおりです。

H:ADAH ヘッダー
P:ADAH ヘッダーとペイロード
R:論理レコード

ADAFIND E 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADAFSLEN 22000 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADAFTOTL 22000 合計長。

注意:
すべての ADANSLEN フィールドおよび ADAFSLEN の値の合計は、ADAFTOTL の値と等しくなる必要があります(この例のレコード 1 の場合、0 + 22000 = 22000)。

ADAFISN 1 レコードの ISN
ADAFLNUM 1 論理レコード番号
ADAFPNUM 1 物理レコード番号
ADAFEOFF 5000 論理レコードのエラーオフセット
ADAFPEX 0 PE インデックス
ADAFFN ZA フィールド名
ADAFRSP 41 レスポンスコード
ADAFSUB 2 サブコード
予約済み 0 予約済み
ADAFDATA 'Record 1 -- Payload Data' 拒否入力データ
2 ADAF ADAFEYE ADAF ADAF ヘッダーのアイキャッチャー
ADAFLEN 72 ADAF ヘッダー長
ADAFTYPE R タイプ。 正しい値は次のとおりです。

H:ADAH ヘッダー
P:ADAH ヘッダーとペイロード
R:論理レコード

ADAFIND C 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADAFSLEN 27962 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADAFTOTL 50000 合計長。

注意:
すべての ADANSLEN フィールドおよび ADAFSLEN の値の合計は、ADAFTOTL の値と等しくなる必要があります(この例のレコード 2 の場合、22038 + 27962 = 50000)。

ADAFISN 2 レコードの ISN
ADAFLNUM 2 論理レコード番号
ADAFPNUM 3 物理レコード番号
ADAFEOFF 35000 論理レコードのエラーオフセット
ADAFPEX 0 PE インデックス
ADAFFN ZA フィールド名
ADAFRSP 41 レスポンスコード
ADAFSUB 2 サブコード
予約済み 0 予約済み
ADAFDATA 'Record 2 -- Payload data part 1' 拒否入力データ
ADAN ADANEYE ADAN ADAN ヘッダーのアイキャッチャー
ADANLEN 24 ADAN ヘッダー長
ADANTYPE R タイプ。 正しい値は次のとおりです。

C:ADAC ヘッダー
D:ADAC ヘッダーとペイロード
P:ADAH レコードセグメント
R:論理レコードセグメント

ADANIND E 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADANSLEN 22038 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADANOFF 27962 論理レコードのエラーオフセット。
ADANDATA 'Record 2 -- Payload data part 2' 継続される拒否入力データ
3 ADAF ADAFEYE ADAF ADAF ヘッダーのアイキャッチャー
ADAFLEN 72 ADAF ヘッダー長
ADAFTYPE P タイプ。 正しい値は次のとおりです。

H:ADAH ヘッダー
P:ADAH ヘッダーとペイロード
R:論理レコード

ADAFIND E 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADAFSLEN 20000 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADAFTOTL 20000 合計長。

注意:
すべての ADANSLEN フィールドおよび ADAFSLEN の値の合計は、ADAFTOTL の値と等しくなる必要があります(この例のレコード 3 の場合、0 + 20000 = 20000)。

ADAFISN 3 レコードの ISN
ADAFLNUM 3 論理レコード番号
ADAFPNUM 4 物理レコード番号
ADAFEOFF 0 論理レコードのエラーオフセット
ADAFPEX 0 PE インデックス
ADAFFN   フィールド名
ADAFRSP 233 レスポンスコード
ADAFSUB 1 サブコード
予約済み 0 予約済み
ADAFDATA ADAH およびペイロードデータ 拒否入力データ
4 ADAF ADAFEYE ADAF ADAF ヘッダーのアイキャッチャー
ADAFLEN 72 ADAF ヘッダー長
ADAFTYPE H タイプ。 正しい値は次のとおりです。

H:ADAH ヘッダー
P:ADAH ヘッダーとペイロード
R:論理レコード

ADAFIND C 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADAFSLEN 32 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADAFTOTL 10064 合計長。

注意:
すべての ADANSLEN フィールドおよび ADAFSLEN の値の合計は、ADAFTOTL の値と等しくなる必要があります(この例のレコード 4 の場合、32 + 32 + 10000 = 10064)。

ADAFISN 4 レコードの ISN
ADAFLNUM 4 論理レコード番号
ADAFPNUM 8 物理レコード番号
ADAFEOFF 0 論理レコードのエラーオフセット
ADAFPEX 0 PE インデックス
ADAFFN   フィールド名
ADAFRSP 234 レスポンスコード
ADAFSUB 3 サブコード
予約済み 0 予約済み
ADAFDATA ADAH ヘッダー 拒否入力データ
ADAN ADANEYE ADAN ADAN ヘッダーのアイキャッチャー
ADANLEN 24 ADAN ヘッダー長
ADANTYPE C タイプ。 正しい値は次のとおりです。

C:ADAC ヘッダー
D:ADAC ヘッダーとペイロード
P:ADAH レコードセグメント
R:論理レコードセグメント

ADANIND C 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADANSLEN 32 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADANOFF 32 論理レコードのエラーオフセット。
ADANDATA ADAC ヘッダー 継続される拒否入力データ
ADAN ADANEYE ADAN ADAN ヘッダーのアイキャッチャー
ADANLEN 24 ADAN ヘッダー長
ADANTYPE D タイプ。 正しい値は次のとおりです。

C:ADAC ヘッダー
D:ADAC ヘッダーとペイロード
P:ADAH レコードセグメント
R:論理レコードセグメント

ADANIND E 継続インジケータ。 正しい値は次のとおりです。

C:後続の継続レコード(ADAN)
E:論理レコードの終わり(最終セグメント)

予約済み 0 予約済み
ADANSLEN 10000 セグメント長(ヘッダーに続くペイロードデータの長さ)
ADANOFF 64 論理レコードのエラーオフセット。
ADANDATA ADAC およびペイロードデータ 継続される拒否入力データ

Top of page

ADACMP レポート

ADACMP では、圧縮レコードに必要なデータストレージのおよそのスペース量(ブロック単位およびシリンダ単位)を計算します。 この情報は、DEVICE パラメータで指定するさまざまなデバイスタイプに必要なスペースを、5 %~30 %の各データストレージパディングファクタについて示した表の形で出力されます。

ADACMP レポートの出力例を以下に示します。

PARAMETERS:
   
ADACMP COMPRESS NUMREC=1000
ADACMP FNDEF='01,AA,8,B,DE'
ADACMP FNDEF='01,BA,6,A,NU'
ADACMP FNDEF='01,BB,8,P,NU'
ADACMP FNDEF='01,AD,1,A,FI'
ADACMP SUBDE='CA=BA(1,3)'

COMPRESS PROCESSING STATISTICS:

NUMBER OF RECORDS READ                1,000
NUMBER OF INCORRECT RECORDS               0
NUMBER OF COMPRESSED RECORDS          1,000

RAW DATA                             24,000 BYTES
COMPRESSED DATA                      16,656 BYTES
COMPRESSION RATE                       31.9 %
LARGEST COMPRESSED RECORD                20 BYTES


DATASTORAGE SPACE REQUIREMENTS:

I  DEVICE  I  PADDING I  BLOCKSIZE I          NUMBER OF     I
I          I  FACTOR  I    BYTES   I      BLOCKS      CYLS  I
I----------I----------I------------I------------------------I
I   3380   I          I    4,820   I                        I
I          I     5%   I    4,578   I           4         1  I
I          I    10%   I    4,337   I           4         1  I
I          I    15%   I    4,096   I           5         1  I
I          I    20%   I    3,856   I           5         1  I
I          I    25%   I    3,615   I           5         1  I
I          I    30%   I    3,373   I           5         1  I
I          I          I            I                        I
I----------I----------I------------I------------------------I

TEMP SPACE ESTIMATION:

I  DEVICE  I  BLOCKSIZE I          NUMBER OF     I
I          I    BYTES   I      BLOCKS      CYLS  I
I----------I------------I------------------------I
I   3380   I    7,476   I           5          1 I
I----------I------------I------------------------I

THE LARGEST DESCRIPTOR IS AA, IT WILL OCCUPY 1 TEMP BLOCKS


SORT SPACE ESTIMATION:

I DEVICE I BLOCKSIZE I   LWP              I      NR OF      I
I        I  (BYTES)  I  (BYTES)           I  BLOCKS    CYLS I
-------------------------------------------------------------
I  3380  I     7476  I   139264 (MINIMUM) I       2       1 I
I        I           I  1048576 (DEFAULT) I       2       1 I
I        I           I   139264 (OPTIMUM) I       2       1 I
I--------I-----------I--------------------I-----------------I

圧縮率は、圧縮ルーチンに実際に入力されたデータ量に基づいて計算されます。 フォーマット要素 nX(フィールドに空白を入力するために使用)でスキップしたフィールドはカウントされません。

ADACMP COMPRESS の実行で SPAN を指定した場合、スパンドデータストレージレコードの統計情報も出力されます。

Spanned Record Statistics:                    
--------------------------                    
                                              
Number of Non-Spanned records               2 
Number of Spanned records                   8 
Min Number of Segments              2         
Max Number of Segments              5         
Avg Number of Segments              4         
                                              
Max MU Count                        0         
Max PE Count                      300         

ラージオブジェクト(LB)フィールドが圧縮される場合、LB フィールド(レポートで "LOB" として表示される)の統計情報が出力されます。

Large Objects Statistics:                           
--------------------------                          
                                                    
Number of bytes for largest LOB           10,124,996
Total number of LOBs                                         5
Total number of outsourced LOBs                        5
Number of LOB file records                         10,085

Top of page