Re: CDE chain for LPA

2007-11-02 Thread Johnny Luo
Peter,

Thanks for your notes. This one, plus your old post from 1999, has delivered
a good description for LPA.

Concerning your question, I feel it hard to answer. Actually I'm not in the
process of doing any 'meaningful' task. I don't know whether  'curiosity'
could be a reasonable explanation.

I apologize for my not making it clear at the very beginning.

On 11/1/07, Peter Relson <[EMAIL PROTECTED]> wrote:

> What are you trying to accomplish or find out? CSVQUERY will locate
> information about an LPA module. CSVINFO can run through all the LPA
> modules given your exit routine control for each. Those are the intended
> interfaces made available by z/OS.
>
> Peter Relson
> z/OS Core Technology Design
>
> --
Best Regards,
Johnny Luo

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


CDE chain for LPA

2007-11-01 Thread Peter Relson
As none of the information that you seek constitutes programming
interfaces, I am reluctant to be very specific without understanding why
you have a need for it.

LPA consists of
PLPA (built from LPALSTxx)
MLPA (built from IEALPAxx)
FLPA (built from IEAFIXxx)
device support modules
dynamic LPA (built from CSVDYLPA, SETPROG LPA, and LPA statement in PROGxx)

PLPA is represented by an "LPA directory" of LPDEs. CVTLPDIA is not the
address of a queue. That field itself is not necessarily anything that you
can use directly unless you are AMODE 24. The 3 byte field CVTLPDIR within
CVTLPDIA is the address of the PLPA directory of LPDEs which happens
currently to be an array, not a queue. The others are all represented by
CDEs on the "active LPA" queue.

You write "Since we can load the module to CSA and modify this queue to
reflect the change, dynamic LPA is available." I hope you did not mean "we"
as in "your program" modifies this queue directly. That is, and always has
been, unacceptable (although far from unknown).

It is not necessarily true that any queue is searched. There is also a hash
structure. In many cases after doing a hash search, the active LPA queue is
searched, and that is to account for the "unacceptable" practice which I
mentioned earlier. It is certainly true that if there is a copy of module M
both in PLPA and also in active LPA, that a LOAD or CSVQUERY by name will
locate the active LPA copy. And if there are multiple copies of M in active
LPA, the most recently added copy will be found, with the caveat that the
rule applies to things added by supported mechanisms.

The main difference beween LPDEs and CDEs, aside from the bit that
indicates it is one vs the other is that (major, not alias) CDEs point to
an "extent list" (lengths and addresses of each extent), and (major, not
alias0 LPDEs contain only one extent and that extent is contained in the
last bytes of the LPDE.

What are you trying to accomplish or find out? CSVQUERY will locate
information about an LPA module. CSVINFO can run through all the LPA
modules given your exit routine control for each. Those are the intended
interfaces made available by z/OS.

Peter Relson
z/OS Core Technology Design
--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


Re: CDE chain for LPA

2007-10-31 Thread Johnny Luo
I hate to answer my own question cause it means I didn't do enough work
before asking.

I just wrote a program to scan LPDE queue via CVTLPDIA and found that
LPDECHN of the first LPDE is zero and it's impossible for a chain. Then I
guess it might be an array-like structure, not a chain. So I increased my
pointer by 40 each time until a x'' of LPDECHN is encountered.  It
works to some extent: all entry names of LPA directory are printed except
that some names are non-displayable characters. Anyway, since CVTLPDIA is
not supposed to be a programming interface, it doesn't matter.

Then I searched the archive again. This time I'm using the keyword
'CVTLPDIR' and hit an old post from 1998 which answers my question exactly.
I should have used that keyword earlier.

The following is an abstract from what Peter Relson said in that post:

-

Modules in the LPA directory are those specified during IPL via
LPALSTxx. Modules on the LPA CDE queue (also known as the active LPA
queue) are those specified during IPL via IEALPAxx and IEAFIXxx as
well as modules after IPL that were defined by an authorized caller of
the IDENTIFY service against something in LPA. In addition,
vendor-added LPA modules, and those added (OS/390 R4) using dynamic
LPA services appear on this queue.

Note that CVTQLPAQ is not an intended programming interface, and any
program that searches that queue by picking up the pointer in that
field and running the queue itself will not locate all of the "active
LPA" modules (in particular those added using dynamic LPA).
CSVQUERY and CSVINFO are the intended programming interfaces to
search and scan LPA.
---



On 11/1/07, Johnny Luo <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I know for a job step there is a CDE chain (JPAQ) which describes all
> modules in JPA (or CSA if LOAD GLOBAL is used). However, for LPA it's not so
> clear to me.  I have searched the archive and could not find a satisfying
> answer. I hope I can get some help here.
>
> My current understanding is that, for LPA, there are two separate queues
> to manage it.
>
> The first is the LPDE queue which is built for PLPA and itself resides in
> LPA. Unlike CDE, the last part of LPDE describes the virtual storage area
> used by the corresponding module.  CVTLPDIA points to this queue.
>
> And for other parts of LPA(FLPA, MLPA) there is a CDE queue just like
> JPAQ. CVTQLPAQ can be used to find it and I believe it is in CSA or SQA.
> Since we can load the module to CSA and modify this queue to reflect the
> change, dynamic LPA is available.
>
> Of course this queue is always searched before the LPDE queue as far as
> LPA is concerned.
>
> Can you help me to verify that? I have worked on this for some time -_-
>
> Thanks.
> Johnny
>
>



-- 
Best Regards,
Johnny Luo

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html


CDE chain for LPA

2007-10-31 Thread Johnny Luo
Hi,

I know for a job step there is a CDE chain (JPAQ) which describes all
modules in JPA (or CSA if LOAD GLOBAL is used). However, for LPA it's not so
clear to me.  I have searched the archive and could not find a satisfying
answer. I hope I can get some help here.

My current understanding is that, for LPA, there are two separate queues to
manage it.

The first is the LPDE queue which is built for PLPA and itself resides in
LPA. Unlike CDE, the last part of LPDE describes the virtual storage area
used by the corresponding module.  CVTLPDIA points to this queue.

And for other parts of LPA(FLPA, MLPA) there is a CDE queue just like JPAQ.
CVTQLPAQ can be used to find it and I believe it is in CSA or SQA.  Since we
can load the module to CSA and modify this queue to reflect the change,
dynamic LPA is available.

Of course this queue is always searched before the LPDE queue as far as LPA
is concerned.

Can you help me to verify that? I have worked on this for some time -_-

Thanks.
Johnny

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html