DISP=MOD in Endevor processors causes C1X0245E
search cancel

DISP=MOD in Endevor processors causes C1X0245E

book

Article ID: 48159

calendar_today

Updated On:

Products

Endevor Endevor Natural Integration Endevor - ECLIPSE Plugin

Issue/Introduction

When using "DISP=MOD" in an Endevor Processor the dataset can be allocated in an unexpected way. 

For example the dataset is allocated to a non-SMS managed disk instead of a SMS managed as a temporary dataset should be.

Environment

All supported releases 

Resolution

Explanation of what is happening with DISP=MOD:

  • For each processor step, ENDEVOR dynamically allocates the specified datasets by means of the DYNALLOC macro provided by MVS (also known as SVC 99).
  • Unlike JCL allocation, the DYNALLOC macro does not support the allocation of a temporary dataset with DISP=MOD.
  • ENDEVOR therefore needs to simulate it by allocating a permanent (cataloged) dataset and deleting it afterwards.
  • Trying to catalog a dataset with a temporary dataset name may lead to various problems.

The way DISP=MOD behaves in an Endevor Processor

Endevor will scan the entire processor for any DISP with MOD. If any DISP with MOD is found in any allocation the DEFINITION of the TEMPERARY dataset will be treated as a DISP with MOD.
This includes the MODHLI= definition in the C1DEFLTS (if active). The dataset will be enqueued as MOD (exclusive) for the entire length of the processor. 
For example Endevor will scan all allocations of &&TEST1. It find a DISP=MOD in the second step SCR01. This will change the allocation in STEP INIT to be a DISP=MOD allocation(definition). 
This will happen even if the STEP SCR01 will never run due to condition code as the scan is done prior to execution. 

//INIT     EXEC PGM=BC1PDSIN
//C1INIT04 DD DSN=&&TEST1,DISP=(,PASS),
//            UNIT=SYSDA,SPACE=(TRK,(5,15),RLSE),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3146)
//**********************************************************************
//*  THIS STEP CLEANS UP IF SQL STEP IS UNSUCCESFULL
//*********************************************************************
//SCR01       EXEC PGM=IEFBR14,COND=(999,NE)
//C1INIT04 DD DSN=&&TEST1,
//            DISP=(MOD,PASS,DELETE)

Prevent these problems by either:

  • Avoiding to use DISP=MOD for temporary datasets in processors.
  • Using the C1DEFLTS MODHLI= parameter causes ENDEVOR to format the dataset name differently for temporary datasets with DISP=MOD.
    • Notes:
      1) The dataset will be allocated as <MODHLI>.DYYDDD. for the first qualifier(s) so this can result in error C1X0245E during the generate of a processor.
      2) If the ENCOPTBL option DS_INTERNAL_TEMP is enabled, the file will have the .RA000. qualifier instead of .RA0.