Concurrent updates to PDS and PDSE can result in the corruption of their directories. This document will tell you how to prevent them from happening

Document ID : KB000049722
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

Concurrent updates to PDS and PDSE can result in the corruption of their directories, so when PDSes or PDSES are updated during processor execution it is imperative that you avoid that two Endevor jobs update the same data set simultaneously.

Solution:

Concurrent updates to PDS and PDSE can result in the corruption of their directories, so when a PDS or PDSE are updated during processor execution it is imperative that you avoid that two Endevor jobs update the same data set simultaneously. The only safe way to accomplish this is to use DISP=OLD in the processor.

Will the use of DISP=OLD in processors bring my system to a standstill?
Many administrators avoid using DISP=OLD in processors because of the suspicion that this might cause bottlenecks with other programs that have the data set allocated with DISP=SHR, for reading purposes. This suspicion is not true. The Extended Processors Guide explains on page 15 that when a processor uses DISP=OLD, Endevor will do two things during the dynamic allocation of the file:

  1. Allocate the file with DISP=SHR,
  2. Obtain an exclusive ENQUEUE on the file before giving control to the processor program.

As a result, the file can be allocated by other jobs that read it, but all updates to the data set during Endevor processor execution will be single threaded.

Is this only necessary for Concurrent Action Processing?
NO: The use of DISP=OLD on processors output data sets is key to the integrity of these data sets, under ALL circumstances.

The implementation of the "Concurrent Action Processing" feature of Endevor increases the likelihood that data set gets updated simultaneously, so before implementing this feature we recommend you to revisit your processors and to ensure that you are using DISP=OLD on all processor output data sets that can be updated simultaneously.

What if you want to use true DISP=OLD?
If you want to force the allocation of a file with a true DISP=OLD, you must not only use DISP=OLD in the processor, but also define the DDNAME in ENCOPTBL as a DDNAME that will get a real DISP=OLD allocation.

For more information about this topic, please read the "processor features" of the '"writing processors" section in the Extended Processors Guide.

If you have any further question regarding DISP=OLD in a processor, please feel free to contact your local Endevor Support Team.