http://www.flickr.com/photos/microraptor/5240669099/

Please refer to the MVS Initialization and Tuning Reference’  or the MVS Initialization and Tuning Guide’

Time and time again I was told to reference either the “MVS Initialization and Tuning Reference” or the “ MVS Initialization and Tuning Guide” more than any other manuals in the entire z/OS Internet Library.

Both these manuals cover the settings and configuration of MVS which is for the most part everything that’s in the PARMLIB dataset.

Unfortunately these manuals are about as exciting as reading the phone book.  Do I suggest Millennial Mainframers going through the entire manuals and comparing it to what your shop uses?  Yes!

It took me awhile but I grabbed our shop’s SYS1.PARMLIB listing and went through the entire listing and looking up what each setting did in the the “Init and Tuning Reference” primarily,  using my handy WikidPad to as I journeyed through.

I often reference my initial notes and discoveries to this day.

PARMLIB

 Why is PARMLIB so important?

If trying to use microprocessor terms,  PARMLIB is like the System Settings in Windows or OS X.  Within this dataset are the that defaults and setting for the entire z/OS system.  Knowing where to poke around as a Systems Programmer or where to ask for changes is an essential skill set.

More often than not, if you’re having issues with z/OS the first place you will want to check is the PARMLIB.

Here’s a few important members just to give you an idea how PARMLIB works:

IEASYMxx

Defines static system symbols.

SYSDEF LPARNAME(TST1) 
SYSNAME(TST1) 
SYMDEF(&SYSETC='&SYSNAME') 
SYMDEF(&RMDSCLS='N') 
SYMDEF(&S='&SYSNAME(-2:2)') 
SYMDEF(&SN='101') 
SYMDEF(&DOMAIN='CNMT1') 
SYMDEF(&NVASSLU='Z') 
SYMDEF(&MASTYPE='MASTEST') 
SYSPARM(T1)

Now if I were to use the symbolic &SYSNAME in another member the system will translate this into TST1

 

 

PROGxx

PROGxx (authorized program list, exits, LNKLST sets and LPA)

The PROGxx parmlib member contains the following optional statement types:

  • APF, which defines the format and contents of the APF-authorized program library list.
  • EXIT, which controls the use of exits and exit routines.
  • SYSLIB, which allows for the definition of alternate data sets for the system defaults (SYS1.LINKLIB, SYS1.MIGLIB, SYS1.CSSLIB, SYS1.SIEALNKE, SYS1.SIEAMIGE, and SYS1.LPALIB) at the beginning of the LNKLST and the LPALST concatenations.
  • LNKLST, which controls the definition and activation of a LNKLST set of data sets for the LNKLST concatenation.
  • LPA, (Link Pack Area) which defines the modules to be added to, or deleted from, LPA after IPL.
  • REFRPROT, which indicates that REFR programs are protected. Use the REFRPROT statement type to specify that REFR programs are protected from modification by placing them in key 0, non-fetch protected storage, and page protecting the full pages
  • NOREFRPROT, which indicates that REFR programs are not protected. 

Adding APF authorization to libraries  is sometimes a necessity when installing new software, and if not will result in a Return Code error when the system attempts to use these libraries.  In this example there is three”APF ADD” statements.

SYS1.PARMLIB(PROGAU)
********************************* Top of Data *****************
APF FORMAT(DYNAMIC) 
APF ADD DSNAME(ASM.SASMMOD1) VOLUME(******) 
APF ADD DSNAME(BACU.PRODINFO.WEBA.LOAD) VOLUME(FIN002) 
APF ADD DSNAME(BACU.TDLA.SIZDLOAD) SMS 

In this example:

Line #4:  ADD datasetname  “ASM.SASMMOD1” and assigns the volume to ‘******‘ which means that the system is to use the volume serial number of the current system residence (SYSRES) volume.  At our shop we have several “SYSRES” volumes and this can change depending on the LPAR

Line #5:  ADD datasetname  “BACU.PRODINFO.WEBA.LOAD” specifically using VOLUME(FIN002)  

Line #6:  ADD datasetname “BACU.TDLA.SIZDLOAD” which in on a volume that is SMS managed.

 

IEASYSxx

This is the grand daddy of all the members!  This member as per the reference manual:

