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

COMPRESS:Adabas ファイルの圧縮

graphics/util_adacmp_compress.png

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


基本パラメータとサブパラメータ

field-definition-statements

ADACMP の入力として指定するフィールド定義ステートメントは、次の目的で使用されます。

ADACMP COMPRESS では FDT パラメータとフィールド定義ステートメントのいずれかを指定する必要があります。 両方を指定すると、フィールド定義ステートメントが無視されます。

この構文では、次のフィールド定義ステートメントを使用できます。

graphics/util_adacmp_compress_fndef.png

フィールド定義ステートメントとその構文の詳細は、「フィールド定義ステートメント」を参照してください。

FDT:既存の Adabas フィールド定義テーブルの使用

使用する既存の Adabas フィールド定義テーブル(FDT)を指定します。 FDT は、既存のファイルのものでも、ADADBS ユーティリティの KEEPFDT オプションで削除されたファイルのものでもかまいません。

ADACMP COMPRESS では FDT パラメータとフィールド定義ステートメントのいずれかを指定する必要があります。 両方を指定すると、フィールド定義ステートメントが無視されます。

FDT パラメータが指定されている場合、入力データは、FORMAT パラメータが使用されていない限り、指定の FDT に定義された構造と一致している必要があります。 FDT でマルチプルバリューフィールドまたはピリオディックグループを定義する場合、長さの値を定義するか、または FDT にその定義がすでに含まれている必要があります。 「マルチプルバリューフィールドカウント」セクションおよび「ピリオディックグループカウント」セクションを参照してください。

FDT パラメータを使用した場合、指定したすべてのフィールド定義ステートメントは無視されます。

Top of page

オプションのパラメータとサブパラメータ

CODE:サイファコード

データを暗号化してデータベースにロードする場合、このパラメータでサイファ(暗号)コードを指定する必要があります。 暗号化についての詳細は『Adabas Security Manual』を参照してください。

注意:
ファイルに LB フィールドが含まれている場合、ADACMP COMPRESS 機能で CODE パラメータを指定することはできません。

DATADEVICE:デバイスタイプ

DATADEVICE パラメータは、スパンドレコードのセグメンテーションに使用されるデータストレージデバイスタイプを指定します。 SPAN パラメータが指定された場合、ADACMP はスパンされた長い圧縮レコードをセグメントに分割します。このセグメントは、DATADEVICE パラメータで暗示的に指定されるデータストレージのブロックサイズよりわずかに小さくなります。

SPAN パラメータが指定されていない場合、DATADEVICE の値は不要です。 ただし、値を指定して圧縮レコードのサイズを制限することはできます。 この場合、指定したストレージデバイスタイプのブロックサイズを超過したすべてのレコードが DDFEHL エラーデータセットに書き込まれます。

DEVICE:デバイスタイプ

DEVICE パラメータを指定した場合、ADACMP で、指定した各デバイスタイプに対する実行スペースの必要容量が計算され、表示されます。 このレポートには、ファイルに MUPEX パラメータが設定されているかどうかを示す情報も含まれます。

DEVICE パラメータでデバイスタイプを指定しない場合、ADARUN デバイスタイプがデフォルトとして使用されます。

FACODE:英数字フィールドのエンコード

ファイル内の英数字フィールドに UES ファイルエンコードを定義する場合は、FACODE を指定する必要があります。 英数字のエンコードは EBCDIC エンコードファミリに準拠する必要があります(例えば、スペース文字は X'40')。

FILE:ファイル番号

FDT にハイパーディスクリプタが含まれている場合、このパラメータを指定する必要があります。 指定したファイル番号は、関連するハイパー出口の入力となります。 ハイパー出口の詳細は、『Adabas DBA リファレンスマニュアル』を参照してください。

ユーザー出口 6 には常にこのファイル番号が渡されます。 FILE を指定しない場合、値はゼロであると仮定されます。

FORMAT:入力レコードのフォーマット定義

