RESERVED 属性は、STATIC EXTERNAL を暗黙指定します。さらに、変数が RESERVED 属性を持つ場合、 アプリケーションは以下の条件に従います。
変数が RESERVED 属性を持つ場合、 その変数がパッケージ内に保存されていない限り、INITIAL 値は無視されます。
|
コンパイル単位に RESERVED 属性の変数があり、 それがその変数用の保存パッケージではない場合、 そのコンパイル単位は、保存パッケージを含むロード・モジュールの一部分であるか、 または保存パッケージを含む別のロード・モジュールから 変数をインポートしなければなりません。 後者の場合、宣言で RESERVED 属性の IMPORTED オプションを 指定しなければなりません。
owns_x: package exports(*) reserves(x); dcl x char(256) reserved init( ... ); dcl y char(256) reserved init( ... ); dcl z char(256) reserved(imported) init( ... ); end; owns_y: package exports(*) reserves(y); dcl x char(256) reserved init( ... ); dcl y char(256) reserved init( ... ); dcl z char(256) reserved(imported) init( ... ); end; owns_z: package exports(*) reserves(z); dcl z char(256) reserved(imported) init( ... ); end;
上記の例では、パッケージ owns_x が変数 x の ストレージを保存し初期設定します。このパッケージは、パッケージ owns_y と同じロード・モジュールに連係されていなければなりません。 また、このロード・モジュールは、パッケージ owns_z が連係された ロード・モジュールから変数 z をインポートしなければなりません。