Re: Re: Unix "which" command equivalent for MVS ?

Rick Fochtman <[email protected]> Wed, 23 Jun 2010 09:09:53 -0500
Newsgroups gmane.comp.emulators.turnkey-mvs
Message-ID <[email protected]>
The order of search for a program is:

JPA --- Programs that are already in your address space
TASKLIB (If present)
STEPLIB
JOBLIB
LINKPACK
LINKLIST

I might have gotten LINKPACK and LINKLIST switched, but this is the 
basic search order. SVCLIB and NUCLEUS are NOT part of the program 
search. Whether or not a module might be in FIXED LINKPACK has no 
bearing on the search mechanism.

Type 1 & 2 SVC's are located in the nucleus, while Type 3/4 are located 
in LINKPACK. I forget where Type 6 SVC code is located. SYS1.SVCLIB 
usually contains I/O appendages only.

Rick
--------------------------------------------------------
Michael wrote:

>  
>
>
>
> As far as I remember from MVS it sort of works like this:
>
> 1) At IPL time you when you R 00 you can specify an alternative spec. 
> telling the Nucleus Initialization Program (NIP) to use multiple 
> IEASYSnn members of SYS1.PARMLIB, e.g. R 00,SYSP=(00,01). Otherwise it 
> defaults to SYS1.PARMLIB(IEASYS00). You generally use this for 
> testing. In production, usually you just go with the default.
>
> 2) IEASYSnn in turn tells NIP what PARMLIB members to use to get 
> specific parameters for SMF, Dump datasets, Performance parameters, 
> and so on. As regards your question, it includes parameters naming 
> various lists of modules and libraries and how to handle them:
>
> - CLPA tells NIP to create the Link Pack Area (LPA) loading the 
> modules contained in SYS1.LPALIB. When you R 00,CLPA at IPL it tells 
> the system to rebuild this. This is not a list.
>
> - FIX lists name modules from SYSY1.SVCLIB, SYS1.LINKLIB and 
> SYS1.LPALIB to be placed in a fixed LPA which lasts for the life of 
> the IPL.
>
> - BLDL or BLDLF list names modules to be placed in a pageable or fixed 
> BLDL or "Build list".
>
> - MLPA list names modules to be placed in a temporary LPA extension.
>
> - LNK lists name libraries to be concatenated with SYS1.LINKLIB when 
> searching for a program.
>
> 3) So, when you IPL, it creates what approximates to your UNIX $PATH 
> for the system, including loading a lot of frequently used routines 
> into different areas of fixed and pageable storage. Then, when looking 
> for a routine itself, or when running a job the system looks for 
> programs in a certain order:
>
> - Nucleus first, I guess (Type 1 SVC routines have to go here)
> - Various Link Pack Areas (fixed, then pageable, etc.)
> - SYS1.SVCLIB and SYS1.LINKLIB
> - Any other libraries in the Link list
> - STEPLIB
> - JOBLIB.
>
> The last two you can specify in JCL.
>
> For definitive explanations do a web search for "MVS Initialization 
> and Tuning" and you will find lots to read (you are already doing 
> this), including various versions of the manual for MVS, MVS/XA, 
> MVS/ESA OS/390, z/OS, explanations of the order in which things happen 
> at IPL time, pretty pictures, and many very detailed explanations of 
> individual parameters and what they do. The "Init and Tuning Guide" is 
> indispensable for a working MVS systems programmer.
>
> As far as I know, there's no exact equivalent of $PATH, and no single 
> way to locate a program the way "which" does, but you could do as as 
> Gordon has suggested, or run a job to EXEC IDCAMS and do various 
> lists, or you could write a TSO Clist to do various lists.
>
> >From web searches, yours is quite a popular request and it looks like 
> various folks have done things with REXX and Perl to get a solution.
>
> You might also like to look into the TSO command LIBLIST:
>
> LIBLIST P(progname) - lists all linklist & LPA libs, and shows
> which one has progname in it.
>
> I can't check this out further myself right now 'cos I am rebuilding 
> my system.
>
> Enjoy!
> --- In [email protected] 
> <mailto:turnkey-mvs%40yahoogroups.com>, "Gordon SCOTT" 
> <gsscottgordon@...> wrote:
> >
> > Hi there !
> >
> >
> >
> > Simple to to an "LD" of all the progs in your LIBLIST either with 
> "sserv",
> > "lserv" or "pserv". Look at ESA/390 Principles and Operation. I'm 
> getting
> > too old for this !
> >
> >
> >
> > Gordon SCOTT
> > Software Engineer & Consultant
> >
> > 17 rue Professeur Rene Franquet
> > 51100 REIMS
> >
> > Tél : 03 51 85 57 75
> > Mobile : 06 82 14 65 67
> >
> > This e-mail, any attachments and the information contained therein 
> ("this
> > message") are confidential and intended solely for the use of the
> > addressee(s). If you have received this message in error please send 
> it back
> > to the sender and delete it. Unauthorized publication, use, 
> dissemination or
> > disclosure of this message, either in whole or in part is strictly
> > prohibited.
> > **********************************************************************
> > Ce message éléctronique et tous les fichiers joints ainsi que les
> > informations contenues dans ce message ( ci après "le message" ), sont
> > confidentiels et destinés exclusivement l'usage de la personne 
> laquelle ils
> > sont adressés. Si vous avez reçu ce message par erreur, merci de le 
> renvoyer
> > à son émetteur et de le détruire. Toutes diffusion, publication, 
> totale ou
> > partielle ou divulgation sous quelque forme que se soit non expressément
> > autorises de ce message, sont interdites.
> > **********************************************************************
> >
> >
> >
> > Weinberg's Second Law: If builders built buildings the way 
> programmers wrote
> > programs, the first woodpecker to come along would destroy civilization.
> >
> > De : [email protected] 
> <mailto:turnkey-mvs%40yahoogroups.com> 
> [mailto:[email protected] 
> <mailto:turnkey-mvs%40yahoogroups.com>] De la
> > part de Mike Stramba
> > Envoyé : lundi 21 juin 2010 18:22
> > À : [email protected] <mailto:turnkey-mvs%40yahoogroups.com>
> > Objet : [turnkey-mvs] Unix "which" command equivalent for MVS ?
> >
> >
> >
> >
> >
> > *nix has a handy command "which".
> >
> > From the man page :
> >
> > which [options] [--] programname [...]
> >
> > Which takes one or more arguments. For each of its arguments it prints
> > to stdout the full path of the executables that would have been exe-
> > cuted when this argument had been entered at the shell prompt. It does
> > this by searching for an executable or script in the directories listed
> > in the environment variable PATH using the same algorithm as bash(1).
> >
> > Is there an equivalent command for MVS?
> >
> > If not how would I write one?
> >
> > I'm reading through 'ABC's of System Programming for OS390', and VOl
> > #2, Chapter 4 "LPA, LNKLST, authorized libraries", and chapter 1,
> > "IPL" have been helpful, in my attempt to understand how MVS searches
> > for executables.
> >
> > There seem to be similarities with it and MVS38j (lnklst ...etc), but
> > there are enough differences to pose a few "challenges" ;)
> >
> > Mike
> >
>
>