このパラメータを使用して、入力レコードのフィールドの位置、フォーマット、および長さを示すフォーマット定義を行うことができます。 指定するフォーマットは、『Adabas コマンドリファレンス』に記載の更新コマンド用フォーマットバッファエントリの規則に準拠する必要があります。

変換規則は、『Adabas コマンドリファレンス』の Adabas 更新コマンドの記述に準じます。 SQL 空値(NC オプション)フィールドの変換については、「NC:SQL 空値オプション」を参照してください。 FORMAT パラメータで省略したフィールドには空値が割り当てられます。

FORMAT パラメータを省略した場合、入力レコードは、指定したフィールド定義ステートメントの順番で処理されるか、既存の Adabas フィールド定義テーブルに従って処理されます(FDT パラメータを指定している場合)。

LOBVALUES パラメータが NO に設定されている場合、FORMAT パラメータで指定する定義で LB フィールドを使用することはできません。

FUWCODE:ワイド文字フィールドのデフォルトのユーザーエンコード

FUWCODE では、ファイルのワイド文字フィールドがデータベースにロードされる場合にデフォルトで使用されるユーザーエンコードを定義します。 このパラメータを省略すると、データベースの UWCODE 定義のエンコードが使用されます。

FWCODE:ワイド文字フィールドのエンコード

圧縮ファイルに W フォーマットのフィールド(ワイド文字フィールド)が存在する場合、FWCODE を指定してファイルエンコードを定義する必要があります

FWCODE では、ワイド文字フィールドの最大長(バイト単位)も決定します。

HEADER

このオプションパラメータでは、ADACMP 圧縮ロジックで、非圧縮入力レコード内のセグメント化された ADACMP レコードヘッダーを要求するかどうかを指定します。 有効な値としては YES と NO があり、NO がデフォルトです。

HEADER=NO は、フォーマットが Adabas 8 より前の Adabas バージョンの ADACMP によって許可および生成されます。 HEADER=NO が指定されている場合、入力レコードには処理対象ファイルのフィールドに関する非圧縮データのみが含まれている必要があります。 各データレコードは、シーケンシャル入力データセットの 1 つの物理レコードに収まる必要があります(32 KB 未満)。 データがこのサイズより大きい場合、エラーとなったレコードが DDFEHL エラーデータセットに書き込まれます。

HEADER=YES は、Adabas 8 を実行している場合だけ指定できます。 HEADER=YES が指定されている場合、各入力レコードは ADAH または ADAC ヘッダーで始まり、ADACMP によって処理される論理レコードとセグメント化された物理レコードが関連付けられている必要があります。 各論理レコードは、32 KB より大きくすることができます。 各物理レコードのヘッダーでは、論理レコード内で後続データの位置を定義します。 ADAH および ADAC ヘッダーの DSECT は、分散 Adabas MVSSRCE データセットのメンバ ADAH および ADAC 内にあります。

HEADER=YES が指定された場合、セグメント化された非圧縮レコードが論理レコードへとアセンブルされるときにエラーが発生することがあります。 ADAH ヘッダーでエラーになった場合、ADAH レコードは書き込まれますが、後続の ADAC レコードは次の ADAH レコードが処理されるまで書き込まれません。 ADAC ヘッダーでエラーになった場合、先行する ADAH ヘッダーはペイロードデータなしで書き込まれます。 エラーになった ADAC レコードは完全に書き込まれます。 後続の ADAC レコードは、次の ADAH レコードが処理されるまで書き込まれません。 拒否されたレコードおよびその結果として返される可能性のあるレスポンスコードの詳細は、「COMPRESS 機能の出力」を参照してください。

HEADER パラメータと SPAN パラメータを混同しないでください。 SPAN パラメータでは、圧縮レコードがデバイスのデータストレージのブロックサイズを超過した場合にそのレコード自体をスパンするかどうかを制御します。 スパンドレコードには、標準スパンドレコードヘッダーが含まれています。このヘッダーは、HEADER パラメータで要求される ADAH または ADAC ヘッダーとは異なります。 スパンドレコードの詳細については、「スパンドレコード」を参照してください。

