Блокировки набора данных REXX / z / OS - PullRequest
3 голосов
/ 25 августа 2010

Мне интересно одно с языком REXX, как он обрабатывает блокировки набора данных.Ситуация: - у меня в моем ISPF-редакторе открыт последовательный набор данных - я запускаю REXX-программу, которая обновляет (вносит изменения) этот набор данных - он работает нормально, но как это возможно?Обычно, если у вас открыт набор данных в вашем редакторе, и вы пытаетесь использовать его из другой программы (например, если вы отправляете какую-то работу), вы получите сообщение «Набор данных используется».Почему это работает с REXX здесь.Может быть, то же адресное пространство или ...?Кто-нибудь может сказать мне?

1 Ответ

4 голосов
/ 26 августа 2010

REXX не управляет блокировкой набора данных.REXX вызывает сервисные модули для выделения наборов данных и выполнения ввода-вывода для них.Подпрограмма обслуживания ввода / вывода под TSO называется EXECIO.Прежде чем EXECIO сможет работать с набором данных, он должен быть выделен под TSO для некоторого DDName.Это DDName затем упоминается в запросе EXECIO.

Наборы данных могут быть выделены непосредственно из командной строки TSO или изнутри вашего REXX exec.Уровень блокировки набора данных определяется параметром DISPosition, предоставленным во время выделения набора данных.

Важный момент, на который следует обратить внимание в вашем конкретном примере, состоит в том, что вы запускаете сеанс редактирования ISPF и REXX exec под тем же TSO сессия.Распределения наборов данных в пределах одного сеанса TSO не блокируют друг друга.Параметр DISP указывает, как заблокировать другие процессы, а не сам процесс.Следовательно, никогда не возникнет проблема блокировки набора данных между различными программами, запущенными в одном сеансе TSO.

Сообщение «Используемый набор данных», всплывающее из редактора ISPF, является функцией самого редактора, проверяющего предыдущие распределения втот же сеанс TSO.

Попробуйте следующий эксперимент:

Повторите то, что вы описали: Откройте сеанс редактирования ISPF для набора данных.Затем запустите ваш процесс REXX в том же сеансе TSO, чтобы обновить его.Должно работать без жалоб.

Далее: Попросите друга открыть сеанс редактирования ISPF в наборе данных.На этот раз ваш процесс REXX будет взорван из-за "набора данных в использовании".Вы можете сделать то же самое самостоятельно, отредактировав набор данных в TSO и отправив REXX exec в виде пакетного задания под своей учетной записью.Интерактивный сеанс TSO - это один процесс, пакетный сеанс TSO - это второй процесс, и между ними произойдет блокировка набора данных (ваше пакетное задание будет взорвано или зависнет, пока сеанс редактирования TSO не будет отменен).

Набор данныхконфликты доступа появляются, только когда разные процессы пытаются выделить один и тот же набор данных с несовместимыми параметрами DISP.

...