モジュール識別情報の除去

モジュール識別情報とは、モジュール・オブジェクトとともに記憶できる 3 種類のデータのことです。 このデータにより、モジュール・オブジェクトはデバッグするか、再作成せずに変更するか、 あるいは中間言語最適化プログラムで最適化することができます。 モジュール・オブジェクトが作成されているなら、このデータは除去することしかできません。 データが除去されると、そのデータに代わるモジュール・オブジェクトを再作成しなければなりません。 データには、次の 3 つのタイプがあります。

中間言語データ
*ILDTA 値によって表されます。 このデータは、モジュール・オブジェクトを中間言語最適化プログラムによって最適化できるようにするために必要です。 現在、このタイプのデータの作成をサポートしているのは、ILE C コンパイラーだけです。
作成データ
*CRTDTA 値によって表されます。 このデータは、コードをマシン・インストラクションに変換するために必要です。 モジュール・オブジェクトが CRTCBLMOD コマンドを使用して作成される場合、 マシン・インストラクション (MI) テンプレートがモジュール・オブジェクトに含められます。 MI テンプレートは、明示的に除去されるまで表示され続けます。 モジュール・オブジェクトの最適化レベルを変更するためには、 モジュール・オブジェクトにこのデータがなければなりません。
デバッグ・データ
*DBGDTA 値によって表されます。 このデータは、モジュール・オブジェクトをデバッグできるようにするために必要です。 モジュール・オブジェクトが CRTCBLMOD コマンドを使用して作成される場合、デバッグ・データがモジュール・オブジェクトに含められます。 デバッグ・データのタイプと量は、DBGVIEW パラメーターによって決定されます。

すべての識別情報を除去すると、モジュール・オブジェクトはその最小サイズに圧縮されます。 すべての識別情報を除去すると、モジュール・オブジェクトを再作成しない限り、 どんな方法でもモジュール・オブジェクトを変更することはできません。

モジュール・オブジェクトからあるタイプのデータを除去したり、すべてのタイプのデータを除去したり、 またはいずれも除去しないようにしたりするには、モジュール処理 (WRKMOD) コマンドを使用します。 コマンド行に WRKMOD と入力すると、「モジュールの処理」画面が表示されます。 オプション 5 (表示) を選択し、変更の必要がある属性値を表示します。 「モジュール情報の表示」画面は、図 26 に示されています。

まず、作成データ・パラメーターの値を調べてください。 値が *YES の場合、作成データが存在し、除去可能です。 値が *NO の場合、除去するための作成データはありません。 モジュール・オブジェクトは、作成データを再作成してマシン・インストラクション・テンプレートを組み込むのでない限り、 再変換することはできません。

次に、次ページ・キーを押すと、モジュール・オブジェクトの情報がさらに表示されます。 デバッグ・データ・ パラメーターの値を調べてください。 値が *YES の場合、デバッグ・データが存在し、モジュール・オブジェクトはデバッグできます。 値が *NO の場合、デバッグ・データは存在せず、 モジュール・オブジェクトは、デバッグ・データを再作成してデバッグ・データを組み込むのでない限り、デバッグすることはできません。 識別情報を変更するモジュール・オブジェクトについて、 オプション 2 (変更) を選択してください。 CHGMOD コマンド・プロンプトが表示されます。 識別情報除去 プロンプトに指定されている値を上書き入力してください。

モジュールの強制再作成 パラメーターを使用すると、 モジュール・オブジェクトの再作成を可能にすることができます。 最適化レベルが変更された場合、作成データが除去されていない限り、 モジュール・オブジェクトは常に再作成されます。 デバッグ・データを除去し、最適化レベルは変更せずにプログラム・オブジェクトを再変換する場合には、 モジュールの強制再作成 パラメーター値を *YES に変更しなければなりません。

変更する追加モジュール・オブジェクトのプロセスを繰り返します。 同じプログラム・オブジェクト内で変更するモジュール・オブジェクトが 1 つであっても複数であっても、 システムがそれらのモジュール・オブジェクトを検出すると、 すべてのインポートが解決されるので、プログラム作成時間は同じです。

プログラム・オブジェクト内でモジュール・オブジェクトの最適化レベルの変更を終了したら、CRTPGM コマンドを使用してプログラム・オブジェクトを再作成するか、 または UPDPGM コマンドを使用して、新しいモジュール・オブジェクトによって既存のプログラム・オブジェクトを更新してください。