サイクル・メイン・プロシージャーの正常終了
LR 標識がオンで、H1 から H9 標識がオンでない時には、サイクル・メイン・プロシージャーが
正常に終了し、制御権が呼び出し元プロシージャーに戻されます。 LR 標識は、
次のようにしてオンに設定することができます。
- RPG プログラム・サイクルでプライマリーまたはセカンダリー・ファイルからの最終レコードが 処理される時は、暗黙的に。
- ユーザーが LR をオンに設定する時は、明示的に。
次の場合にも、サイクル・メイン・プロシージャーは正常に終了します。
- RETURN 命令が (ブランクの演算項目 2 で) 処理され、 H1 ~ H9 標識がオンではなく、LR 標識がオンである。
- RT 標識がオンで、H1 ~ H9 標識がオンでなく、LR 標識がオンである。
サイクル・メイン・プロシージャーが正常に終了すると、次のことが起こります。
- *ENTRY PARM 命令の演算項目 2 から結果フィールドへの転送 が実行される。
- 定義仕様書に「受け入れファイル名」が指定されているすべての配列および テーブルと、ロックされているすべてのデータ域データ構造が書き出される。
- このプロシージャーによってロックされているデータ域はすべてアンロックされる。
- オープンされているすべてのグローバル・ファイルがクローズされる。
- このプロシージャーが正常に終了したことを呼び出し元に示す ように戻りコードが設定され、その後呼び出し元に制御権が 戻される。
サイクル・メイン・プロシージャーへの次回の呼び出しでは、
エクスポートされた変数は別として、処理用に新しいコピーが使用可能になります (エクスポートされた変数は EXPORT キーワードを使用して定義されます。
これらの変数は、プログラムが活動化グループで最初に活動化されるときに 1 回だけ初期設定されます。たとえ LR が前の呼び出しでオンであっても、エクスポートされた変数は
新しい呼び出し時には最後に割り当てられた値のままです。 それらを再初期化したい場合は、手操作で
リセットしなければなりません)。
ヒント
通常は LR オンで終了して記憶域を解放するところを、指定された (持続
する) 活動化グループで実行している場合には、終了しないで戻ることを考慮
したいことがあります。 理由は次のとおりです。
- 活動化グループが終了するまで記憶域は解放されないので、LR オンで終了 しても、記憶域に関して少しも利点がない。
- 呼び出すたびにプログラムを初期設定し直すことを避ければ、 呼び出しのパフォーマンスが向上する。
これを行うのは、プログラムをその都度初期設定し直す必要がない場合のみにしてください。