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

UPDATE:レコードの追加/削除

注意:
ADALOD UPDATE が(スペース不足などの原因で)異常終了した場合、異常終了の前に行われたファイルの更新はバックアウトできません。 このため、ADALOD UPDATE を実行する前に、ファイルで ADASAV SAVE を実行することを推奨します。

UPDATE 機能は、既存のファイルに対して、大量のレコード(ISN)を追加または削除します。 1 回の UPDATE 操作で、ISN の追加と削除をどちらも行うことができます。

追加するレコードは圧縮形式(ADACMP または ADAULD の出力)でなければならならず、DDEBAND/EBAND 入力データセット内に存在する必要があります。

削除する ISN は、DDISN または DELISN パラメータあるいは両方のパラメータで指定する必要があります。

注意:

  1. Adabas ニュークリアスがアクティブの場合は、UPDATE 機能を Adabas システムファイルに対して使用できず、チェックポイントファイルまたはセキュリティファイルの更新にも使用できません。
  2. マルチクライアントファイルを拡張ファイルの一部分にすることはできません。また、拡張ファイルをマルチクライアントファイルに変換することもできません。

graphics/util_adalod_update.png

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


基本パラメータ

FILE:ファイル番号

FILE は、更新ファイルの番号を指定します。 ADABAS 拡張ファイルのコンポーネントファイルを指定すると、そのコンポーネントファイルのみが更新され、他のコンポーネントファイルは別個の UPDATE 操作で更新する必要があります。

SORTSIZE:ソートサイズ

SORTSIZE は、ソートデータセットに使用できるブロック数またはシリンダ数を指定します。

TEMPSIZE:一時ストレージのサイズ

TEMPSIZE は、中間データセットに使用できるブロック数またはシリンダ数を指定します。

Top of page

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

ACRABN:アドレスコンバータの開始 RABN

ACRABN は、アドレスコンバータのスペース割り当てを、指定された RABN で開始します。 ACRABN は、ファイルのアドレスコンバータに対する増分が MAXISN で指定されている場合にのみ有効です。

AC2RABN:セカンダリアドレスコンバータの開始 RABN

AC2RABN を指定すると、指定された RABN からセカンダリアドレスコンバータのスペース割り当てが開始されます。 AC2RABN は、ファイルのセカンダリアドレスコンバータに対する増分が MAXISN2 で指定されている場合にのみ有効です。 セカンダリアドレスコンバータは、セカンダリスパンドレコードのセカンダリ ISN を、セカンダリレコードが格納されているデータストレージブロックの RABN にマッピングするために使用されます。 デフォルト値はありません。

ASSOVOLUME:アソシエータエクステントボリューム

注意:
ASSOVOLUME 値は単一引用符でくくらなければなりません。

ASSOVOLUME は、ファイルのアドレスコンバータに対する増分が MAXISN または MAXISN2 で指定されている場合にのみ有効です。

ASSOVOLUME は、ファイルのアドレスコンバータエクステントを割り当てるボリュームを指定します。 要求したブロック数が指定ボリュームに存在しない場合、ADALOD は、ASSOVOLUME パラメータに関係なく再度割り当てようとします。

ACRABN または AC2RABN を指定すると、ADALOD は アドレスコンバータエクステントタイプの割り当て時に ASSOVOLUME の値を無視します。 ASSOVOLUME が指定されないと、ファイルのアソシエータスペースは、ADALOD のデフォルト割り当てルールに従って割り当てられます。

DDISN:削除する ISN のシーケンシャルデータセットからの読み込み

DDISN を指定すると、削除する ISN が DDISN/ISN シーケンシャルデータセットから読み込まれます。 DDISN および DELISN パラメータをどちらも指定すると、2 つのリストの ISN が結合されます。 DDISN/ISN データセットには、可変または可変ブロック形式のレコードが存在する必要があります。 詳細は、「ISN の指定形式」を参照してください。