LOBDEVICE:LOB ファイルのデバイスタイプ

このオプションパラメータでは、ADACMP COMPRESS 機能によって生成される LOB ファイルをロードするために使用するデータストレージデバイスタイプを指定します。 ADACMP では、指定したデバイスのブロックサイズに基づいて、LB フィールド値がセグメントに分割されます。 このパラメータは、FDT に 1 つ以上のラージオブジェクト(LB オプション)フィールドが含まれている場合にのみ有効です。

LOBDEVICE を指定しない場合、ADACMP COMPRESS DEVICE パラメータで指定されたデバイスタイプが使用されます。 DEVICE パラメータでもデバイスが指定されていない場合、ADARUN DEVICE パラメータの値が使用されます。

LOBVALUES:LB フィールドサイズインジケータ

このオプションパラメータでは、(253 バイトを超える)長い LB フィールド値または(253 バイトまでの)短い LB フィールド値を ADACMP COMPRESS 入力データとして要求するかどうかを指定します。 このパラメータに有効な値としては "YES" と "NO" があり、"NO" がデフォルトです。

このパラメータに "YES" が指定されている場合は、非圧縮入力データに、253 バイトを超える LB フィールド値を含めることができます。 この場合、2 番目のシーケンシャル出力データセットも JCL での実行用に提供されます。 この 2 番目のデータセットは、JCL で DD コントロールステートメント DDAUSB1 を使用して識別されます。 このデータセットを使用して、253 バイトを超える LB フィールド値の圧縮 LB セグメントレコードが格納されます。

このパラメータに "NO" が指定されている場合は、非圧縮入力データに、253 バイトまでの LB フィールド、および LOB ファイルに格納されている LB フィールド値への参照を含めることができます。 この場合、ADACMP COMPRESS FORMAT パラメータで LB フィールドを指定することはできません。 ADACMP での処理時に、入力に含まれている短い LB フィールド値と LB フィールド値参照が出力に書き込まれます。

注意:
LOBVALUES=NO を指定した ADACMP DECOMPRESS 機能に続いて LOBVALUES=NO を指定した ADACMP COMPRESS 機能を実行すると、LOB ファイルグループ内の基本ファイルの FDT を変更できます。

LRECL:入力レコード長(VSE のみ)

RECFM=F または RECFM=FB を指定する場合には、このパラメータも指定して入力データのレコード長(バイト単位)を定義する必要があります。それ以外の場合は、LRECL を指定しないでください。

z/OS の場合、レコード長は入力データセットラベルまたは DD ステートメントから取得されます。

BS2000 の場合、レコード長はカタログエントリまたは /FILE ステートメントから取得されます。

MAXLOGRECLEN:バッファサイズ

このオプションパラメータでは、セグメント化された非圧縮物理レコードを圧縮論理レコードにアセンブルするために ADACMP で使用されるバッファのサイズ(バイト単位)を指定できます。 このバッファは HEADER=YES も指定した場合に限り、割り当てられます。 それ以外の場合、MAXLOGRECLEN の設定は無視されます。 MAXLOGRECLEN のデフォルト値は 1,048,576 バイト(1 MB)です。

MAXLOGRECLEN で指定された値に文字 "K" が付いた場合、この値は 1024 倍されます。 最小値は、32768 バイトです。

注意:
MAXLOGRECLEN は、非圧縮入力データのスパニングに関係します。圧縮レコードのスパニングに関係する SPAN パラメータと混同しないでください。

MINISN:開始 ISN

MINISN パラメータでは、自動的に割り当てる ISN の開始値を指定します。 MINISN パラメータを指定しない場合、デフォルトで 1 が割り当てられます。 USERISN を指定した場合、MINISN は指定できません。

