Non-reentrancy can be the answer. Gil asked a great question about DELETE for non-reentrant. Since the input to DELETE is just the module name, the copy to be deleted is chosen according to some fairly simple "rule" (such as "I will delete the most recently module of this name loaded from this task that meets the authorization requirements") rather than any real understanding. (You cannot DELETE something LOADed from a different task.)
Nit: The OP used the terms "if a program of that name is already in storage" and also "Specifically, if program FOO is running". The former is what I'd view as correct (especially if we add "by some CSV approach that creates a CDE", so not load-with-addr). One never knows if a program is actually "running". It comes down to whether the search for a usable copy on the job pack queue succeeds. In order to be usable, it must have the same name and be reentrant. In some cases there might be additional criteria. Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
