モジュールは、FETCH および RELEASE ステートメントを使用して PL/I プログラムによって動的に取り出されたり、(ロードされたり)、解放されたり (削除されたり) します。
プロシージャー参照によって呼び出されたプロシージャーは、通常、プログラムの実行中ずっと主記憶域に常駐します。 ただし、必要とされるときにのみ、 プロシージャーを主記憶域にロードしておくこともできます。 つまり、呼び出しプロシージャーの実行中に、呼び出されたプロシージャーを 主記憶域に動的にロードし、あとで主記憶域から動的に削除します。
プロシージャーの動的ロードと動的削除が特に効果的なのは、呼び出しプロシージャーが実行されるつど、呼び出されたプロシージャーが必ず呼び出されるとは限らないときや、実行時間の短縮よりも主記憶域の節減のほうが重要であるときです。
FETCH ステートメントで入り口定数を指定すると、その入り口定数を含んでいる プロシージャーのコピーがすでに主記憶域に存在しているのでない限り、 そのプロシージャーをまず主記憶域にロードしなければ実行できないことを表します。 FETCH ステートメントで名前が参照されれば、 以下によってディスクからプロシージャーをロードすることも可能です。
CALL または関数参照の実行前にも実行後にも、FETCH ステートメントまたは RELEASE ステートメントに制御を渡す必要はありません。
どちらのステートメントがプロシージャーをロードした場合も、CALL ステートメント、CALL オプション、または関数参照が実行されると、普通の方法でプロシージャーが呼び出されます。
プロシージャーがすでに主記憶域にロードされていても、 エラーにはなりません。 取り出されたプロシージャーは、プログラム全体の実行が完了するまで 主記憶域に残しておくことができます。 RELEASE ステートメントを使用すれば、そのプロシージャーが占有していたストレージをいつでも解放することができ、別の目的で使用することができます。
FETCH と RELEASE は以下の規則と機能を備えています。