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

DECOMPRESS 機能の出力

ADACMP DECOMPRESS 機能では、各レコードを圧縮解除し、そのレコードをシーケンシャルデータセットに格納します。 レコードは可変長のブロック形式で出力されます。 各非圧縮レコードは、次のフォーマットに従って、ISN オプションの指定あり、または指定なしで出力されます。

 length xx [ISN] data 

ここでは次の内容を表しています。

length データの長さを示す 2 バイトの 2 進数 + 8(ISN パラメータの指定がない場合は + 4)
xx バイナリの 0 を含む 2 バイトフィールド
ISN レコードの ISN 値を示す 4 バイトの 2 進数
data 非圧縮データレコード

データレコードのフィールドの順番は、ファイルのアンロード時のフィールド定義テーブル(FDT)と同じです。 標準長とフォーマットはフィールドごとに適用されます。

フィールド値が標準長を超えた場合、TRUNCATE パラメータが指定されていると、そのフィールドが英数字フォーマットである場合、値は標準長まで切り捨てられます。それ以外のフォーマットの場合、そのレコードは ADACMP によって DD/FEHL エラーデータセットに書き込まれます(次のドキュメントの「拒否されたデータレコード」を参照)。

レコード内のマルチプルバリューフィールドやピリオディックグループのカウントバイトは、すべて非圧縮データ出力に含められます。 ADACMP では、MU フィールドまたは PE グループが空の場合、カウント 1 が生成されます。 これにより、DECOMPRESS 処理の出力を後の COPMPRESS 処理の入力として使用できるようになります。


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

ADACMP では、圧縮レコードにフィールド定義テーブル(FDT)内で定義されている標準長を超えるフィールドが含まれていると、そのレコードが拒否されます(TRUNCATE パラメータを指定している場合を除く)。

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 バイトが必要となります。

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

X'E7'(231) 入力レコードが非常に短い場合(DECOMPRESS)
X'E8'(232) 出力レコード長のエラー(DECOMPRESS)

注意:

  1. レコード内の最初の無効なフィールドのみが検出され、DD/FEHL で参照されます。 レコード内の他のエラーは検出も記録もされません。

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

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

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

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

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

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

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

予約済み 0 予約済み
ADAFSLEN 22000 セグメント長
ADAFTOTL 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 合計長
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 セグメント長

注意:
ADANSLEN および ADAFSLEN の値の合計は、ADAFTOTL の値と等しくなる必要があります(この例の場合、22038 + 27962 = 50000)。

ADANOFF 27962 論理レコードのエラーオフセット。
ADANDATA 'Record 2 -- Payload data part 2' 継続される拒否入力データ

Top of page