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

Reply via email to