Why does endevor sometimes ignore load modules that are present in STEPLIB DD or JOBLIB DD and loads instead an unexpected copy from MVS linklist?
This may eventually lead to abends due to release mix or the wrong user exit being loaded.
This effect will be observed when ALL the following is true:
- Endevor is trying to load a module it expects to find in CONLIB DD
- CONLIB DD is present in the JCL
- The module being loaded is NOT found in CONLIB DD
It happens because, when a module is expected to be found in CONLIB and the ddname is allocated, endevor asks MVS to load the module from that ddname by passing parameter DCB to the MVS LOAD macro.
In this case, MVS searches:
1. The requesting task's load list for an available copy.
2. The job pack area for an available copy.
3. The specified library.
4. The link pack area.
5. The link library.
Note that MVS does NOT search STEPLIB/JOBLIB. Therefore, if a copy of the module resides in linklist, it will be unexpectedly loaded.
The solution is to either remove CONLIB from the JCL (so that everything will load from the standard MVS search order) or to ensure that CONLIB DD contains each and every module it is expected to contain.
Modules expected to be found in CONLIB include:
- All modules delivered in CSIQLOAD library
- The user exits table and/or the C1DFLTS table, if the ENCOPTBL feature UNAUTH_DFLTS_EXITS=(x,x) sets it for any of them.
- Each and every user exit defined in the C1UEXITS table with AUTH=NO