Эксклюзивный доступ JCL к ошибке набора данных

Согласно справочному руководству MVS JCL, перед запуском задания запрашивает монопольное управление набором данных:

DISP and ENQ: Before starting the first step of a job, the initiator requests
control of all of the data sets in that job by issuing an ENQ for each of them,
using the value specified for DISP to determine the kind of ENQ issued. The
initiator issues the ENQ for each data set at the highest level required for that
data set by any step of the job. For example, if all steps of the job request
shared control of a specific data set (DISP=SHR) then the ENQ for that data set
is requested as SHR. If, on the other hand, any step of the job requests
exclusive control of a specific data set (DISP=NEW, DISP=MOD, or DISP=OLD), then
the ENQ for that data set is requested EXCL.

Но я получил два разных поведения:

a) Я открываю через ISPF DATASET_A и отправляю JCL, который использует тот же набор данных с DISP=(NEW,CATALOG,DELETE). Я получаю сообщение TSO, потому что набор данных запрошен заданием, а JCL не запустится, пока я не выпущу набор данных через ISPF.

b) Я отправляю 2 JCL, которые используют один и тот же набор данных с DISP=(NEW,CATALOG,DELETE), но оба запускаются одновременно.

Почему задания не запрашивают эксклюзивный доступ к набору данных при параллельном выполнении?


person user823959    schedule 04.07.2011    source источник


Ответы (1)


Причина, по которой задания в b) ведут себя не так, как вы ожидаете, заключается в том, что вы запускаете их одновременно. Они оба создают новый набор данных с тем же именем, что разрешено. Когда задания закончатся, тот из них, который завершится первым, должен каталогизировать набор данных, а второе задание получит ошибку NOTCAT2, поскольку оно уже каталогизировано.

Вторая часть оператора disp (Catalog) — это то, что происходит в случае успешного шага, а третья часть (Delete) — что происходит в случае неудачного шага.

Чтобы создать новый набор данных и получить эксклюзивный доступ, используйте

MOD Указывает на одно из следующего:

    * The data set exists and records are to be added to the end of it. The data set must be sequential.

    * A new data set is to be created.

In either case, MOD specifies exclusive (unshared) use of the data set. 

Взято из IBM Руководство

person Deuian    schedule 05.07.2011
comment
Если это причина, если я использовал DISP=MOD или DISP=OLD, они должны запросить эксклюзивный доступ, верно? - person user823959; 05.07.2011
comment
DISP=OLD означает, что он уже должен быть там, иначе произойдет сбой, но это означает эксклюзивный доступ, если набор данных существует. - person Deuian; 07.07.2011
comment
Он также говорит: OLD - Indicates that the data set exists before this step and that this step requires exclusive (unshared) use of the data set. Странно, но DISP=(MOD,KEEP,KEEP) удовлетворил мои потребности. - person user823959; 07.07.2011