In pursuit of better performance, an enterprise server tries to not delete (unload) loaded programs.
A program will generally be loaded once and reused time and time again. Therefore, it is necessary that you make you programs serially reusable. This means that when your program receives control, it will not lose control until it terminates. Also, by the time the program exits, it should have restored any STATIC variables back to their original state if they are relied upon by other programs.
These considerations apply to all mainframe subsystems: CICS, IMS, and JCL batch (until job step termination).