<snip>
How can one determine where a module is obtained from when the module is
in a concatinated dataset list?
So for example you want to load module A and your dataset list is:
//modules dd disp=shr,dsn=hlq1.ds1 has modules qwert
// dd disp=shr,dsn=hlq1.ds2 has modules asdf
// dd disp=shr,dsn=hlq2.ds5 has modules zxcv
So now you would get in return that module A comes from hlq1.ds2
</snip>
As has been mentioned, BLDL and DESERV are the answers to the question of
"which numbered data set in this concatenation has A?".
Finding the data set name itself is more involved (perhaps using a service
such as RDJFCB).
<snip>But is there any way "after the LOAD"? IOW I have already loaded the
module and now I want to learn the source. I don't know. Does CSVQUERY or
similar return this info?
</snip>
z/OS itself does not, and will not, do anything to capture this
information as a general approach when it does the LOAD because z/OS has
no need for it and there would be negative performance ramifications of
locating the information.
Relying on the intentionally undocumented contents of CSVQUERY's OUTPDATA
is unwise. That parameter is provided so that the returned data can be
input to other services which are in synch with the implementation.
If you'd like a hint of something we might document in the future, with
data available today, it's the 8 byte data set key (CSVQUERY OUTDSKEY
keyword).
That consists of a 4-byte UCB address and the CCHH of the data set extent
(this is information retrieved from the DEB for the concatenation as
identified by BLDL/DESERV). It is possible to work with that data along
with additional info (such as the VTOC, I think) and determine the name of
the data set.
But the OP's use case is not limited to modules. Thus any CSVQUERY
information is not helpful in general. So doing it yourself via
BLDL/DESERV against the opened concatenation or using the approach Tom
Conley mentioned would work. I'd guess that many sites already have some
tool that can "locate" within an "opened DD" a member and tell you the
data set name in which the member lives.
Peter Relson
z/OS Core Technology Design