UPDATE 機能を実行すると、すべての ISN が最初に読み込まれ、ISN プールに発生順に格納されます。 ISN プールサイズ(LIP で指定される)には、DDISN/ISN から読み込んだすべてのデータを格納できる大きさが必要です。 次に、レコードが昇順にソートされます。 範囲の重複や同じ ISN を二重に指定することは許可されません。 処理中に検出されなかった ISN は無視されます。

Adabas 拡張ファイルから ISN を削除する場合は、すべてのコンポーネントファイルの完全な ISN リストを指定できます。UPDATE 機能は、処理対象のコンポーネントファイルに適した ISN のみを自動的に選択します。

注意:
このパラメータは、LOB ファイルの ADALOD UPDATE 操作で指定できません。

DELISN:削除する ISN

DELISN は、削除するレコードの ISN のリストを指定します。 DDISN および DELISN パラメータをどちらも指定すると、2 つのリストの ISN が結合されます。 範囲リストは次のように指定できます。

DELISN=10-80,90,100-110 

範囲の重複や同じ ISN を二重に指定することは許可されません。 単一 ISN または ISN 範囲を 32 個まで指定できます。 Adabas 拡張ファイルから ISN を削除する場合は、すべてのコンポーネントファイルの完全なリストを指定できます。 UPDATE 機能は、リストから適切な ISN を選択し、それをコンポーネントファイルから削除します。

注意:
このパラメータは、LOB ファイルの ADALOD UPDATE 操作で指定できません。

DSREUSE:データストレージの再利用

DSREUSE は、レコード削除の結果、使用可能になったデータストレージのスペースを再利用するかどうかを指定します。

このパラメータは、UPDATE 機能の実行に対してのみ有効です。 DSREUSE の永続設定は変更されません。 この値を指定しないと、永続設定がデフォルトになります。

ETID:マルチクライアントファイルオーナー ID

ETID パラメータは、既存のマルチクライアントファイルに追加されたすべてレコードに新しいオーナー ID を割り当てます。 オーナー ID は、マルチクライアントファイルが最後にロードされたときに LOWNERID で指定されたオーナー ID の長さに自動的に調節されます。 ETID を指定しないと、入力ソースで指定されたオーナー ID が、ロードされたすべてのレコードで保持されます。

既存のファイルがマルチクライアントファイルであり、入力ファイルがマルチクライアントファイルからアンロードされなかった場合は、ETID パラメータを指定する必要があります。 既存のファイルがマルチクライアントファイルでない場合は、ETID を指定できません。

注意:
ETID パラメータを使用する場合、ADALOD ユーティリティはアクティブニュークリアスを必要とします。 ニュークリアスは、ETID 値を内部オーナー ID 値に変換します。

ISNREUSE:ISN の再利用

ISNREUSE は、削除されたレコードの ISN を新しいレコードに再割り当てできるかどうかを指定します。

この ISNREUSE 設定は、UPDATE 機能の実行中にのみ有効です。 ISNREUSE の永続設定は変更されません。 この値を指定しないと、永続設定がデフォルトになります。

LIP:ISN ワークプールサイズ

LIP は、削除する ISN を収めるワークプールのサイズを指定します。 このプールには、ISN ごとに 4 バイト、ISN 範囲ごとに 8 バイトが必要です。 値はバイト単位で指定し、数値のみ("2048" など)を指定するか、あるいは数値の後に "K" を付けて("2K" など)キロバイト単位で指定します。 LIP のデフォルトは、2000 バイトです。

LWP:ワークプールサイズ

LWP は、ディスクリプタ値のソートに使用されるワークプールの大きさを指定します。 この値は、数値のみでバイト単位で指定するか、あるいは数値の後に "K" を付けてキロバイト単位で指定します。 値が指定されない場合は、デフォルトで 1048576 バイト(または 1024K)が設定されます。ただし、ディスクリプタが非常に長いか、またはディスクリプタの数が著しく多いファイルに対して ADALOD の実行時間を短くする場合には、より大きな値を LWP に設定すべきです。 ソートデータセットとの問題を避けるため、比較的小規模なファイルを更新する場合には、LWP 値を小さめに指定してください。

最小ワークプールの大きさは、ソートデータセットのデバイスタイプごとに異なります。

