Зависимость задания JCL без планировщика

Я пытаюсь реализовать JCL в среде JES2, которая запускает набор заданий с зависимостями в нем, например:

JOB_A  -> JOB_B   ) 
JOB_C  -> JOB_D   ) -> JOB_E

Другими словами, JOB_E запускается только тогда, когда JOB_B и JOB_D завершены.

Я могу запустить JOB_B и JOB_D через внутренний считыватель задания в JOB_A и JOB_C, но я не могу не создавать зависимости для JOB_E.

Я попытался изучить блокировку ресурсов JCL, чтобы я мог заблокировать набор данных в JOB_B и JOB_D, необходимый для JOB_E, чтобы JOB_E запускался только тогда, когда все наборы данных доступны, но JCL запрашивает только набор данных на уровне STEP и затем выпускает их. Если бы JCL мог запросить весь набор данных перед запуском, я мог бы реализовать какой-то мьютекс в JOB, например:

 JOB_A locks data set DSN_A
 JOB_B waits to get data set DSN_A
 JOB_C locks data set DSN_C
 JOB_D waits to get data set DSN_C
 JOB_E waits to get data set DSN_A and DSN_C

Как это сделать?

Мне это нужно для тестирования набора JCL в среде разработки без доступа к планировщику.


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


Ответы (2)


Мне интересно, зачем тратить драгоценное время на тестирование набора заданий, где набор PROD совершенно другой и будет обрабатываться каким-то планировщиком xyz. Не возражайте, если я покажусь сумасшедшим, но позвольте мне предложить и свое:

Предположение: для ваших заданий требуется управляемый процессор, и НЕ НУЖНО запускаться параллельно.

A триггеры B триггеры C триггеры D триггеры E (я знаю, что это не достойно, но ваше тестирование проходит нормально) Я просто поместил его сюда, подумав, что бы я сделал на вашем месте. В основном мне нужно, чтобы тестирование прошло быстро и хорошо. Дай мне знать ваше клише.

Теперь позвольте мне поблагодарить вас обоих за такое разрешение, что мы можем управлять отправкой заданий с помощью REXX, который также создает виртуальное и субъективное планирование.

person Raja Reddy    schedule 02.07.2011
comment
Цель состоит не в том, чтобы протестировать само планирование, а в том, чтобы протестировать программное обеспечение в JCL, поэтому мне не нужен сам планировщик, это просто практический способ запустить набор заданий после некоторых изменений в jcl / программе в jcl. Этот тест также помогает мне проверить правильность названий наборов данных, что я удаляю наборы данных перед их созданием. Ваше предположение верно, и я мог бы сделать то, что проще, чем чище. Он просто не охватывает тест, в котором я мог сделать ошибку и использовать один и тот же набор данных в JOB_B и JOB_D. Я постараюсь сделать скрипт Rexx, тем временем спасибо вам обоим - person user823959; 02.07.2011

Ваш комментарий о том, что это необходимо для тестирования в среде разработки без доступа к планировщику, заставляет меня задуматься, есть ли в вашем магазине планировщик для производственной среды. Если это так, то ваше тестирование не будет фактически проверять, что будет использоваться в вашей производственной среде. Просто подумайте, если вы еще этого не сделали.

Отвечая на ваш вопрос, один из способов - использовать такую ​​утилиту, как IEBGENER, на последнем этапе одного задания для отправки следующего задания.

Например, последний шаг JOB_A будет выполнять IEBGENER с SYSUT1, содержащим JCL выполнения для JOB_B и SYSUT2, указывающий на INTRDR. Это один из способов, который вы могли бы использовать, хотя заставить JOB_E запускаться, чтобы он не мешал другим заданиям, может быть сложно, поскольку JOB_E необходимо запускать после выполнения обоих JOB_B и JOB_D.

Другой способ - использовать Rexx в пакетный режим для отправки ваших заданий с помощью внутреннего считывателя, а затем используйте интерфейс SDSF Rexx, чтобы следить за их завершением. По сути, вы будете писать специальный планировщик заданий, специфичный для вашего набора заданий.

Обновление, десять лет спустя ...

Начиная с z / OS 2.2 IBM добавила JES2 Execution Control Statements, которые определяют последовательность выполнения группы заданий и самих заданий. Перед использованием этой функции необходимо выполнить некоторую настройку вашего системного программиста z / OS.

person cschneid    schedule 01.07.2011
comment
Я уже пошел этим путем. Думаю, я попробую какой-нибудь скрипт Rexx для реализации какого-то JCL_WAIT (JOB_B, JOB_D): P - person user823959; 01.07.2011