Какую команду я могу использовать в сценарии JCL + NDM, чтобы заставить передачи ждать? - PullRequest
0 голосов
/ 04 февраля 2020

Работаю в системе z / OS, и я не являюсь частью команды программистов, но я знаю кое-какие вещи. У нас есть инструмент, с которым мы работаем, который может выводить JCL + NDM для отправки файлов из компании клиенту. Я могу вручную добавить и просмотреть вывод перед отправкой карты.

Я ищу способ повлиять на время передачи, согласно запросу клиента. Я хотел бы сделать это простым и просто изменить JCL + NDM перед отправкой. Они хотели бы, чтобы между каждой передачей было несколько минут (выполнение сценария NDM), а время передачи файла может варьироваться.

Какие команды мне доступны для этого? Я провел некоторый поиск, и похоже, что большинство людей думают, что это ужасная идея, хотя я не понимаю, почему (все еще плохо знакомый с мэйнфреймами).

Я столкнулся с NDM MAXDELAY, но я не уверен это поможет, это больше похоже на механизм очередей, чем задержка.

Другой парень упомянул JCL STARTT, который мог бы их разнести ... если бы мы знали, сколько времени потребуется для их отправки.

Я надеялся, что есть что-то, что вставляет задержка. Мы уже устанавливаем приоритет для однопотокового сценария и отправляем по одному.

Поскольку у меня JCL и NDm в одном и том же сценарии, я могу использовать любой из них для задержки.

Для справки, на других языках в большинстве языков есть wait, delay или другая доступная команда. Кроме того, иногда эти команды имеют идиосинкразии; Arduino останавливает все выполнение во время delay, поэтому это не рекомендуется.

Ответы [ 4 ]

2 голосов
/ 05 февраля 2020

Если вы можете добавить шаг в JCL, тогда ...

//WAITABIT EXEC PGM=BPXBATCH,PARM='SH sleep 10s'
//STDOUT   DD  SYSOUT=*
//STDERR   DD  SYSOUT=*

... может быть тем, что вы ищете. Команда оболочки sleep поставляется вместе с z / OS.

Некоторые люди беспокоятся, что это излишне связывает инициатор.

1 голос
/ 07 февраля 2020

FYI, NDM (Network Data Mover) уже давно называется Connect: Direct.

Рассматривали ли вы вопрос об использовании DGADWAIT, программы ожидания выполнения задачи?

1 голос
/ 05 февраля 2020

z / OS 2.2 действительно представила оператор SCHEDULE , который позволяет отправить задание, но отложить выполнение до некоторой определенной c даты / времени.

Это может выглядеть так :

// SCHEDULE HOLDUNTL=('02:37','02/13/2020')

Но ни параметр HOLDUNTL, ни параметр STARTBY не дают никаких гарантий относительно точного времени запуска.

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

0 голосов
/ 10 февраля 2020

Мэйнфреймы работают не так. Идея поместить фиксированную задержку в пакетное задание означает, что вы не определили свой процесс должным образом (Почему вы ждете? Чего вы ждете? Почему бы просто не использовать множество доступных вам инструментов для планирования второй части). процесса, когда все, что вы ждете, произошло?).

Если у вас есть куча файлов для передачи, просто отправьте пакетное задание или задания для передачи файлов, и они попадут туда, когда попадут туда. , Если у вас есть определенное c требование для запуска пакетных заданий с указанными c интервалами, то либо процесс, который создает и передает JCL, делает это только через определенные промежутки времени, либо вы можете заставить программное обеспечение записывать каждый файл в набор данных и попросите другой процесс читать этот файл каждые xxx минут и создавать задание передачи для подходящих файлов.

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

Если вы не можете изменить процесс, вам придется его рекламировать. Одним из вариантов может быть направление заданий на передачу неактивному инициатору (часть системы, выполняющей задания jbatch), а затем некоторая автоматизация для краткого запуска и последующей остановки инициатора каждые ххх минут, позволяя запускать только одно задание за раз .

Если вы хотите, чтобы каждая передача выполнялась последовательно после завершения предыдущего сеанса, просто присвойте всем пакетным заданиям одно и то же имя (чтобы они запускались в одном потоке) и используйте MAXDELAY = 0.

...