On Thu, 8 Aug 2019 at 07:35, Peter Relson <rel...@us.ibm.com> wrote: > Roughly forever, the way to do this has not been to do two LOADs. It had > been to do a BLDL, extract the length information (and the RMODE > information and the Page boundary information) from the directory entry, > do a suitable storage obtain, then do a LOAD with ADDR (or even, more > recently, LOAD with ADDR64). >
I wasn't sure the length from BLDL was correct under all reasonable circumstances. (No, I don't have a module > 16MB, or RMODE(SPLIT) or the like). But notably, we are using PDSEs, and I think of BLDL as returning load module directory style info. In this respect I am a little suspicious of the note on CSVQUERY OUTLENGTH that "The length returned is the number of bytes used to contain the module. This size can be different depending on whether the module was loaded from a PDS or a PDSE." That doesn't sound like the number I need to put on a STORAGE OBTAIN. I need the length of the module *as loaded*. But moving on... > I wrote "had been" because dynamic LPA (CSVDYLPA macro) has been available > for 20+ years now So my "Modern" is just a bit older than I thought... which accomplishes the function and also makes the named > module knowable to others (including diagnostic tooling). > This would seem to be a problem. I just want to have code loaded into common storage and relocated. I don't need or want anyone to be able to invoke it by name via LINK or the like; I keep track of the EP address, and of course enough info to free the storage when appropriate. With our ancient method there is no content management info maintained by the system, and hence no room for name clashes. I also need to be able to have different versions of the code loaded (perhaps by different versions or fix levels of the product) and existing in common storage at the same time. Reading about CSVDYLPA it appears that the member name from the dataset or file becomes known to the system, but that it is not an error to load the same name (even if actually from a different source) more than once, and so no need to avoid name clashes? Is there a downside to loading multiple copies/versions, and then deleting them (carefully, of course) out of the creation order? Presumably there's no performance impact if no one is doing a lookup by name. I'm curious what need there is to store into the module, I store the STOKEN of the loading program into the module so that the code can be sure it's talking to the right place no matter who invokes it. Perhaps CSVDYLPA can associate such data with the loaded image? Regardless, I can do that another way. but regardless, even with a page-protected module such as dynamic LPA > creates, that can be > accomplished if done CAREFULLY if the module is page-fixed using something > like the DATOFF macro in AMODE 64 or the "real space" or even STURA/STURG. > It's not so much the storing that's the problem; I understood that an LPA module that's marked REFR (and maybe just RENT) doesn't need to be paged out, and so my store might be silently lost. Probably I have this wrong, that is, if the change bit is on in a page it *will* be paged out if the frame is needed. In any case, thanks for the pointer. Old dog, new tricks, etc. Tony H. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN