... You're indeed a genius! That was exactly the problem! Thank you!
No, I'm not a genius. I've just been in this trade a lot longer than you.
Regarding the LOAD macro, I would actually prefer to use it to load the module, but I do not want the module to be identified because I want my own module to be called first. Do you know of any way to "unidentify" a loaded module?
No, I don't.
Or maybe I could update the entry point address after the load?
Ah, now I think I see what you want to do, though I'm not sure why you would want to do it.
However, I guess that goes a bit deeper into internal structures than I would want, similar to your idea to do the loading on my own. (Btw, if I loaded the module into storage, wouldn't there still be the problem to link-edit addresses in the module?)
To use more jargon than I think you want, but ... you want to process the CESD data in the load module. The CESD data defines the external symbols in the module; its formats are documented reasonably well in the two Program Management manuals. If you can figure out how to load the module yourself analyzing the CESD data is not all that difficult.
This reminds me of something that happened in 1972. It had to be 1972 because it was before the data center moved out to the 'burbs later that year. One of my colleagues brought me a load module - a 1460 simulator, if my memory is correct. Its vendor maintained it using SUPERZAP. As it happened the SUPERZAP IDR area was full. The appropriate response, then as now, would be to link edit the module to create more IDR space, but the idiots that created the module arranged it so you couldn't relink the module; its entry point was at an address that was not an external symbol. I don't know if SUPERZAP of that era had an option to ignore an IDR full problem, which would be another way to resolve the problem. In any event the problem was similar to what I think is your problem; you want some sort of alternate entry point. Now, if your entry point is at an external symbol, you can specify it in the old linking loader with PARM='EP=symbol' or the equivalent in your program. If you are using the Binder's version of the linking loader, you can use the ENTRY statement in the SYSLIN data set.