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