MUPECOUNT:バリューカウントフィールドのサイズの指定

MUPECOUNT パラメータは、COMPRESS 機能用の入力レコードのバリューカウントフィールドのサイズを指定します。 構文は次のとおりです。

MUPECOUNT={1 | 2}

"1" が指定された場合、入力データで MU または PE 値に先行する各バリューカウントフィールドは 1 バイトである必要があり、"191" を超えることはできません。 "2" が指定された場合、入力データで MU または PE 値に先行する各バリューカウントフィールドは 2 バイトである必要があります。 MUPEX パラメータが指定されている場合のみ、バリューカウントは 191 を超えることができます。 MUPEX を指定すると、最大のカウントは "65,534" になります。

MUPEX パラメータが設定されている場合、MUPECOUNT のデフォルトは "2" になり、MUPEX パラメータが設定されていない場合、MUPECOUNT のデフォルトは "1" になります。

注意:
このオプションは Adabas 8 より前のリリースと互換性がありません。したがって、191 を超える PE グループオカレンスを持ったレコードをロードした場合、以前のバージョンへの下位互換はありません。 ただし Adabas 8 より前の Adabas バージョンで作成された ADACMP データセットは、バージョン 8 の ADALOD ユーティリティを使用すると、正常にロードされます。

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

MUPEX:拡張ピリオディックグループカウントの有効化

MUPEX パラメータでは、ファイルで拡張 MU/PE 制限(191 を超えるオカレンス)を許容するかどうかを指定します。 このオプションが指定されない場合、指定できる MU フィールドの最大値および PE フィールドの最大値は 191 です。 それ以外の場合、最大値は 65,534 です。

MUPEX パラメータを設定する場合には、SPAN パラメータも同様に設定することを検討してください。これにより、追加の MU および PE フィールドを圧縮するとき、圧縮レコードのサイズ超過による圧縮エラーを回避することができます。

注意:
このオプションは Adabas 8 より前のリリースと互換性がありません。したがって、191 を超える PE グループオカレンスを持ったレコードをロードした場合、以前のバージョンへの下位互換はありません。 ただし Adabas 8 より前の Adabas バージョンで作成された ADACMP データセットは、バージョン 8 の ADALOD ユーティリティを使用すると、正常にロードされます。

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

NOUSERABEND:アベンドなし終了

機能の実行中にエラーになると、ユーティリティは、エラーメッセージを出力してユーザーアベンド 34(ダンプあり)またはユーザーアベンド 35(ダンプなし)で終了します。

NOUSERABEND を指定すると、ユーティリティは、エラーメッセージを出力してもアベンドしません。 代りに、メッセージ utility TERMINATED DUE TO ERROR CONDITION(エラーのためユーティリティを終了します)を表示してコンディションコード 20 で終了します。

NUMREC:圧縮解除するレコード数

処理する入力レコードの数を指定します。 このパラメータを省略すると、入力データセット内のすべての入力レコードが処理されます。

入力データセットに多数のレコードがある場合、ADACMP の初回実行時にこのパラメータを使用することをお勧めします。 このパラメータを指定すると、フィールド定義エラーや無効な入力データで多くのレコードが拒否される場合に、全レコードに対して不要な処理が行われることを回避できます。 また、このパラメータは、テスト用に小さいファイルを作成する場合にも役立ちます。

NUMREC=0 を指定すると、入力データセットはオープンされません。

PASSWORD:FDT ファイルのパスワード

FDT パラメータを指定し、そのファイルがパスワード保護されている場合、このパラメータを使用して、そのファイルに有効なパスワードを指定する必要があります。

RECFM:入力レコードフォーマット(VSE のみ)

このパラメータを使用して、次のように入力レコードフォーマットを指定する必要があります

F 固定長、非ブロック形式(LRECL パラメータの指定も必要)。
FB 固定長、ブロック形式(LRECL パラメータの指定も必要)。
V 可変長、非ブロック形式。
VB 可変長、ブロック形式。
U 不定長

