STATIC 属性を持つと宣言された変数は、プログラムの実行の前に割り振られます。 それらは、プログラムが終了するまで割り振られたままになっています。 静的変数の割り振りについての制御は、実行中のプログラムには与えられません。
|
STATIC は外部変数のデフォルトですが、内部変数が STATIC であってもかまいません。 またこれは、パッケージ内で宣言された変数のデフォルトでもあり、いずれのプロシージャーの範囲内でもありません。 静的変数を参照できるかどうかについては、有効範囲に関する通常の規則に従います。 次の例では、変数 X は、プログラムの実行中は継続して割り振ら れていますが、プロシージャー B の中、または B に 含まれているブロックの中だけで参照することができます。 変数 Y は STATIC 属性を獲得し、またプログラムが実行している間割り振られています。
Package: Package exports (*);
dcl Y char(10);
A: proc options(main);
B: proc;
declare X static internal;
end B;
end A;
C: proc;
Y = 'hello';
end C;
end Package;
INITIAL 属性を使用して静的変数を初期設定する場合、初期値は制限付き式でなければなりません。 またエクステントも、制限付き式として指定されなければなりません。