再コンパイルの対象

アプリケーション・データベースに変更を施したとき、何の再コンパイルが必要になるかを、例を挙げて解説します。

次の例を考えてみましょう。

ファイルにはそれぞれOAMがある。

DEPTABファイルのOAMには、DEPTABファイルのレコードを更新するファンクションがある。

PSLMSTファイルのOAMにも、PSLMSTファイルのレコードを更新するファンクションがある。

PSLMSTファイルのOAMには、DEPTABファイルを読み込んで処理する妥当性規則がある。

ここでDEPTABファイルの物理ファイル定義を変更(フィールドの追加/削除/属性変更)した場合、DEPTABファイルおよびそれをもとにした論理ファイル、OAMを生成し直さなければなりません。しかしこのとき、PSLMSTのOAMを生成し直す必要はあるでしょうか。

PSLMSTファイルの妥当性規則は、DEPTABファイルも参照するようになっています。従業員ファイルに新しい従業員データを追加したとき、その部門コードはDEPTABファイルに登録されているものでなければならない、というわけです。したがってPSLMSTファイルのOAMは、DEPTABファイルを開き、ファイルを検索して妥当性検査を行う必要があるからです。なぜなら、部門コードはDEPTABファイルにあるからです。この検査は、DEPTABファイルのOAMを呼び出して行うわけではありません。したがって、PSLMSTファイルのOAMも再コンパイルしなければ、実行時にOS/400レベルのチェック・エラーが発生します(このエラーについては『IBM Database Guidelines』を参照)。

これをまとめると次のようになります。

物理ファイルの定義を変更したら、それをコンパイルし直して、操作可能な状態に変換しなければなりません。この物理ファイルにアクセスするOAMも再コンパイルが必要です。

データ間の関係モデルを検討すれば、変更による影響範囲を把握する助けになります。妥当性規則の中に変更したファイルを参照する記述がないか、という点も確認してください。 

バッチ制御を使っている場合もOAMの再コンパイルが必要です。

次のトピックも参照してください。

再コンパイルが必要になる条件