NEWFIELD 機能では、ファイルに 1 つまたは複数のフィールドを追加します。 新フィールド定義がフィールド定義テーブル(FDT)の末尾に追加されます。
注意:
ディスクリプタフィールドの定義はレコード構造から独立していますが、ディスクリプタフィールドがレコードの最初に配列されず、論理的に物理レコードの終了を超えている場合、パフォーマンスの理由から、そのレコードに対するインバーテッドリストエントリが生成されないことに注意してください。
このケースでインバーテッドリストエントリを生成するには、ファイルのアンロード(SHORT
モードで)、圧縮解除、および再ロードが必要です。あるいは、アプリケーションプログラムを使用してフィールドをファイルの各レコードの最初に再配列します。
NEWFIELD では、実際のデータストレージデータを新しいフィールドに指定できません。データは、後から Adabas 追加/更新または Natural コマンドを使用して指定できます。
Adabas 拡張ファイルにフィールドを追加するときは、個別コンポーネントファイルそれぞれ にフィールドを追加する必要があります。 コンポーネントファイルでの NEWFIELD オペレーションの実行ごとに変更を確認するメッセージおよびコンディションコード 4 が返されます。
このドキュメントでは、次のトピックについて説明します。
FILE では、フィールドを追加するファイル番号を指定します。 ファイルとして、Adabas システムファイルは使用できません。
FNDEF では、Adabas フィールド(データ)定義を指定します。 追加の各フィールドごとに 1 つの FNDEF ステートメントが必要です。 フィールド定義エントリを構成するのに使用する構文は次のとおりです。
各定義は、ADACMP ドキュメントで、ADACMP ユーティリティに関して説明されているフィールド定義構文に従っている必要があります(「FNDEF:フィールド定義およびグループ定義」と「FNDEF:ピリオディックグループ定義」の「フィールド定義ステートメント」セクション)。
次の制約に注意してください。
サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、またはフォネティックディスクリプタは指定できません。
文字列の記述やシーケンス番号は指定できません。
MU または PE フィールドを追加するときにオカレンス番号を指定しても無視されます。
最初の FNDEF ステートメントにレベル番号を設定するときは、次のルールが適用されます。
レベル番号 01 は常に許可されます。
レベル番号 02 以降は、このフィールドの既存グループへの追加を意味します。 したがって、次のルールが適用されます。
通常のグループ(ピリオディックグループ以外)であれば、フィールドを追加できます。
グループが PE グループである場合、ファイルのファイルコントロールブロック(FCB)がない場合、すなわち、ファイルが KEEPFDT オプションで削除されているか、または、Adabas Online System FDT 定義機能を使用して FDT が定義されているが、ファイル定義機能が実行されていない場合のいずれかに限って、ファイルを追加できます。
機能の実行中にエラーになると、ユーティリティは、エラーメッセージを出力してユーザーアベンド 34(ダンプあり)またはユーザーアベンド 35(ダンプなし)で終了します。
NOUSERABEND を指定すると、ユーティリティは、エラーメッセージを出力してもアベンドしません。 代りに、メッセージ "utility TERMINATED DUE TO ERROR CONDITION"(エラーのためユーティリティを終了します)を表示してコンディションコード 20 で終了します。
ファイルパスワード ファイルがパスワード保護されている場合、このパラメータは必須です。
これらのパラメータは、サブフィールドやスーパーフィールドの追加に使用できます。 各定義は、ADACMP ユーティリティで説明されたサブフィールド/スーパーフィールドの定義構文に従っている必要があります。 詳細については、「COMPRESS機能:Adabas ファイルの圧縮」を参照してください。
このパラメータは、実際に処理を行わずに構文をテストします。 指定したパラメータの構文だけがテストされ、値や変数の正当性はテストされません。 ADADBS 機能で TEST パラメータを使用する詳細については、「TEST パラメータによる構文チェック」の項を参照してください。
ファイル 24 にグループ AB(フィールド AC および AX で構成)を追加します。
ADADBS NEWFIELD FILE=24 ADADBS FNDEF='01,AB' ADADBS FNDEF='02,AC,3,A,DE,NU' ADADBS FNDEF='02,AX,5,P,NU'