Changing z/OS system symbols is – easy – ish.

Z/OS provides system wide symbols. This is very useful because you can have configuration with &SYSNAME. within it – and so you can have one definition – and the value depends which system you are on.

The process of changing these symbols without an IPL may be trivial – or not.

What is my system currently using?

You can use the operator command D SYMBOLS . This gives output like

IEA007I STATIC SYSTEM SYMBOL VALUES 607          
 &SYSALVL.          = "2"                        
 &SYSCLONE.         = "1A"                       
 &SYSNAME.          = "S0W1"                     
 &SYSOSLVL.         = "Z1020500"                 

Where do these come from?

The system was IPLed with parm A80GK, this points to a member LOADGK in SYS1.IPLPARM, or the PARMLIB concatenation. This member had

IODF     99 SYS1                                                   
INITSQA  0000M 0008M                                               
SYSCAT   A5SYS1113CCATALOG.Z25A.MASTER                             
SYSPARM  NZ                                                        
IEASYM   (AU,GK)                                                   
NUCLST   00                                                        
PARMLIB  USER.Z25A.PARMLIB                            A5CFG1       
PARMLIB  FEU.Z25A.PARMLIB                             A5CFG1       
PARMLIB  ADCD.Z25A.PARMLIB                            A5SYS1       
PARMLIB  SYS1.PARMLIB                                 A5RES1       
NUCLEUS  1                                                         
SYSPLEX  ADCDPL                                                    

At the start of the IPL it displays

SYS1.IPLPARM ON DEVICE 0A82 SELECTED FOR IPL PARAMETERS    
LOAD   ID GK SELECTED                                      
NUCLST ID 00 SELECTED                                      
IODF DSN = SYS1.IODF99                                     
CONFIGURATION ID = OS390   . IODF DEVICE NUMBER = 0A82     
NUCLEUS 1 SELECTED                                         
IPL DEVICE: 00A80  VOLUME: A5RES1                          
MASTER CATALOG SELECTED IS CATALOG.Z25A.MASTER             
MEMBER IEASYMAU FOUND IN FEU.Z25A.PARMLIB                  
MEMBER IEASYMGK FOUND IN FEU.Z25A.PARMLIB                  

Which matches the LOADGK member.

This shows the symbols came from definitions IEASYMAU and IEASYMGK.

You can use DISPLAY IPLINFO to get

IEE254I  13.34.36 IPLINFO DISPLAY 594                      
 SYSTEM IPLED AT 13.10.56 ON 09/12/2022                    
 RELEASE z/OS 02.05.00    LICENSE = z/OS                   
 USED LOADWS IN SYS1.IPLPARM ON 00A82                      
 ARCHLVL = 2   MTLSHARE = N                                
 IEASYM LIST = 00                                          
 IEASYS LIST = WS (OP)                                     
 IODF DEVICE: ORIGINAL(00A82) CURRENT(00A82)               
 IPL DEVICE: ORIGINAL(00A80) CURRENT(00A80) VOLUME(A5RES1) 

So you can see for this IPL, LOADWS and member IEASYM00 was used.

Changing symbols dynamically.

You can update members in the PARMLIB concatenation, but activating them gets a bit harder.

The DISPLAY PARMLIB command displays the PARMLIB concatenation for example

PARMLIB DATA SETS SPECIFIED                                             
AT IPL                                                                  
ENTRY  FLAGS  VOLUME  DATA SET                                          
  1      S    A5CFG1  USER.Z25A.PARMLIB                                 
  2      S    A5CFG1  FEU.Z25A.PARMLIB                                  
  3      S    A5SYS1  ADCD.Z25A.PARMLIB                                 
  4      S    A5RES1  SYS1.PARMLIB                                      

I copied a member from ADCD.Z25A.PARMLIB, to USER.Z25A.PARMLIB with the same name, and edited that. The next time the member is used, the copy from USER.Z25A.PARMLIB will be used. This means you keep the original unchanged, and only change the copy. You may want to have a LOADxx without the USER…PARMLIB, in case you make a mistake and the IPL fails!

The SETLOAD command can be used to refresh system symbols via a LOADxx member.

  • If you have the LOADxx members in the PARMLIB concatenation, (and so are not using SYS1.IPLPARM) the SETLOAD WS,IEASYM, command will refresh the symbols, defined by LOADWS.
  • If you have the LOADxx members in SYS1.IPLPARM, then you need to use the command like
    • SETLOAD xx,IEASYM,DSN=SYS1.IPLPARM or
    • SETLOAD xx,IEASYM,DSN=SYS1.IPLPARM,VOL=A5SYS1
    • giving the name, and optionally the volume of the dataset containing the LOADxx member.

You can use a different LOADxx to that used at IPL – so you can change your symbols after the IPL has finished.

Note: The entire set of symbols are deleted, and the specified symbols added, so you need to reload all of them. For example if you specified IEASYM (xx,yy) at IPL, using SETLOAD with just IEASYMyy, you will lose the symbols from IEASYMxx.

One thought on “Changing z/OS system symbols is – easy – ish.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s