z/OS PARMLIB Successful Practices
User Experience
Jack Schudel
University of Florida
schudel@[Link]
Tuesday, March 13, 2012
Session 10648
Online Session Evaluation
[Link]/SessionEvaluation
Tuesday, 3:00pm
Session # 10648
Title: z/OS PARMLIB Successful Practices
- User Experiences
D PARMLIB
IEE251I 05.00.41 PARMLIB DISPLAY
PARMLIB DATA SETS SPECIFIED
AT IPL
ENTRY FLAGS VOLUME DATA SET
1 S MVSIP1 [Link] on SYSRES
2 D SYS901 [Link] SHARED
3 S MVSIP1 [Link] on SYSRES
4 S MVSIP1 [Link] on SYSRES
Why multiple PARMLIBs?
• [Link]
• Provided as part of ServerPac
• Contains tailored members IFAPRD00 and others
• No SMP/E DDDEF
• [Link]
• Maintained by SMP/E
• Release specific IPCS, DAE and other members
• Currently recommended settings, subject to change
Why multiple PARMLIBs? (cont’d)
• [Link]
• Release or maintenance specific members
• Empty except during migration to new release
or maintenance level
• [Link]
• Installation specific members
• Common across all lpars
• Use system symbolics in suffix for lpar specific
members
Why [Link]?
• New release or maintenance may require new or
different options, datasets or OMVS filesystems.
• New release may have renamed something.
• With a local, overriding PARMLIB, rolling any changes
required for a new z/OS release into a plex just
requires changing the IPL address.
• Even in a mono-plex, having release dependant
options on the res pack makes it simple to switch
between releases, especially if you need to go back
several releases to reproduce a customer problem.
What’s in [Link]?
• For z/OS 1.11 to 1.12 Conversion:
• COMMNDxx
• COM='S CSF,ICSFPROG=CSFMMAIN‘ (1.11)
• COM='S CSF,ICSFPROG=CSFINIT‘ (1.12)
• BPXPRMnF
• <...>
• MOUNT FILESYSTEM('[Link].&SYSR1..JAVA6461')
• MOUNTPOINT('/usr/lpp/java/J6.0.1_64')
• TYPE(HFS) MODE(RDWR)
• <...>
How long does it stay there?
• Normally the production [Link] is empty
• Merged into shared PARMLIB once all members of the
sysplex are stable at the new level.
Where do you specify multiple
PARMLIBs?
[Link](LOADxx) (subset)
IEASYM (00,L)
SYSPARM 00
NUCLST 00
PARMLIB [Link]
PARMLIB [Link]
PARMLIB [Link]
PARMLIB [Link]
[Link] must be in the list or MVS will add it
How does IPL find LOADxx?
MVS IPL LOADPARM (ddddxxM.) specifies:
• dddd IODF and [Link] device address
• xx LOADxx suffix
• M | P | A Messages, Prompt, or both
• See “Loading the System Software” in MVS System Commands for details
Placement of LOADxx
During IPL, the system looks for LOADxx and NUCLSTxx
in the first dataset that it finds, using the following
order:
• [Link] through [Link] on the IODF
volume.
• [Link] on the IODF volume.
• [Link] on the sysres volume.
• see “Placement of LOADxx” in MVS Initialization and Tuning Reference
Placement of LOADxx
“Once the system opens the master catalog, the
system reads all other members from the
[Link] data set that is pointed to by the
master catalog. This [Link] might be
different from the [Link] data set to which
the LOAD parameter points.”
• see “Loading the System Software” in MVS System Commands
Other
Approaches
Jim Petersen, Home Depot
[Link] On release catalog volume
[Link] On release catalog volume
[Link] On SYSRES
• New master catalog created for each z/OS
Release.
• [Link] copied from old release and
updated as needed.
14
Jim Petersen, Home Depot
• Heavy use of Symbolics for such things as:
• Each CA Product Release Level (such as R120)
• Each CA Product Runtime Level (maintenance rollout
Level – RT1, RT2, RT3, up to RT5)
• Symbolics for zOS Release Level (ZOS112)
• Symbolics used for DB2 names and volumes the
libraries for that DB2 live on.
15
Jim Petersen, Home Depot
• When doing maintenance code new member such as
PROG02N which has changes in it.
• Then rename PROG02 to PROG02$ and PROG02N to
PROG02 before IPLing LPAR2
• Rename IEASYM00 to IEASYM0$ and IEASYM0N to
IEASYM00
• This is just a couple of examples of how we maintain
[Link] at Home Depot
• It is an evolving work as we discover new ways to
make our job easier.
16
Frank Lawrence, SunTrust
APLEX1 [Link]
APLEX1 [Link]
PI0RAP [Link]
VSAMA1 [Link]
• We still build a new Master Cat for each new release.
• '[Link]' is the production
SYSPLEX parmlib of everything that is identical throughout the
PLEX, and is shared by all members of the PLEX.
• '[Link]' is for each specific LPAR (one
unique to each LPAR). There are six LPARS in the PLEX (ATLA,
ATLB, PRPC, PRPD, PRNA, and PRNB).
Sam Knutson, GEICO
[Link] <-- Shared across Sysplex
[Link] <-- Shared across Sysplex
[Link] <-- on IPL volume
• We update the existing master catalog.
• Our PARMLIB's are concatenated in front of the IBM
SMP/E maintained PARMLIB on the sysres.
• We use System Symbols to use different members for
different releases/LPARs in the same Sysplex.
• [Link] for config data.
• [Link] for slip traps and other data
managed by non-systems staff.
Skip Robinson, SCE
ENTRY FLAGS DATA SET Sysres? Source/Content
1 D [Link] No Tailored content shared across sysplex
2 S [Link] Yes ServerPac/user, not defined to SMPE
3 S [Link] Yes ServerPac misc, SMPE target
4 S [Link] Yes ServerPac JES2 IPCS, SMPE target
SCE PARMLIB Data Sets
• Shared/customized installation library placed first
• Avoids unexpected collision with IBM supplied like-
named members
• OTOH must watch out for release changes
• We use [Link] as 'our sysres PARMLIB'
• Already supplied in ServerPac on sysres
• Already has appropriate RACF profiles everywhere
• E.g. Contains tailored IBM PROGxx members
PARMLIB Data Sets – War Story
• In a previous shop we placed the one and only
[Link] on sysres. That sounds sensible, but
in practice no one can control the rest of the
environment.
• We once had a near disaster when the network guy
renamed a VTAM library and updated APF list in the
current PARMLIB. The next time we migrated
maintenance, PARMLIB contained the old name. VTAM
would not come up. The data center was 400 miles
away. Fixing the problem remotely was a nightmare
;-(((
21
Member Naming Conventions
• Use &SYSCLONE for system specific members
• IEFSSN&SYSCLONE
• Use '#' suffix for new version, '@' for old version
• Place #/@ as far right as possible within name
• E.g. successive versions of IEFSSN00
• IEFSSN0# Æ IEFSSN00 Æ IEFSSN0@
• Use rename or copy to manage versions, not edit
• Preserves ISPF statistics for tracking purposes
• PDF [Link] embedded in line numbers
• E.g. nnnnnn23 indicates a line changed in 01.23
• Useful not just for PARMLIB
Specifying Member Lists
• Follow the bouncing ball
• In LOADxx: IEASYM (01,02,03,L)
• In IEASYM02: SYSPARM(X1)
• Determined by Hardware Name plus LPAR Name
• &SYSCLONE set to ‘X1’
• In IEASYSX1:
• PAGE=(SYS1.PAGELPA0.$SYS&SYSCLONE,
• SYS1.PAGECOM0.$SYS&SYSCLONE,
• SYS1.PAGELOC0.$SYS&SYSCLONE,
• [Link].$SYS&SYSCLONE,L)
Special handling for PROGxx
• In IEASYS00: PROG=(I1,U1,I2,U2,I3,U3)
• PROGIx in [Link] contains all IBM entries
• Derived from ServerPac supplied PROG00
• I1: Prolog plus IBM-supplied APF entries
• Includes "DYNAMIC" and "DEFAULTS" statements (R13)
• I2: IBM-supplied linklist entries
• I3: "LNKLST ACTIVATE NAME(LNKLST00)"
• PROGUx in [Link] contains non-IBM entries
• U1: ISV and local APF entries
• U2: ISV and local linklist entries
• U3: Dynamic exit definitions
Handling System Version Differences
Problems with handling multiple versions of the same
PARMLIB member in multiple PARMLIB data sets
[Link] members may have to be kept in sync for long
periods. Who remembers to edit them all every time an
update needs to be made?
[Link] remembers to collapse 'temporary' differences
back into a single shared member?
[Link] is the right time to reconsolidate?
References
• z/OS V1R12.0 MVS System Commands
• SA22-7627-24
• Loading the System Software
• Displaying PARMLIB Information
• z/OS V1R12.0 MVS Initialization and Tuning Reference
• SA22-7592-21
• LOADxx (system configuration data sets)
• Placement of LOADxx
• Symbolic Parmlib Parser
Questions?
27
Appendix
[Link](IEASYM00)
/* NER1 system using MVSPROD partition */
SYSDEF LPARNAME(MVSPROD) SYSNAME(NER1)
SYSDEF LPARNAME(MVSPROD) SYMDEF(&NERSYSID.='P')
SYSDEF LPARNAME(MVSPROD) SYMDEF(&NERTCPIP.='NER')
/* NER2 system using MVSALT partition */
SYSDEF LPARNAME(MVSALT) SYSNAME(NER2)
SYSDEF LPARNAME(MVSALT) SYMDEF(&NERSYSID.='A')
SYSDEF LPARNAME(MVSALT) SYMDEF(&NERTCPIP.='NERA')
/* NER5 system using MVSYES partition */
SYSDEF LPARNAME(MVSYES) SYSNAME(NER5)
SYSDEF LPARNAME(MVSYES) SYMDEF(&NERSYSID.='Y')
SYSDEF LPARNAME(MVSYES) SYMDEF(&NERTCPIP.='NERY')
/* all system defaults */
SYSDEF SYSCLONE(&SYSNAME(-1:1)) /* 1 character system id
SYSDEF SYMDEF(&SYSR2='&SYSR1(1:4).S&SYSR1(6:1)') /* 2nd IPL volume
SYSDEF SYMDEF(&SYSR3='&SYSR1(1:4).T&SYSR1(6:1)') /* 3rd IPL volume
SYSDEF SYMDEF(&NERGRSRP.='JOIN') /* GRS default
SYSDEF SYMDEF(&NERRMFCH.='NOCACHE') /* RMF default
/* NER1 exceptions to override defaults */
SYSDEF LPARNAME(MVSPROD) SYMDEF(&NERRMFCH.='CACHE') /* CACHE stats only 1
/* NER5 exceptions to override defaults */
SYSDEF LPARNAME(MVSYES) SYMDEF(&NERGRSRP.='NONE') /* GRS=NONE on sandbox
[Link](IEASYS00)
ALLOC=&SYSCLONE.0,
CMD=(&SYSCLONE.0,00),
CON=(&SYSCLONE.0,L),
COUPLE=&SYSCLONE.0,
GRS=&NERGRSRP,
LOGREC=SYS1.&SYSNAME..LOGREC,
OMVS=(&SYSCLONE.0,&SYSCLONE.F),
PROD=(00,&SYSCLONE.0),
PROG=(00,L0,E0),
SMF=&SYSCLONE.0,
PAGE=(SYS1.&SYSNAME..[Link], +
SYS1.&SYSNAME..[Link], +
SYS1.&SYSNAME..PAGE.LOCAL01,L)