ソートデバイス 最小 LWP 最小 LWP
バイト キロバイト
2000 106496 104K
2314 090112 88K
3375 131072 128K
3380 139264 136K
3390 159744 156K
MAXISN:ファイルに割り当てる最大 ISN

MAXISN パラメータを使用し、ファイルに対して新しい ISN 設定を指定できます。 現在のレコード件数と追加する ISN(レコード)件数の合計が現在の MAXISN 設定を超える場合は、このパラメータを指定する必要があります。 現在の設定を超えた値を指定することによって、アドレスコンバータに必要な追加スペースが決まり、ADALOD で新しいエクステントが割り当てられます。 MAXISN が現在の設定より小さい場合には、アドレスコンバータのスペースに変更はありません。

注意:
NOACEXTENSION がアクティブな状態で最後にファイルをロードした場合は、ファイルの MAXISN 設定を増やすことはできません。

MAXISN 設定は、予期されるすべての拡張に適した量に増やす必要があります。これにより、アドレスコンバータエクステントが早く消費されることを回避でき、割り当て済みのアドレスコンバータエクステントが最大数に達したためにファイルをアンロード/リロードしたり、ADAORD REORFASSO ユーティリティを実行する必要が発生しにくくなります。

オプションの ACRABN パラメータを使用すると、新しいアドレスコンバータエクステントを特定の RABN 番号から開始できます。 詳細は、ACRABN パラメータの説明を参照してください。

MAXISN パラメータを省略すると、古い MAXISN 値を超えた場合にのみ、新しいアドレスコンバータエクステントが割り当てられます。

MAXISN2:ファイルのセカンダリアドレスコンバータに割り当てる最大 ISN

ADALOD 入力ファイル内にスパンドレコードが存在するかどうかに関係なく、MAXISN2 の指定は任意です。 このパラメータを使用して、ISN におけるセカンダリアドレスコンバータ(AC2)のサイズが決定されます。 セカンダリアドレスコンバータは、セカンダリスパンドレコードのセカンダリ ISN を、セカンダリレコードが格納されているデータストレージブロックの RABN にマッピングするために使用されます。

ADALOD は、次の方式に従って、セカンダリ AC 内のスペースを使用できるように ISN マッピングの数を判断します。

  1. セカンダリ AC がまだ割り当てられていない場合は、セカンダリ AC ブロック 1 つが割り当てられます。

  2. 現在の MAXISN2 設定が MAXISN 値(予期される現在の最大プライマリ ISN 数)の 4 倍以上である場合は、追加のプライマリ ISN を割り当てるときと同じアルゴリズムを使用してセカンダリ ISN の数を決定します。

  3. 上記のいずれの条件も満たさない場合、セカンダリ AC のスペースは、次の 2 つの計算のうち小さい値として割り当てられます。

    • 旧 MAXISN2 設定の 10 倍(10 × oldMAXISN2)

    • 旧 MAXISN2 設定と MAXISN 設定の合計(oldMAXISN2 + MAXISN)

デフォルト値はありません。

NOUSERABEND:アベンドなし終了

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

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

NUMREC:追加する最大レコード件数

NUMREC は、追加するレコード件数を制限します。 NUMREC を指定すると、(入力データセットのエンドオブファイル条件によって ADALOD がすでに終了していない限り)指定数のレコードを追加した後で ADALOD は終了します。 このパラメータを省略すると、すべての入力レコードが追加されます。

入力データセット内のレコード数が NUMREC の指定値より多い場合、ADALOD は NUMREC で指定されたレコード数を追加した後、コンディションコード 4 で終了します。

注意:
このパラメータは、LOB ファイルの ADALOD UPDATE 操作で指定できません。

PASSWORD:ファイルパスワード

更新するファイルがパスワード保護されている場合は、このパラメータを使用して有効なパスワードを指定する必要があります。 PASSWORD にデフォルトはありません。

RESTART:中断 ADALOD 処理の再開

RESTART は、中断された ADALOD 実行を強制的に再開させるもので、中断までに達していた最終再開位置から再スタートが行われます。 再開位置とは、中間データセットから復元可能な実行処理の最終位置を意味します。