You can specify system parameters using a combination of IEASYSxx parmlib members and operator responses to the SPECIFY SYSTEM PARAMETERS message. You can place system parameters in the IEASYS00 member or in one or more alternate system parameter lists (IEASYSxx) to provide a fast initialization that requires little or no operator intervention.

In many cases the IEASYSxx define what the other members in PARMLIB will be using.  For example CMD=00 completes the name of the parmlib member COMMNDxx which will be COMMAND00 , which contains commands to be issued internally during master scheduler initialization.

Here’s an example of IEASYSXX (system parameter list):

SYS1.PARMLIB(IEASYS00) 
********************************* Top of Data *****************
ALLOC=00,               ALLOCATION SYSTEM DEFAULTS
CLOCK=00,               PROMPT OPERATOR FOR TOD
CLPA,                   CLEAR LINK PACK AREA - REMOVED VIO
CMB=(COMM,200),         CMB SET TO 200 FOR COMMS DEVICES
CMD=00,                 COMMANDS AUTOMATICALLY ISSUED AT IPL
CON=00,                 CONSOLE CONFIGURATION DEFINITION
COUPLE=00,              CROSS-SYSTEM COUPLING FACILITY (XCF)
CSA=(3200,153600),      3.5 MB CSA AND 150MB ECSA
DIAG=00,                CONTROL CS TRACKING AND GFS TRACE
DUMP=NO,                PLACE SVC DUMPS ON DASD DEVICES
FIX=00,                 FIXED LPA LIST
GRS=STAR,               GRS COMPLEX MODE
GRSCNF=00,              GRS CONFIGURATION
GRSRNL=00,              GRS RESOURCE NAME LISTS
IKJTSO=00,              TSO/E COMMANDS AND PROGRAMS
IOS=00,                 MISSING INTERRUPT HANDLER (MIH)
LPA=(00,L),             SPECIFY LPALST00 AS LPA LIST
LOGCLS=L,               SYSLOG
LOGLMT=999999,          MUST BE 6 DIGITS,MAX WTL MESSAGES QUEUED
LOGREC=SYS1.LOGREC.&SYSNAME.,
MAXUSER=600,            (SYS TASKS + INITS + TSOUSERS) < 600
MSTRJCL=00,             MASTER SCHEDULER JCL
OPI=YES,                ALLOW OPERATOR OVERRIDE TO IEASYS00
OPT=00,                 SPECIFY IEAOPT00 (SRM TUNING PARMETERS)
PAGE=(PAGE.PLPA.&SYSNAME.,
      PAGE.COMMON.&SYSNAME.,
      PAGE.LOCAL1.&SYSNAME.,
      PAGE.LOCAL2.&SYSNAME.,
      PAGE.LOCAL3.&SYSNAME.,L),
PLEXCFG=MULTISYSTEM,   TYPE OF PLEX, ANY ALLOWS GRS-STAR OR MIM
PROD=00,               PRODUCT ENABLEMENT POLICY
PROG=(EX,AU,LK,LS),    EXITS AUTHORIZATION AND LINKLST
REAL=0,                NO V=R STORAGE
RSVNONR=800,           ASVT RESERVED ENTRIES(REPLACEMENTS)
RSVSTRT=5,             ASVT RESERVED ENTRIES(STARTS)
SCH=00,                SVC TABLE SCHED00
SMF=00,                SELECT SMFPRM00, SMF PARMETERS
SSN=00,                SUBSYSTEM DEFINITIONS
SQA=(16,1200),         SQA=(16*64K),ESQA=(1200*64K)
SVC=00,                INSTALLATION-DEFINED SVCS
UNI=01,                UNICODE CONVERSION SERVICES
VAL=00,                SELECT VATLST00 DEFAULT
VIODSN=SYS1.STGINDEX.&SYSNAME.,
VRREGN=64              DEFAULT REAL-STORAGE REGION SIZE DEFAULT
******************************** Bottom of Data ***************

This is just a fragment of what an actual PARMLIB would consist of.  Keep in mind if you made changes to the PARMLIB they might not even take effect until the next IPL or until you issue a refresh command of some kind.  More importantly PARMLIB changes could seriously impact the system at large!

So please ‘PARMLIB‘ responsibly!