THE DAILY DIGEST

The daily edition.

Essential reading from Rocket Enterprise. Straight to the source.

Archived edition
DAILY EDITION1 story· 3 min read
IN FOCUS

JCL Exported Symbols: Submission-Time Resolution, Region Scoping, and IEFSJSYM Limits

Enterprise Server JCL symbol substitution distinguishes submission-time exported values from execution-time system values. IEASYM00 refresh, region scoping, in-stream replacement, and IEFSJSYM cleanup each affect operational correctness. [1] [2]

Read the full briefing

JCL Exported Symbols: Submission-Time Values Versus Execution-Time Values

Scope: Rocket Enterprise Developer 12.0 for Eclipse (UNIX), documenting Enterprise Server MVS JCL emulation.

Enterprise Server supports exported JCL symbols in in-stream data and can pass those symbols to a job submitted through the Internal Reader. The operational distinction is when a value is resolved: exported JCL symbol values are resolved at job submission, while static system symbols not exported as JCL symbols are resolved when the job runs. This distinction matters when a queued job might execute after its submission context changes. See JCL Exported Symbols.

Defining and refreshing system symbols

System-wide symbols can be defined in SYS1.PARMLIB(IEASYM00). Enterprise Server reads this dataset at system startup, so values added afterward are not automatically available. Set MFJ_RELOAD_IEASYM00=Y to force a reread at each job submission. This is a documented refresh mechanism, not an instruction to edit running jobs.

The LPARNAME field scopes a SYSDEF group to a specific Enterprise Server region name. An empty or absent LPARNAME applies to all regions; when supplied, it should be the first entry after SYSDEF. This permits region-specific symbol definitions without requiring different symbol-consuming JCL. See JCL Exported Symbols.

Resolving symbols in in-stream data

Rocket's JCL - Symbols sample includes SYMBOL6.JCL, which demonstrates static SYSNAME, dynamic SYSJOBNM, SYSJOBID, and SYS_CORR_CURRJOB, plus exported job symbols. In its IEBGENER step, values in SYSUT1 are substituted into SYSUT2. The sample uses SYMBOLS=(JCLONLY,MYLOG) on SYSUT1; MYLOG records substitutions line by line. An undefined symbol, &SYS_JOB_NOTIFY, remains unchanged.

The supported MVS JCL statement list includes EXPORT for exporting symbols, SET for defining symbolic values, and SYMLIST for exported-symbol replacement in in-stream data. See MVS JCL Statements.

Interfaces and limitations

The sample CALLMFJZ.cbl calls IEFSJSYM to list symbols available at a job step. After processing the returned memory, the caller must invoke the 88-func-freemem function; Rocket warns that failure can leak memory and ultimately destabilize the system. The companion MFJUXIT.cbl demonstrates job-correlator and user-data handling through a JCL user exit. On UNIX, the sample modules are compiled as shared objects, made loadable through $CAS_BATCH_PATH, and the region's MFJUXIT variable names the compiled exit.

There are important compatibility boundaries: IAZSYMBL is not implemented and returns 12; IEFSJSYM GETBYNAME is unsupported and returns 8 with reason code x'00000818'. Rocket also documents no behavioral difference between SYMBOLS=EXECSYS and SYMBOLS=CNVTSYS in this implementation. See JCL Exported Symbols.

Takeaway: For predictable JCL substitution, design around submission-time versus execution-time resolution, and explicitly release memory returned by IEFSJSYM.

Rocket Enterprise Developer 12.0 for Eclipse (UNIX) / Enterprise Server
Documentation references
That’s the briefing.You’ve reached the end of this edition.
More editions

From the archive

View all
Oct 31

IMS TM Queue Drainage: MPR Classes, PROCLIM, and the Queue-Full Hang

Oct 31

CICS System Initialization Table (SIT): Startup Lists, COMMAREA Padding, and Lifecycle Hooks

Oct 31

MFJAMS REPRO: Primary-Key Ranges, Replacement Rules, and Ignored IDCAMS Operands