Как заказать контрольную работу с помощью REXX? как утилита Control m Ctmapi

Мне нужно заказать несколько заданий в управлении m из разных таблиц расписания. это ручная задача, поэтому я хочу автоматизировать ее с помощью rexx. Я нашел ниже в разделе «Заказ или принудительное выполнение в пакетном режиме, REXX или CLIST» раздела «CONTROL M USERGUIDE» EXEC CTMAPI PARM='ORDER variable'. Мне не удалось найти синтаксис для вызовите CMTAPI, используя rexx.


person Rahul    schedule 14.12.2018    source источник
comment
Я верю, что вы только что закодировали синтаксис, который вам нужен в вашем вопросе. EXEC CTMAPI PARM=.... Где ... это то, что вы хотите, чтобы CTMAPI делал. Если вам нравится это в руководстве, то все остальное, что вам нужно, должно быть в этом руководстве или ссылкой на другой ресурс для использования.   -  person NicC    schedule 14.12.2018
comment
Оператор JCL «EXEC CTMAPI» указывает системе использовать вызов каталогизированной процедуры CTMAPI. CTMAPI — это не программа. Где-то в процедуре cTMAPI будет шаг с EXEC PGM=XXXX, указывающий фактическую используемую программу. Это должно вызываться из REXX, а операторы DD в процедуре могут указывать любые файлы, которые вам нужно выделить...   -  person Steve Ives    schedule 19.12.2018


Ответы (2)


ADDRESS 'LINKMVS' эквивалентен // EXEC PGM=something,PARM='whatever' в REXX. Я не знаю, что это за переменная, но поскольку это Control-M, я возьму имя задания. Очень простой пример:

say 'Enter name of job'
pull jobname
parmvar = 'ORDER' jobname
`ADDRESS 'LINKMVS' 'CTMAPI parmvar'

Обратите внимание, что для LINKMVS имя переменной идет внутри передаваемой строки. Среда LINKMVS автоматически заменяет переменную. Например, если я ввел MYJOB в подсказку, LINKMVS создаст строку PARM `ORDER MYJOB'. Это точный эквивалент

// EXEC PGM=CTMAPI,PARM='ORDER MYJOB'

Этот центр знаний IBM® страница руководства z/OS 2.3 TSO/E REXX Reference показывает несколько примеров вызова программы таким же образом, как // EXEC PGM=,PARM= (элемент 1). Пункты с 5 по 9 показывают различные способы использования ADDRESS 'LINKMVS'; обратите внимание, как переменные обрабатываются в каждом примере.

person zarchasmpgmr    schedule 14.12.2018
comment
Я попытался выполнить приведенный выше код. Это дает мне RC=-3. Я попытался запустить утилиту CTMAPI с помощью JCL, но она показывает ошибку: //CTMAPI EXEC PGM=CTMAPI CAY6093E PROGRAM CTMAPI NOT FOUND Это может быть причиной того, что я не могу выполнить утилиту CTMAPI с помощью REXX. Есть ли альтернативный способ или в какой библиотеке я могу найти утилиту CTMAPI? - person Rahul; 17.12.2018
comment
Кроме того, я могу заказывать задания с помощью JCL с некоторой процедурой CTMJOBPR. //CPSD0030 EXEC PROC=CTMJOBPR, // COND=(7,LT), // LIB=MY.SCHEDULING.LIBRARY, // TABLE=SCHEDTABLE, // JOB='JOBNAME', / / ODATE='ORDERDATE', // FORCE=FORCE Можно ли вызвать описанную выше процедуру из REXX. - person Rahul; 17.12.2018
comment
У вас уже есть ответы на ваши вопросы в части JCL пакетного задания, в расширении PROC. Это показывает все наборы данных и имена DD, которые вам нужно будет выделить в вашем REXX-процессе, прежде чем вы выполните LINKMVS. Не забудьте освободить выделения после использования. - person zarchasmpgmr; 17.12.2018
comment
CTMAPI — это не программа; это процедура. Загляните внутрь CTMAPI, чтобы увидеть, какие программы он вызывает. - person Steve Ives; 19.12.2018

После предложений от NicC, zarchasmpgmr и нескольких исследований, наконец, я могу заказать работу с утилитой CTMJOB. Я искал loadlib и вызывал TSO, используя REXX.

/*****REXX*******/
ADDRESS TSO                                            
"CALL 'MY.IN.LOAD(CTMJOB)'                    
' ORDER DSN=MY.SCHED.LIB  TABLE=SCHDTBL,  
JOB=JOBNAME,DATE=DATE'"
EXIT

Подробности в руководстве по утилитам INCONTROL для ZOS. Этот документ был очень полезен. http://documents.bmc.com/supportu/952/56/64/195664/195664.pdf

person Rahul    schedule 18.12.2018