Re: CDE chain for LPA
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
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
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
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