containerContextDependent

containerContextDependent プロパティーは、独立型関数内の参照 (『関数』を参照) を、生成後に関数が置かれるコンテナー (メイン・パーツ) について解決することを指定します。 これは、コンテナーの宣言とインポートが、生成プロセス中に参照を解決するために使用されることを意味します。 独立型関数それ自体は、最上位レベルのパーツではありますが、参照解決に必要なすべてのパッケージを最終コンテナーがそれをインポートする限りはインポートする必要はありません。例えば、このプロパティーを関数が複数のプログラム内で使用されている状況で使用したい場合は、変数名は関数を呼び出すプログラムによってそれぞれ別々に解決されます。

containerContextDependent プロパティーは、独立型関数の場合にのみ使用してください。 VisualAge® Generator (言語によるライブラリーのサポートなし) で作成されたプログラムなど、プログラムとの互換性を求め、EGL では独立型関数をサポートしています。新規コード作成時には、独立型関数や containerContextDependent プロパティーを使用することはできません。

以下の最初のコード・セグメントは、パッケージ p から取ったものです。
package p;

Program pgm {includeReferencedFunctions = yes}
  function main()
    standaloneFunc1();
  end

  function functionInPgm() 
  end
end

DataItem intInP int end
次のコード・セグメントでは、 standaloneFunc1() に、(その関数を呼び出すコンテナー内にある) 関数に対する (つまり、 pgm という名前のコンテナー内の functionInPgm() に対する) 参照や、 また、コンテナーのパーツ範囲内で解決される (つまり、 pgm プログラムと同じパッケージである p で解決される) パーツへの参照が含まれています。 standaloneFunc2() では、独立型関数に containerContextDependent プロパティーが指定されていないため、 同じ参照は解決されません。 standaloneFunc3() は、参照にパッケージ名を含む限り、containerContextDependent なしでもパーツを参照できることを示します。
package p2;

function standaloneFunc1 { containerContextDependent=yes }
  // 関数への参照を解決
  // containerContextDependent により
  functionInPgm();
  
  // パーツへの参照を解決
  // containerContextDependent により
  myVar intInP;
end

function standaloneFunc2
  functionInPgm();   // 参照を解決できません
  myVar intInP;      // 参照を解決できません
end

function standaloneFunc3
  // パーツへの参照を次の理由により解決
  // パッケージ名で修飾
  myVar p.intInP;
end

互換性に関する考慮事項

表 1. 互換性に関する考慮事項
プラットフォーム 問題
JavaScript 生成 プロパティー containerContextDependent はサポートされません。

フィードバック