z/OS の場合、レコードフォーマットは入力データセットラベルまたは DD ステートメントから取得されます。

BS2000 の場合、レコードフォーマットはカタログエントリまたは FILE ステートメントから取得されます。

SPAN:スパンドレコードの有効化

SPAN パラメータでは、レコードの圧縮後にその圧縮レコードがデバイスのデータストレージのブロックサイズを超過した場合に、レコードをスパンすることが可能になります。

UACODE:英数字フィールド入力のユーザーエンコード

UACODE では、英数字フィールドのシーケンシャル入力のユーザーエンコードを定義します。 UACODE を指定する場合は、FACODE も指定する必要があります

UARC:非圧縮ユーザーデータ入力のアーキテクチャ

UARC パラメータでは、非圧縮ユーザーデータのシーケンシャル入力のアーキテクチャを指定します。 "ユーザーデータアーキテクチャキー" は、次の値を合計した整数です。

バイト順 b=0 上位バイト 1 番目
  b=1 下位バイト 1 番目
エンコードファミリ e=0 ASCII エンコードファミリ
  e=2 EBCDIC エンコードファミリ(デフォルト)
浮動小数点フォーマット f=0 IBM370 浮動小数点フォーマット
  f=4 VAX 浮動小数点フォーマット
  f=8 IEEE 浮動小数点フォーマット

デフォルトは ARC = b+ e + f = 2 です。つまり、上位バイト 1 番目、EBCDIC エンコードファミリ、および、IBM370 浮動小数点フォーマット(b=0、e=2、f=0)です。

Intel386 PC のユーザーデータの場合は、例えば b=1、e=0、f=8、または ARC=9 のようになります。

USERISN:ユーザー ISN 割り当て

各レコードの ISN 値はユーザーが定義します。 このパラメータを省略した場合、各レコードの ISN 値は Adabas によって割り当てられます。

USERISN を指定する場合は、各レコードに割り当てる ISN 値を各データレコードの直前に 4 バイトの 2 進数で付ける必要があります。 MINISN パラメータを指定した場合、USERISN は指定できません。

USERISN が、HEADER=YES とともに指定された場合、ADAH ヘッダーの直後に ISN が論理レコードの一部として続きます。

ユーザー定義の ISN 値を含む固定長または不定長入力レコードのフォーマットは、次のとおりです。

 userisn/data 

ユーザー定義の ISN 値を含む可変長入力レコードのフォーマットは、次のとおりです。

 length/xx/userisn/data 

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

length 物理レコード長を示す 2 バイトの 2 進数(レコードデータの長さ + 8 バイト)
xx バイナリの 0 を含む 2 バイトフィールド
userisn レコードに割り当てる ISN 値を示す 4 バイトの 2 進数
data 入力レコードデータ

ISN 値は任意の順序で指定できますが、(ファイルに対して)ユニークであり、かつファイルに設定した MAXISN 値を超えないようにする必要があります(ADALOD ユーティリティのドキュメントを参照)。

ADACMP では、ISN 値がユニークかどうか、および MAXISN を超えているかどうかをチェックしません。 これらのチェックは ADALOD ユーティリティで行われます。

UWCODE:ワイド文字フィールド入力のユーザーエンコード

UWCODE では、ワイド文字フィールドのシーケンシャル入力のユーザーエンコードを定義します。 UWCODE パラメータを指定する場合は、FWCODE も指定する必要があります

ユーザー入力のすべてのワイド文字フィールドが同じコードページにエンコードされます。 1 回の ADACMP の実行でフィールドごとに異なるエンコードを指定することはできません。

Top of page

ADACMP COMPRESS 例

例 1