エラー条件定義によって ADALOD が中断された場合、再開が可能であるかどうかを示すメッセージが ADALOD によって発行されます。

ADALOD オペレーションを再開するときに、次の各パラメータを変更できます。

その他のパラメータを変更することはできません。 DDEBAND/EBAND、DDFILEA/FILEA、および DDISN/ISN データセットは変更できません。

SAVEDREC:シーケンシャルファイルへの削除レコードの保存

SAVEDREC は、削除したレコードをシーケンシャルデータセットに書き込むことを指定します。 データセットのフォーマットは、MODE=SHORT オプションを使用した ADAULD ユーティリティで作成されるものと同じです。

注意:
このパラメータは、LOB ファイルの ADALOD UPDATE 操作で指定できません。

SKIPREC:スキップするレコード数

SKIPREC は、更新処理を開始する前にスキップする入力レコード数を指定します。 デフォルトは 0 です(レコードがスキップされていない場合)。

注意:
このパラメータは、LOB ファイルの ADALOD UPDATE 操作で指定できません。

SORTDEV:ソートデバイスタイプ

ADALOD はディスクリプタ値のソートにソートデータセットを使用します。 SORTDEV パラメータは、このデータセットに使用するデバイスタイプを示します。 このパラメータは、使用するデバイスタイプが ADARUN DEVICE パラメータの指定と異なる場合にのみ必要です。

TEMPDEV:一時ストレージデバイスタイプ

ADALOD は、中間データセットを使用して中間データを格納します。 TEMPDEV パラメータは、このデータセットに使用するデバイスタイプを示します。 このパラメータは、使用するデバイスタイプが、ADARUN DEVICE パラメータで TEMP に割り当てられた標準のデバイスタイプと異なる場合にのみ必要です。

TEST:構文テスト

TEST パラメータは、処理を実際には行わずに構文のみをテストします。 指定したパラメータの構文だけがテストされ、値や変数の正当性はテストされません。

USERISN:ユーザー ISN 割り当て

USERISN=YES は、ファイルに対して USERISN オプションが有効になり、新規の各レコードに対してユーザーが入力データで ISN を指定することを示します。 USERISN=NO の場合、Adabas は、それぞれの新規レコードに ISN を割り当てます。

指定された USERISN 設定は、UPDATE 機能の実行中にのみ有効です。 USERISN の永続設定は変更されず、このパラメータが指定されない場合のデフォルトとなります。

ディスクリプタ値の ISN がハイパー出口によって変更されたハイパーディスクリプタを持つファイルで ADALOD UPDATE 機能を実行する場合、追加/ロード操作に対して USERISN=YES は不要になります。

USERISN=YES が指定されていないファイルからレコードを追加する場合は、ADALOD パラメータ USERISN=NO を指定し、更新するファイルに対して USERISN オプションを指定する必要があります。 この機能は Adabas Text Retrieval(TRS)に役立ちます。

Top of page

例 1

ADALOD  UPDATE FILE=6,MAXISN=18000
ADALOD         TEMPSIZE=10,SORTSIZE=5  

ファイル 6 にレコードを追加します。 ファイルの MAXISN を 18,000 に増やします。

例 2

ADALOD  UPDATE FILE=7,TEMPSIZE=10,
ADALOD         ETID=USER3,SORTSIZE=5

ユーザーのオーナー ID が USER3 であるレコードをマルチクライアントファイル 7 に追加します。

例 3

ADALOD  UPDATE FILE=8,DELISN=1000-1999,5000-5999
ADALOD         TEMPSIZE=10,SORTSIZE=5

ISN が 1,000~1,999 および 5,000~5,999 のレコードをファイル 8 から削除します。 入力データセットが指定されている場合は、レコードを追加します。

例 4

ADALOD  UPDATE FILE=6
ADALOD         DDISN,SAVEDREC
ADALOD         TEMPSIZE=10,SORTSIZE=5

ファイル 6 からレコードを削除します。 削除するレコードの ISN は入力データセットに含まれています。 削除したレコードを出力データセットに保存します。

