ファイル記述内のフィールドの変更の影響

システムは、レコード様式記述内容の情報を使用して、レベル識別コードを決定します。ファイル記述内でのフィールドの変更は、レベル識別コードの変更をもたらします。 キー・フィールドまたは選択/除外フィールド内の変更は、新しいアクセス・パスを使用するプログラムに予期しない結果を生じさせる可能性があります。

外部的に記述されたデータを使用するプログラムをコンパイルするときに、 コンパイラーは、コンパイルするプログラムの中にファイルのファイル記述を コピーします。システムは、このプログラムを実行するとき、プログラムのコンパイル時の レコード様式が、ファイルに対して現在定義されているレコード様式と同じで あるかを調べることができます。省略時の値はレベル検査の実行です。システムは、レコード様式が結び付けられるファイルの作成時に、個々の レコード様式に固有のレベル識別コードを割り当てます。システムは、レコード様式記述内容の情報を使用して、レベル識別コードを決定します。この情報には、レコード様式の合計の長さ、レコード様式名、定義されたフィールドの数と順序、 データ・タイプ、フィールドのサイズ、フィールド名、フィールド内の小数部の桁数、および、 フィールドにヌル値が使用できるかどうか、が含まれています。レコード様式内のこの情報に変更を加えると、レベル識別コードが変更されます。

以下の DDS 情報はレベル識別コードに影響を及ぼさないので、ファイルを 使用するプログラムをコンパイルし直さなくても、キーワードを変更できます。

キー・フィールドまたは選択/除外フィールドを変更してもレベル検査は 行われませんが、この変更によって、新しいアクセス・パスを使用する プログラムに予期しない結果が生じる可能性があることに留意してください。たとえば、キー・フィールドを得意先番号から得意先名に変更すると、 レコードの検索順序が変わり、そのファイルを処理するプログラムで予期 しない問題が発生する場合があります。

レベル検査を指定した (または省略時値として指定されている) 場合は、 使用するファイルのレベル識別コードが、ファイルのオープン時にプログラム のファイルのレベル識別コードと比較されます。両方の識別コードが異なる 場合には、変更された状態を知らせるメッセージがプログラムに送られ、変更 によりプログラムが影響を受ける可能性があります。この場合、変更を含めるように、プログラムをコンパイルし直す必要があります。

もう 1 つの方法はファイル記述を表示して、変更によりプログラムが影響を 受けるかどうかを判別する方法です。「ファイル・フィールド記述の表示 (DSPFFD)」コマンドを使用して記述を表示することも、 あるいは、原始ステートメント入力ユーティリティー (SEU) がある場合は、ファイルの DDS が入っているソース・ファイルを表示することができます。

ファイルに定義された様式レベル識別コードは、 「ファイル記述の表示 (DSPFD)」コマンドを使用して表示することができます。レベル識別コードを表示する場合には、ファイル識別コードではなく、レコード様式識別コードが比較されることに注意してください。

ファイルにおけるすべての変更が、必ずしもプログラムに影響を及ぼす わけではありません。たとえば、ファイルの終わりにフィールドを追加し、プログラムがその 新しいフィールドを使用しない場合、プログラムをコンパイルし直す必要はありません。変更してもプログラムに影響が及ばない場合は、 LVLCHK(*NO) を指定した 「物理ファイルの変更 (CHGPF)」コマンドまたは 「論理ファイルの変更 (CHGLF)」コマンドを使用して、 そのファイルのレベル検査を取り消すことができます。または、LVLCHK(*NO) を指定した 「データベース・ファイル一時変更 (OVRDBF)」 コマンドを入力して、 レベル検査なしでプログラムを実行することもできます。

レベル検査は実行することをお勧めします。LVLCHK(*YES) を指定すると、データベースの保全性は良くなります。LVLCHK(*NO) を指定することによって生じる結果は、必ずしも予期できません。