Changing System Symbols

System symbols can be changed, added or deleted by the SETLOAD xx,IEASYM command (see z/OS MVS System Commands. for full details) and can be changed or added by the IEASYMU2 program. Updated symbols may not be transported to other systems and therefor may not be usable, for example, for job JCL interpretation or automatic restart manager (ARM) processing. Update symbols with care. If you are not careful in how you update symbols, you could end up with different tasks using different values for a symbol you have changed. For example, if you have a long-running REXX exec, it could obtain the value of a symbol when it starts, and then continue to use that value thereafter. So even though you have updated the value of the symbol, that REXX exec will continue to use the old value. One safe use of updated symbols is for symbols that are used only in catalog aliases.

When you update symbols, the entire system symbol table is re-built, and the old system symbol table remains in storage; this storage is never freed, for system integrity reasons. As a result, you can avoid wasting common storage if you do a group of updates together instead of doing individual updates. The system symbol table is in subpool 245 (ESQA) and may be as large as 32512 bytes. The size depends upon the number of symbols that you have defined. In general, the number of bytes in the table can be calculated as the sum of:
The size of the current system symbol table can be viewed by the DISPLAY SYMBOLS,SUMMARY command. An example of the command output is:
SY1  IEA994I STATIC SYSTEM SYMBOL INFO   
SYMBOLS DEFINED: 12                      
CURRENT TABLE SIZE: 344 BYTES            
MAX TABLE SIZE: 32512 BYTES  

Also, z/OS® V2R1 provides CHECK(IBMSUP,SUP_SYMBOL_TABLE_SIZE) as part of the IBM® Health Checker for z/OS to let you view the current size and to let you set a threshold so that you will be alerted if/when the current size approaches the maximum size too closely.

The IEASYMU2 program is provided in SYS1.LINKLIB in z/OS V2R1 as a replacement for the IEASYMUP program, which had been provided only by OBJ in SYS1.SAMPLIB and with documentation only in the IBM redbook SG24-5451. As of z/OS V2R1, IEASYMUP must not be used. If the IEASYMUP OBJ provided in SYS1.SAMPLIB is re-linked and then executed, it will indicate that you must use either the new SETLOAD xx,IEASYM command or the IEASYMU2 program. Do not use a pre-z/OS V2R1 IEASYMUP on a z/OS V2R1 system.

IBM recommends that you not use both the IEASYMU2 program and the SETLOAD xx,IEASYM command unless you do so intentionally and carefully. Updates made by the IEASYMU2 program are temporary and will be lost if you subsequently issue the SETLOAD xx,IEASYM command unless you have made corresponding updates in the appropriate IEASYMxx parmlib members. You could use RACF® profiles to enforce that either IEASYMU2 or SETLOAD xx,IEASYM not be used. The SETLOAD xx,IEASYM command is protected by the MVS™.SETLOAD.IEASYM entity in the OPERCMDS class; the IEASYMU2 program is protected by IEASYMUP.symbolname entities in the FACILITY class.

To execute the IEASYMU2 program, you would run the following JCL (noting that IEASYMU2 will be in the LNKLST so no joblib or steplib should be used):
//IEASYMU2 JOB ...
//IEASYMU2 EXEC PGM=IEASYMU2,PARM='...'
The input parameter is specified using the PARM keyword on the EXEC card, in the format:
PARM=′SYMNAME1=VALUE1 SYMNAME2=VALUE2 ...SYMNAMEN=VALUEN′
where:

IEASYMU2 return codes

In the return code descriptions in Table 1, "xxxxxx" identifies which input symbol is the source of the error ("000001" corresponds to the first input symbol, and so on).

Table 1. IEASYMU2 return codes
Return code Explanation
0 Success
00000008 Missing parameter.

No parameters were provided. Correct the input.

xxxxxx0C Symbol name contains ampersand

The symbol name has an ampersand; this is not allowed. Correct the input.

xxxxxx10 Bad symbol name length

A symbol name length is not in the range 1-8. Correct the input.

xxxxxx14 Bad symbol value length

A symbol value length is longer than the symbol name length plus one. Correct the input.

00010018 Too many symbols

More than 255 input symbols were specified. Correct the input.

xxxxxx1C Reserved symbol

An attempt to define or change a reserved symbol (one of the symbols defined by z/OS - SYSPLEX, SYSNAME, SYSCLONE, SYSR1, SYSALVL, SYSOSLVL). Correct the input.

xxxxxx20 RACF denied access

RACF denied access to this symbol. Correct the input or contact the security administrator to gain access.

xxxxxx24 Symbol value contains ampersand after substitution

The symbol value still has an ampersand after all symbol substitution has been done; this is not allowed. Correct the input.

xxxxxx28 Too much symbol data

The resulting symbol table would exceed the maximum symbol table size. Correct the input.

00000FFF Improper release

The IEASYMU2 program may not be used on this release of z/OS. Use IEASYMU2 on z/OS V2R1 or later.