例 5

ADALOD  UPDATE FILE=6,DDISN,LIP=20K,SKIPREC=500  
ADALOD         TEMPSIZE=5,SORTSIZE=10

ファイル 6 のレコードを追加および削除します。 削除するレコードを識別する ISN は入力データセット(DDISN)に含まれています。 ISN プールサイズを 20K に設定します。 入力データセットの最初の 500 レコードをスキップします。

Top of page

ISN の指定形式

DDISN または ISN データセットでは、ISN を 2 つの形式で指定できます。 1 つ目の形式は、31 ビットの ISN が指定されているすべての場合に使用できます。 レコードには、単一 ISN および ISN 範囲が混在できます。

2 つ目の形式では、32 ビットの ISN がサポートされ、バージョン 6 以上の Adabas でのみ使用できます。 各レコードでは、単一 ISN(最初のフルワードの X'00000000' で示される)または ISN 範囲(最初のフルワードの X'FFFFFFFF' で示される)のどちらかを指定できます。

レコードの最初のフルワードに X'00000000' または X'FFFFFFFF' 以外の値が含まれている場合は、31 ビット形式であると見なされます。 DDISN/ISN データセットには、両方の形式のレコードが含まれていてもかまいません。

形式 1:31 ビット形式

単一 ISN には 4 バイト必要です。 上位ビットを 0 に設定し、ビット 01~31 に ISN を指定します。

graphics/lod11_at_anchord.png

ISN 範囲には 8 バイト必要です。 最初の 4 バイトで、範囲の最初の ISN を単一 ISN として指定します。次の 4 バイトで、上位ビットを 1 に設定し、最後の ISN を指定します。

graphics/lod11_at_anchorc.png

次の例に、DELISN=10~80、90、100~110 に相当する値を含む可変長レコードを示します。

graphics/lod11_at_anchorb.png

形式 2:32 ビット形式

32 ビット形式の場合、各レコードの最初のフルワードは、レコードに単一 ISN または ISN 範囲のどちらが含まれているかを示します。 単一 ISN を示すには、最初のフルワードにゼロ(X'00000000')を指定し、ISN 範囲を示すには 1(X'FFFFFFFF')を指定します。 次の例では、最初のレコードに単一 ISN が含まれ、2 番目のレコードに ISN 範囲が含まれています。 2 つのレコードは、最初のフルワードを除き同一です。

graphics/lod11_at_anchora.png

Top of page

UPDATE データとスペースの要件

次の一般情報は、UPDATE 操作に関するデータ要件および ADALOD UPDATE によるスペース割り当ての方法について説明します。 スペース割り当ての詳細については、『Adabas DBA リファレンスマニュアル』を参照してください。

UPDATE 操作の入力データ

追加するレコードは、ADACMP または ADAULD ユーティリティで作成された圧縮形式のデータレコードである必要があります。 ADACMP の実行に使用するデータ定義は、フィールド定義テーブル(FDT)に含まれているように、レコードを追加するファイルの定義と一致している必要があります。

注意:
暗号化ファイルに追加するレコードは、ファイル内にすでに存在するレコードに対して使用されたサイファコードと同じものを使用して、すでに暗号化されている必要があります。

削除するレコードの ISN は、DELISN パラメータまたは入力データセットのどちらで指定してもかまいません。 入力データセットで指定する場合には、各 ISN を 4 バイトの 2 進数として指定する必要があります。 データセットのレコード形式は、VARIABLE BLOCKED である必要があります。 必要に応じて、Adabas 拡張ファイルに対して追加または削除するすべての ISN を指定できます。UPDATE 機能は、処理中のコンポーネントファイルに適した ISN を選択します。

UPDATE のスペース割り当て

レコードを追加する場合に、MAXISN に大きい値が指定されていると、ADALOD は追加のアドレスコンバータエクステントを割り当てます。 新しいエクステントのサイズは、新しい MAXISN と古い MAXISN の設定値の差を基にしています。 新しいエクステントのスペースが不足しているか、割り当て済みのエクステントがすでに最大数に達していると、エラーメッセージを出力して処理が終了します。