ADACMP   COMPRESS
ADACMP   FNDEF='01,AA,7,A,DE,FI'           Field AA
ADACMP   FNDEF='01,AB,15,A,DE,MU,NU'       Field AB
ADACMP   FNDEF='01,GA'                     Group GA
ADACMP   FNDEF='02,AC,15,A,NU'             Field AC
ADACMP   FNDEF='02,AD,2,P,FI'              Field AD
ADACMP   FNDEF='02,AE,5,P,NU'              Field AE
ADACMP   FNDEF='02,AF,6,W'                 Field AF
ADACMP   COLDE='7,Y1=AF'                   Collation descriptor Y1
ADACMP   SUBDE='BB=AA(1,4)'                Subdescriptor BB
ADACMP   SUPDE='CC=AA(1,4),AD(1,1)'        Superdescriptor CC
ADACMP   HYPDE='1,DD,4,A,MU=AB,AC,AD'      Hyperdescriptor DD
ADACMP   PHONDE='EE(AA)'                   Phonetic descriptor EE
ADACMP   SUBFN='FF=AA(1,2)'                Subfield FF
ADACMP   SUPFN='GG=AA(1,4),AD(1,1)'        Superfield GG       
フィールド AA レベル 1、7 バイトの英数字、ディスクリプタ、固定ストレージオプションで定義されています。
フィールド AB レベル 1、15 バイトの英数字、ディスクリプタ、マルチプルバリューフィールド、空値省略で定義されています。
GA フィールド AC、AD、AE、および AF を含むグループです。
BB サブディスクリプタです(フィールド AA のバイト位置 1~4)。
CC スーパーディスクリプタです(フィールド AA のバイト位置 1~4、およびフィールド AD のバイト位置 1)。
DD フィールド AB、AC、および AD で構成されるハイパーディスクリプタです。 ハイパー出口 1 に割り当てられています。
EE フィールド AA から派生したフォネティックディスクリプタです。
FF サブフィールドです(フィールド AA のバイト位置 1~2)。
GG スーパーフィールドです(AA のバイト位置 1~4、および AD のバイト位置 1)。
Y1 フィールド AF の照合ディスクリプタです。照合ディスクリプタユーザー出口 7(CDX07)に割り当てられています。

例 2

ADACMP   COMPRESS
ADACMP   FORMAT='AG,6,U,AF,4X,AA,'    input record format
ADACMP   FORMAT='AB,AC'               continuation of FORMAT statement
ADACMP   FNDEF='01,AA,10,A,NU'        field definitions
ADACMP   FNDEF='01,AB,7,U,NU'
ADACMP   FNDEF='01,AF,5,P,NU'
ADACMP   FNDEF='01,AG,12,P,NU,DE'
ADACMP   FNDEF='01,AC,3,A,NU,DE'

入力レコードフォーマットが FORMAT パラメータで明示されています。 ADACMP では、このフォーマットを入力レコードのフィールド処理のベースとして使用します。 ファイルのフィールド定義テーブル(FDT)は、FNDEF ステートメントに指定した構造に対応します。

例 3

ADACMP COMPRESS
ADACMP FORMAT='AG,AF,4X,AA,AB,AC'     input record format
ADACMP FDT=8                          FDT same as file 8  

入力レコードフォーマットが FORMAT パラメータで明示されています。 使用する FDT は、Adabas ファイル 8 に現在定義されているものと同じです。

例 4

ADACMP   COMPRESS NUMREC=2000,USERISN
ADACMP   FNDEF='01,AA,7,A,DE,FI'            Field AA
ADACMP   FNDEF='01,AB,15,A,DE,MU,NU'        Field AB 

処理する入力レコード数は 2,000 件に制限されています。 各レコードの ISN 値はユーザーが指定します。

例 5

ADACMP   COMPRESS RECFM=FB,LRECL=100
ADACMP   FNDEF='01,AA,7,A,DE,FI'            Field AA
ADACMP   FNDEF='01,AB,15,A,DE,MU,NU'        Field AB 

VSE 入力ファイルには、固定長(ブロック形式)レコードが含まれています。 レコード長は 100 バイトです。

Top of page