定義の記憶域
ローカル定義には自動記憶域が使用されます。 自動記憶域は、プロシージャーに対する呼び出しの間だけ存在する記憶 域です。自動記憶域の変数は、呼び出しの間にまたがってその値が保管されることはありま せん。
他方、グローバル定義には静的記憶域が使用されます。 静的記憶域は、プログラムまたはプロシージャーのすべての呼び出しの 間にわたって、メモリー内に常に位置を占めている記憶域です。 ここには、呼び出 しの間にまたがってその値が保存されます。
ローカル・フィールド定義に静的記憶域を使用することを指示するためには、 STATIC キーワードを指定してください。この場合には、プロシージャーに対する 各呼び出しでのその値が保存されることになります。STATIC キーワードを 指定した場合には、モジュールの初期化時に項目が初期化されます。
サイクル・モジュールにおいて、グローバル定義のための静的記憶域は RPG サイクルに従うため、前回の呼び出し終了時に LR がオンになっていた場合、次回のサイクル・メイン・プロシージャーの呼び出し時には値が変更されます。 ただし、ローカル静的変数については、サイクル・メイン・プロシージャーの LR が原因で再初期化されることはありません。
ヒント:
自動記憶域の使用により、実行時にプログラムで必要とされる記憶域の量が削減さ れます。 自動記憶域はプロシージャーの実行の間だけ割り振られるため、記憶域は大幅に 削減されます。 これに対して、プログラムと関連したすべての静的記憶域は、その静的記憶域を 使用するプロシージャーが呼び出されていなくても、プログラムが開始された時 に割り振られます。