| XOpen | Дата: Четверг, 20.08.2009, 19:58 | Сообщение # 1 |
 Полковник
Группа: Администраторы
Сообщений: 242
Репутация: 3
Статус: Offline
| Глупый вопросик: Что дает SHR в данном примере? Изменится ли что нибудь, если я поставлю OLD ? //PGM EXEC PGM=MYPGM1 //IN DD DSN=FORMAT.FILE1,DISP=SHR //DEL EXEC PGM=IEFBR14 //DELDD DD DISP=(MOD,DELETE,DELETE),SPACE=(CYL,(0)), // DSN=FORMAT.FILE1
Худая корова еще не газель!
Сообщение отредактировал XOpen - Четверг, 20.08.2009, 19:59 |
| |
|
|
| Gregory | Дата: Суббота, 22.08.2009, 00:15 | Сообщение # 2 |
 Подполковник
Группа: Доверенные
Сообщений: 123
Репутация: 4
Статус: Offline
| Я считаю что: - от замены SHR на OLD ничего не изменится - этот вопросик вовсе не глупый Инициатор выдает ENQ на все наборы данных, описанные во всем задании до иниицирования программы первого шага (MYPGM1). Поскольку во втором шаге DISP=MOD, набор FORMAT.FILE будет запрашиваться монопольно (exclusive), а не разделяемо (shared). Вот если бы второго шага не было, разница между SHR и OLD, естественно, была бы. Такая логика инициатора позволяет избежать deadlock: //JOBA JOB // EXEC PGM=IEFBR14 //A DD DSN=DATA1,DISP=OLD // EXEC PGM=IEFBR14 //B DD DSN=DATA2,DISP=OLD //JOBB JOB // EXEC PGM=IEFBR14 //B DD DSN=DATA2,DISP=OLD // EXEC PGM=IEFBR14 //A DD DSN=DATA1,DISP=OLD Если бы ENQ для наборов делалось для каждого шага а не для всего задания сразу, одновременный запуск заданий JOBA и JOBB приводил бы к взаимоблокированию (deadlock).
Сообщение отредактировал Gregory - Суббота, 22.08.2009, 00:21 |
| |
|
|
| XOpen | Дата: Понедельник, 24.08.2009, 12:32 | Сообщение # 3 |
 Полковник
Группа: Администраторы
Сообщений: 242
Репутация: 3
Статус: Offline
| Это был вопрос с подвохом. Я пол дня потратил, пока догадался книжку перечитать. (а так уже и ENQ печатал, тоесть сам видел, что так и происходит) Снимаю шляпу перед теми, кто это уже знал
Худая корова еще не газель!
|
| |
|
|