データストレージエクステントの追加が必要な場合、ADALOD はファイルに対して現在割り当てられているデータストレージエクステントの合計サイズの約 25 %の大きさの追加エクステントを割り当てます。 アドレスコンバータの場合、追加されたエクステントのスペースが不足しているか、割り当て済みのエクステントが最大数に達していると、エラーメッセージを出力して処理が終了します。

UPDATE ディスクリプタ情報の生成

レコードを追加する場合、ADALOD UPDATE は、すべてのディスクリプタ値および対応する新しいレコードの ISN のリストを生成し、この情報を中間データセットに書き込みます。

UPDATE を使用したアソシエータの更新

入力処理の前に、ADALOD UPDATE は、ファイルの既存のノーマルインデックスを中間データセットにコピーしますが、削除する ISN のディスクリプタ値は削除します。

ADALOD は、入力フェーズで中間データセットに書き込まれた情報をソートし、ソートされた値を現在のノーマルインデックスと結合します。 この処理中にノーマルインデックスがリオーダされ、アソシエータブロックパディングファクタがブロックごとに再設定されます。 その時点で、新しいアッパーインデックスが作成されます。

ディスクリプタの更新の結果発生した、部分的に占有されたブロックの空スペースは再利用されます。 このため、インデックスの最後に存在する空ブロック数が増える可能性があります。 リオーダ処理の結果、ノーマルインデックスやアッパーインデックスの 1 つ以上のエクステントが空になることがありますが、ADALOD はこれらのエクステントサイズの圧縮、削除、変更を行いません。

ノーマルインデックスまたはアッパーインデックスに新しい空スペースが必要な場合は、1 つ以上の追加エクステントが割り当てられます。 割り当てられた各追加エクステントのサイズは、インデックスに対して現在割り当てられている合計スペースの約 25 %です。 追加エクステントのスペースが不足しているか、割り当て済みのエクステントが最大数に達していると、ADALOD はエラーメッセージを出力して終了します。

Top of page

拡張ファイルの一括更新

ADALOD UPDATE を使用して拡張ファイルを一括更新する場合、個々のコンポーネントファイルに対してレコードの追加または削除を行う必要があります。 ただし、各コンポーネントファイルの処理は、同じ ADALOD コマンドを使用して行うことができます。

DELISN または DDISN を指定してレコードを削除する場合は、すべてのコンポーネントファイルから削除するすべての ISN のリストを指定できます。 ADALOD は、現在処理中のコンポーネントファイルに対して指定された適切な範囲の ISN 値のみを自動的に選択します。

USERISN=YES で新規レコードを追加するときも同じです。

USERISN=NO を指定して拡張ファイルに新しいレコードを追加する場合に、解放された ISN が存在しないと、ISN 範囲を広げることができない(すべてのコンポーネントファイルに対して NOACEXTENSION が有効)ため、新しいアドレスコンバータエクステントを割り当てることができません。 その代り、ADALOD は、エンドオブファイルになったときと同じようにインデックスを作成します。 ロードされなかった残りのレコードは後から SKIPREC パラメータを使用して別のコンポーネントファイルに追加することができます。

ADALOD は、各コンポーネントファイル間に渡ってのユニークディスクリプタ値のチェックは行いません。

次の例に、拡張ファイルに対する一括更新を示します(完全なジョブの関連部分のみを示しています)。

              .
              .
//DDEBAND    DD DSN=MOREDATA.LOAD.PART1-2,...
//DDKARTE    DD *
ADALOD UPDATE FILE=40,USERISN=YES
ADALOD        DELISN=9000001-9500000,12000001-14000000
ADALOD        SORTSIZE=...,TEMPSIZE=...
              .
              .
//DDEBAND    DD DSN=MOREDATA.LOAD.PART1-2,...
//DDKARTE    DD *
ADALOD LOAD   FILE=41,USERISN=YES
ADALOD        DELISN=9000001-9500000,12000001-14000000
ADALOD        SORTSIZE=...,TEMPSIZE=...
              .
              -

Top of page