INVERT 機能はファイルに含まれる既存のフィールドに対して、ディスクリプタ、 サブディスクリプタ、 スーパーディスクリプタ、 ハイパーディスクリプタ、 フォネティックディスクリプタまたは ファイル内に照合ディスクリプタを作成します。 ADAINV INVERT の 1 回の実行で複数のディスクリプタを作成できますが、対象ファイルは 1 つのみです。
このドキュメントでは、次のトピックについて説明します。
FILE パラメータは、作成するディスクリプタが含まれているファイルを指定します。
SORTSIZE は、ソートデータセットまたは R1/2 データセット(SORTR2 は VSE 下ではサポートされません)に対して使用できるスペースを指定するものです。 値はシリンダ(数値のみ)か、またはブロック(数値に "B" を伴う)で指定します。 ブロックで指定する場合には、それらがシリンダの総数に等しくなっていなければなりません。 SORTSIZE パラメータは必須です。 ソートスペース見積りに関する詳細情報は『Adabas DBA リファレンスマニュアル』を参照してください。
TEMPSIZE は、中間データセットで利用できるスペースを定義します。 値はシリンダ(数値のみ)か、またはブロック(数値に "B" を伴う)で指定します。 このパラメータは必須です。
FILE パラメータで指定したファイルが暗号化されている場合、サイファコードを CODE パラメータで指定しなければなりません。
これらのパラメータは、各種タイプのディスクリプタの定義に使用できます。 指定されたファイルに対して、ディスクリプタ定義を少なくとも 1 つ指定する必要があります。このとき、複数のディスクリプタまたは複数タイプのディスクリプタを指定できます。
1 つ以上のフィールドをディスクリプタとして定義するには FIELD パラメータを使用し、 照合ディスクリプタには COLDE パラメータ、 ハイパーディスクリプタには HYPDE パラメータ、 フォネティックディスクリプタには PHONDE パラメータ、 サブディスクリプタには SUBDE パラメータ、 スーパーディスクリプタには SUPDE パラメータをそれぞれ使用します。
FIELD 指定がある場合は、照合ディスクリプタ、ハイパーディスクリプタ、スーパーディスクリプタ、サブディスクリプタ、フォネティックディスクリプタ指定の前に置く必要があります。
FIELD パラメータは、インバートする既存のフィールドを指定します。 フィールドはエレメンタリフィールドでもマルチプルバリューフィールドでもよく、また(フィールドが FI オプションで定義されていない限り)ピリオディックグループ内のものでも構いません。
ディスクリプタフィールドをユニーク指定したい場合は、フィールド名に続けて "UQ" を指定します。 ディスクリプタの一意性を、排除されるインデックス(オカレンス番号)で決定する必要がある場合は、同様に、"XI" も指定してください。
注意:
Adabas 拡張ファイルの場合、ADAINV
は、指定されたコンポーネントファイル内でしかユニークディスクリプタ違反を検出できません。
同じ値のユニークディスクリプタが他のいずれかのコンポーネントファイルに存在している場合は、ADAINV で検出できません。
したがって、ユニークディスクリプタの値が、全拡張ファイルを通じてユニークであるようにする必要があります。
FIELD パラメータではインバートに複数のフィールドを指定できますが、このパラメータのインスタンスごとに定義されるのは、1 つの照合ディスクリプタ、ハイパーディスクリプタ、サブディスクリプタ、スーパーディスクリプタ、またはフォネティックディスクリプタのみに限定されます。 ADAINV の実行ごとに、パラメータの複数のインスタンスを指定できます。
サブフィールドまたはスーパーフィールドをインバートする場合は、フィールドの作成時と同じ親フィールドを SUBDE または SUPDE で指定しないとエラーになります。 開始および終了の値は元のフィールド定義から取得されます。
親フィールドを NU オプションで指定すると、空値フィールドを含むレコードについてはインバーテッドリストにエントリが作成されません。 スーパーディスクリプタとハイパーディスクリプタは、他のディスクリプタエレメントの値に関係なく、エントリが作成されません。
親フィールドが初期化されず、論理的に物理レコードの終了を超えた場合、そのレコードのインバーテッドリストエントリは、パフォーマンスの理由から生成されません。 このとき、インバーテッドリストエントリを生成するには、ファイルのアンロード、圧縮解除、再ロードを行います。あるいは、アプリケーションプログラムを使用してファイルのレコードごとにフィールドを初期化してください。
個々のディスクリプタの構文については、ADACMP ユーティリティに関する説明で、「フィールド定義ステートメント」を参照してください。
LPB は、内部プリフェッチバッファの大きさをバイト単位で指定するものです。 指定可能最大値は、32,760 バイトです。 デフォルト値は、ADARUN LU パラメータに依存し、この LU パラメータがあまりに小さい場合には ADAINV によって指定された LPB 値もよりも少なくなることがあります。
LWP は、ディスクリプタ値のソートに使用されるワークプールの大きさを指定します。 この値は、数値のみでバイト単位で指定するか、あるいは数値の後に "K" を付けてキロバイト単位で指定します。 値が指定されない場合は、デフォルトで 1048576 バイト(または 1024K)が設定されます。ただし、ディスクリプタが非常に長いか、またはディスクリプタの数が著しく多いファイルに対して ADAINV の実行時間を短くする場合には、より大きな値を LWP に設定すべきです。 ソートデータセットとの問題を避けるため、比較的小規模なファイルにディスクリプタを定義する場合は、LWP 値を小さめに指定してください。
最小ワークプールサイズは、SORT データセットのデバイスタイプに応じて異なります。
ソートデバイス | 最小 LWP | 最小 LWP |
---|---|---|
バイト | キロバイト | |
2000 | 106496 | 104K |
2314 | 090112 | 88K |
3375 | 131072 | 128K |
3380 | 139264 | 136K |
3390 | 159744 | 156K |
機能の実行中にエラーになると、ユーティリティは、エラーメッセージを出力してユーザーアベンド 34(ダンプあり)またはユーザーアベンド 35(ダンプなし)で終了します。
NOUSERABEND を指定すると、ユーティリティは、エラーメッセージを出力してもアベンドしません。 代りに、メッセージ "utility TERMINATED DUE TO ERROR CONDITION"(エラーのためユーティリティを終了します)を表示してコンディションコード 20 で終了します。
FILE パラメータで指定されたファイルがセキュリティ保護されている場合は、ファイルのパスワードをこのパラメータで指定する必要があります。
ADAINV はディスクリプタ値のソートにソーデータセットを使用します。 SORTDEV パラメータは、このソートデータセットに使用するデバイスタイプを示します。 このパラメータは、使用するデバイスタイプが ADARUN DEVICE パラメータの指定デバイスと異なる場合にのみ必要です。 z/OS SORTDEV に関する特定の注意事項については、このセクションの最後にある z/OS ジョブ制御情報を参照してください。
ADAINV は中間データセットを使用して中間データを格納します。 TEMPDEV パラメータは、このデータセットに使用するデバイスタイプを示します。 このパラメータは、使用するデバイスタイプが ADARUN DEVICE パラメータの指定デバイスと異なる場合にのみ必要です。
TEST パラメータは、処理を実際には行わずに構文のみをテストします。 指定したパラメータの構文だけがテストされ、値や変数の正当性はテストされません。
インバート中のフィールド値および値を含むレコードの ISN は、インバーテッドリスト(ノーマルインデックスおよびアッパーインデックス)に書き込まれます。
ノーマルインデックスまたはアッパーインデックスのいずれかの論理エクステントが ADAINV の実行中にすべて使用されると、 ADAINV によって追加エクステントが割り当てられます。 割り当てられるエクステントのサイズは、ファイルに現在割り当てられているすべてのノーマルインデックスエクステントの現在の合計サイズの 25 %です。
新しいエクステントのスペースが不足しているか、割り当て済みのエクステントが最大数に達していると、ADAINV はエラーメッセージを出力して終了します。
ADAINV INVERT FILE=3,FIELD='AR',TEMPSIZE=10,SORTSIZE=5
ファイル 3 のフィールド AR をディスクリプタとして指定します。
ADAINV INVERT FILE=5,SUBDE='SA=AA(1,4)' ADAINV TEMPSIZE=6,SORTSIZE=3
ファイル 5 のフィールド AA(位置 1~4)を親フィールドとして使用して、サブディスクリプタ SA を作成します。
ADAINV INVERT FILE=6,SUPDE='SB=AA(1,4),AB(1,1)' ADAINV TEMPSIZE=5,SORTSIZE=3
ファイル 6 のフィールド AA(位置 1~4)および AB(位置 1)を使用して、スーパーディスクリプタ SB を作成します。
ADAINV INVERT FILE=1,PHONDE='XX(AA)' ADAINV TEMPSIZE=5,SORTSIZE=3
フィールド AA をソースフィールドとして使用して、フォネティックディスクリプタ XX を作成します。
ADAINV INVERT FILE=6,COLDE='1,Y1=AA' ADAINV TEMPSIZE=5,SORTSIZE=4
フィールド AA をソースフィールドとして使用して、Y1 という名前の照合ディスクリプタ CDX=01 を作成します。