サブプロシージャーのローカル変数の場合、STATIC キーワードは、データ項目が静的記憶域に記憶され、それにより、データ項目が定義されているプロシージャーに対する呼び出しの間はその値が保留されることを指定します。 このキーワードは、サブプロシージャーの中でのみ使用することができます。グローバル・フィールドはすべて静的です。
データ項目は、それが含まれているプログラムまたはサービス・プログラムが初 めて活動化された時に初期化されます。 通常のサイクル処理の一部としてグローバル定義について再初期化が行なわれ た場合であっても、データ構造が再び再初期化されることはありません。
STATIC が定義されない場合には、ローカルに定義されたすべてのデータ項目は自 動記憶域に記憶されます。 自動記憶域に記憶されたデータは、すべての呼び出しごとにその始めに初期化さ れます。 プロシージャーが反復して呼び出された場合には、各呼び出しごとに記憶域の固有 のコピーが得られます。
制御仕様書で THREAD(*CONCURRENT) が指定されているモジュール内の変数の場合、STATIC(*ALLTHREAD) を使って、静的変数の同じインスタンスをすべてのスレッドで使用するように指定します。 並行スレッド・モジュール内の静的変数に *ALLTHREAD が指定されていない場合、その変数はスレッド・ローカル記憶域に置かれます。 つまり、各スレッドが、その変数のインスタンスを個別に持つことになります。
Java メソッドの場合、STATIC キーワードは、そのメソッドが静的であることを指定します。STATIC が指定されていないと、そのメソッドはインスタンス・メソッドであると想定されます。 Java メソッドに「静的」属性が設定されている場合に限り、STATIC キーワードをプロトタイプにコーディングする必要があります。 プロトタイプに STATIC キーワードが指定されている場合には、*ALLTHREAD パラメーターを使用することはできません。