EXTERNAL データの共用

個別にコンパイルされた ILE COBOL プログラム (一連の ILE COBOL ソース・プログラムのプログラムを含む) では、EXTERNAL 文節を使うことによってデータ項目を共用することができます。 この EXTERNAL データは、弱エクスポートとして処理されます。 強エクスポートと弱エクスポートについては、「ILE 概念」を参照してください。

EXTERNAL 文節は、ILE COBOL プログラムの WORKING-STORAGE SECTION の 01 レベルのデータ記述で指定し、次の規則が適用されます。

  1. EXTERNAL グループ項目に従属する項目も EXTERNAL です。
  2. データ項目に使用した名前は、同一プログラム内の他の EXTERNAL 項目の名前として使用することはできません。
  3. VALUE 文節を、グループ項目、または従属項目である EXTERNAL に対して指定することはできません。
  4. EXTERNAL データを初期設定することはできません。 EXTERNAL データの実行時の初期値は未定義です。ユーザーのアプリケーションで EXTERNAL データ項目の初期設定が必要ならば、メイン・プログラム中でそれらを明示 的に初期設定することが推奨されます。

実行単位内の ILE COBOL プログラムのうち、項目のデータ記述が、その項目を含むプログラムと同じであるものからは、 そのデータ項目にアクセスして処理をすることができます。 たとえば、プログラム A に次のデータ記述がある場合、

01 EXT-ITEM1          PIC 99 EXTERNAL.

プログラム B の WORKING-STORAGE SECTION 内のデータ記述を同じにすることによって、そのデータ項目にアクセスすることができます。

同じ名前付き EXTERNAL データ項目を宣言しているすべてのモジュール・オブジェクトにおいては、 その EXTERNAL データ項目のサイズはすべて同じでなければなりません。 名前が同じでサイズが異なる EXTERNAL データ項目がコンパイル単位の複数の ILE COBOL プログラム内で宣言されている場合、 その中の最長のサイズがそのデータ項目の長さとして使用されます。

さらに、名前が同じでサイズが異なる EXTERNAL データ項目が、 同じ活動化グループで活動化される複数のプログラム・オブジェクトまたはサービス・プログラムで宣言されており、 後から活動化されたプログラム・オブジェクトまたはサービス・プログラム内に、 名前が同じでサイズが大きい EXTERNAL データ項目がある場合、 後から活動化されたプログラム・オブジェクトまたはサービス・プログラムの活動化は失敗します。

複数の ILE COBOL プログラムで宣言された同じ名前のデータ項目におけるタイプの整合性が ILE COBOL コンパイラーによって強制されることはありません。 これらのデータ項目の使用を整合性のあるものにするのは、プログラマーの責任です。

EXTERNAL データ項目にアクセスするどのプログラムも、この項目の値を変更する可能性があることに注意してください。 この文節は、保護しなければならないデータ項目には使用しないでください。