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 ヘッダーのほうが小さく、拒否レコードの継続および ADAH/ADAC ヘッダーのエラーレポートに使用されます。
ADAF および ADAN ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAF および ADAN 内にあります。
従来、ADACMP エラーに生成される DD/FEHL エラーデータセットは、FEHL 物理レコード長を超える拒否レコードを切り捨てていました。 バージョン 8 では、拒否されたレコードは切り捨てられずにセグメント化されます。 この変更により、DD/FEHL LRECL 設定には、最低 500 バイトが必要となります。
以下に示すレスポンスコードが返されることがあります。
X'E7'(231) | 入力レコードが非常に短い場合(DECOMPRESS) |
X'E8'(232) | 出力レコード長のエラー(DECOMPRESS) |
注意:
次の表は、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 ヘッダー |
||
ADAFIND | E | 継続インジケータ。 正しい値は次のとおりです。
C:後続の継続レコード |
||
予約済み | 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 ヘッダー |
||
ADAFIND | C | 継続インジケータ。 正しい値は次のとおりです。
C:後続の継続レコード(ADAN) |
||
予約済み | 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 ヘッダー |
||
ADANIND | E | 継続インジケータ。 正しい値は次のとおりです。
C:後続の継続レコード(ADAN) |
||
予約済み | 0 | 予約済み | ||
ADANSLEN | 22038 | セグメント長
注意: |
||
ADANOFF | 27962 | 論理レコードのエラーオフセット。 | ||
ADANDATA | 'Record 2 -- Payload data part 2' | 継続される拒否入力データ |