z/OS has many standard system libraries. A brief description of several libraries is appropriate here. The traditional libraries include:
SYS1.PROCLIB. This library contains JCL procedures distributed with z/OS. In practice, there are many other JCL procedure libraries (supplied with various program products) concatenated with it.
SYS1.PARMLIB. This library contains control parameters for z/OS and for some program products. In practice, there may be other libraries concatenated with it.
SYS1.LINKLIB. This library contains many of the basic execution modules of the system. In practice, it is one of a large number of execution libraries that are concatenated.
SYS1.LPALIB. This library contains system execution modules that are loaded into the link pack area when the system is initialized. There may be several other libraries concatenated with it. Programs stored here are available to other address spaces.
SYS1.NUCLEUS. This library contains the basic supervisor ("kernel") modules of z/OS.
SYS1.SVCLIB. This library contains operating system routines known as supervisor calls (SVCs).
These libraries are in standard PDS format and are found on the system disk volumes
I just think that if you don't know what's in your system library list then you don't know if you need to use STEPLIB or JOBLIB statement in your JCL to sepcify the search path for your private load modules. I am thinking in MVS way?
Joined: 20 Oct 2006 Posts: 1411 Topics: 26 Location: germany
Posted: Sun May 20, 2007 1:15 pm Post subject:
ds390,
unless you are a systems programmer, writing programs to assist/modify /customize the operating system, all your programs will require either STEPLIB or a JOBLIB statement.
Quote:
I am thinking in MVS way?
On a PC, because historically, a session (when you logon) is one user oriented - (leave servers out of this disscussion)- each user can have his own PATHs so that all binaries are accessable without explicit (like CD, SET PATH) PATH modification during runtime.
On the mainframe, when you logon to TSO, your session will have standard concatenation (altlib, etc... can modify that) in order to RUN things in foreground - within your TSO session.
JCL executes JOBs in 'background' which is outside of TSO and has nothing to do with the allocations of your TSO session. Your TSO session is nothing but a JOB that has been executed (started task) by virtue of your loggin on.
had you read the rest of the intro manuals at this link. (same as yours), you would not have asked this question, because I know that it is discussed.
There is the direct/grunt approach. If you get an 806 in your job, you need a STEPLIB or JOBLIB statement.
Last but not least................why is this in the TSO/ISPF forum? This belongs in the JCL forum, which probably has 80 or 90 threads on this subject, already. _________________ Dick Brenholtz
American living in Varel, Germany
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Sun May 20, 2007 11:01 pm Post subject:
Hi ds390,
The concept of a Job is fundamental to MVS, but think of it this way... almost any independently running program, or set of programs that you are likely to encounter as a new MVS user, is probably running as a JOB. Programs you run (submit) in batch are jobs. Your TSO user id is a job (technically that is not true, but it functions like a job in that it is defined by JCL and it can be canceled as a whole).
Once you get that concept understood, then go on to looking at things like search order for things like system definitions and executables.
It is a pretty common problem understanding where programs and files are found in MVS, and "where do I find the libraries my program uses?" is a good question. There is not really a good answer to your exact question, because the phrase 'system library list' does not have a clear meaning in MVS. For example, as Dick mentioned, there is a list of load libraries (executables) that you have allocated to (in this case 'allocated to' means 'associated with') your TSO user id but it is not exactly right to think of this as a system library list, at least in the way a Windows user would think of the system libraries, because this list of load libraries may contain some that are operating system related, some that are application related, and some that are just your 'personal' data sets. In other words, where Windows has, for example, C:\Windows\System32 as part of the PATH, and you can add your own directories, the same is true in MVS. HOWEVER... MVS has many other means of finding executable libraries. Have a look in the book for LPA and Link List for example. YOu don't have to have any specific allocations to LPA or Linklist libraries because they are searched automatically (windows and Unix do not do that quite the same way).
To make matters more complicated, a program can ask the system to search specific libraries also without you, your JCL, or any system configuration needing to know about it (for other readers, I'm referring to a program's ability to do dynaminc allocation and create a 'tasklib' when attaching a new TCB).
So... back to your question... how do you find the actual data sets defined to Linklist, LPA, and allocated to your TSO id or Job.
LPA and LINKLIST: These are the final locations searched by (almost) all program searches and are defined in system data sets like SYS1.PARMLIB or elsewhere (yes, you may have to find that too!). They can be changed by a system operator at any time, but you can see the current state by typing TSO ISRDDN on an ISPF command line and then typing LPA. That will create 2 fake ddnames in your list that contain that information.
Allocations to your TSO id: Again, use TSO ISRDDN. For executables, look for ddnames STEPLIB and ISPLLIB. Others may be involved too but those are the standard search orders.
Allocations to your job: Look at the JCL but if JCL PROCs are involved, you can ad MSGLEVEL=(2,2) to the job card and the browse the job output to look for ddname substitutions. STEPLIB and JOBLIB are probably of the most interest here.
Finding Parmlib: Remember I said you might have to find the system parmlibs? Again use TSO ISRDDN but type PARMLIB this time
These are very, very basic rules. By basic, I don't mean introductory or easy, I just mean that there are many ways that these guidelines can be altered. As Dick said, most search orders can be changed, and there are many unusual idiosyncrasies to MVS search rules (tasklibs cause steplib to be skipped, joblib has similar oddities, JCL overrides also have some unusual behaviors) but this is a start.
As you can tell, this question is so common, that it is one of the major reasons that ISRDDN was written. Again, there are no easy answers here, but read about search orders for load libraries (also check the description for LIBDEF ISPLLIB in the ISPF books) and read about the STEPLIB, JOBLIB, JCLLIB (for JCL, not executables), LPA and Linklist. Then play with some of the commands in ISRDDN (lin particular SEARCH and LOAD) to see some more info. That will give you a few more things to read about.
Joined: 01 Feb 2007 Posts: 1075 Topics: 7 Location: At Home
Posted: Mon May 21, 2007 2:28 am Post subject:
And just to make it simple: if they are your own personal libraries you WILL need to specify a STEPLIB/JOBLIB or JOBPROC/JCLLIB to pick up your programs and procedures. In 30+years I have never NEEDED to know what is concatenated - I just assume that system stuff is available by default and application stuff needs to be specified.
Reading semigeezer's reply, above, I have just learned a thing or two that has been going on behind the scenes and, although interesting in a nerdish sort of way, I have survived (maybe that is the appropriate word ) all these years without knowing too much about it. _________________ Utility and Program control cards are NOT, repeat NOT, JCL.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum