On 10/12/2012 6:10 PM, Bill Planer wrote:
As best I recall, the subsystem's init routine LOADed a module into common and put it's entry point address into a CSA control block. When the module was called by an address space during normal execution, the module was no longer there. It turned out that the module had been deleted when the init routine terminated. Traditional subsystem init runs under master and any modules loaded by it belong to master. Subsystem inits that run under BEGINPARALLEL run under a TCB that terminates with the init routine, so any module loaded is deleted by task termination. There is a way to do this load such that the module won't be deleted at task termination, but I don't remember the details. I do remember that it was complicated enough that I decided that it wasn't worth the effort to fix.
When you specify GLOBAL=YES on the MVS LOAD macro, the module is loaded into CSA. When the TCB ends, the module is automatically deleted by normal EOT cleanup. One way to avoid this standard behavior is to prevent the contents supervisor (CSV) from creating a CDE for the module. You can do this by allocating your own area in CSA and LOADing the module using the ADDR= or ADDR64= keywords. Another option is to use the CSVDYLPA service to dynamically add the module to LPA.
-- Edward E Jaffe Phoenix Software International, Inc 831 Parkview Drive North El Segundo, CA 90245 310-338-0400 x318 [email protected] http://www.phoenixsoftware.com/ ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
