2016-11-16 5 views
0

Ежедневно в мэйнфрейме выполняется ряд заданий, мне нужно автоматически запускать их время начала и окончания с помощью некоторых других jcl или rexx, возможно ли это?Ежедневно в мэйнфрейме выполняется несколько заданий, мне нужно автоматически запускать их время начала и окончания с помощью некоторых других jcl или rexx, возможно ли это?

+0

Да, но вы уверены, что вам действительно нужна эта информация? что ты собираешься с этим делать? –

+0

Мы должны отправить отчет о сроках почти 20 рабочих мест в день. нам нужно автоматизировать это, хотя JCL или REXX. – Deb

+0

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

ответ

1

Это решение будет работать, если ваш сайт использует CA JMR

//SCANJMR JOB (11111),'JMRSCAN',         
//    CLASS=T,MSGCLASS=X,MSGLEVEL=(1,1),      
//SCAN  EXEC JMRSCAN             
//JMRPRINT DD DSN=&&OUTDATASET,         
//   DISP=(NEW,CATLG,),          
//   UNIT=SYSDA,SPACE=(TRK,(20,20)),       
//   DCB=(LRECL=133,RECFM=FB,BLKSIZE=6118)      
//JMRIN DD *               
FUNCTION LIST=ALL JOBMASK=* SDATE=16/11/16        
    EDATE=16/11/16              
/* 

то все, что вам нужно сделать, это получить счет того, сколько записей в этом файле.

Если нет, другие планировщики заданий могут обеспечивать аналогичную функциональность.

+0

JMR является продуктом CA и, следовательно, недоступен на всех сайтах. – cschneid

+0

было бы разумно удалить ответ? – SaggingRufus

+0

Вы можете добавить «Если ваш сайт использует CA JMR then ...» и «Другие планировщики заданий могут предоставлять аналогичную функциональность». – cschneid

3

Да, это возможно. Как указывает @SaggingRufus, ваш планировщик заданий (CA JMR, Control-M и т. Д.) Может предоставить эту функциональность - поговорите с вашим техническим персоналом и спросите.

Это можно сделать с помощью Rexx interface to SDSF, а затем планировать задание для выполнения кода Rexx. Идентификатор, под которым выполняется код Rexx, должен иметь полномочия просматривать задания, для которых вы хотите получить информацию. Существует также Java interface to SDSF.

Другим механизмом, который может быть вам доступен, является SMF, но это не будет простой дорогой, если вы также не получили MXG.

Поговорите со своим техническим персоналом и объясните, что вы хотите и почему, возможно, они уже решили эту проблему.

0

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

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

Rexx имеет встроенное время и дату функцию пример их использование: -

rc = audit('OACG22X Invoked by' userid() 'at' time() 'on' date()'.')

Вы можете обновить данные отчета либо с использованием DISP из MOD или читая его, а затем переписывая его с добавлением новой записи. EXECIO является функцией rexx, которую вы используете.

Когда вы запустите отчет, это приведет к очистке данных или, возможно, к циклу GDG (создайте пустой +1).

Следующая Rexx довольно близко к тому, что можно было бы использовать (хотя и весьма завышенная то вы в основном заинтересованы в EXECIO «s и генерация Out.1 (используя текущую дату и время) (это поддерживает только 1 запись в выходных данных)): -

/* REXX - CYCLE TAPES WITHIN A POOL FOR EMHA800W BATCH JOB */ 
/*--------------------------------------------------------------------*/ 
/* read in data from tape cycle dataset        */ 
/*--------------------------------------------------------------------*/ 
    "EXECIO 1 DISKR CYCTAPE (stem in. FINIS" 
    LastTape = SUBSTR(in.1,1,6) 
    If LastTape = "XXXXXX" Then NewTape = "SAP001" 
    Else Do 
     TapeNum = SUBSTR(in.1,5,2) 
     If DATATYPE(TapeNum,"N") Then Do 
     NewNum = TapeNum + 1 
     If Newnum > 4 Then NewNum = 1 
     RetCde = NewNum 
     Newnum = RIGHT(Newnum,2,"0") 
     NewTape = "SAP0"||NewNum 
     End 
     Else RetCde = 100 
    End 
    out.1 = NewTape||" "||DATE("E")||" "||TIME("N") 
    "EXECIO 1 DISKW CYCTAPEO (stem out. FINIS" 
    Say "Return Code will be "||RetCde 
    Return RetCde 

Запуск Rexx с помощью партии подробно здесь How can I run my Rexx program as a batch job?.

Я не использовал Zeke, но из очень короткого поиска выяснилось, что вы можете проверить EMR (Основная запись события).

2

Стандартный способ делать то, что вы хотите, использовать SMF 30 записей.Вы можете сделать это в REXX, но это будет немного сложно, если вы не понимаете формат записей SMF. На вашем сайте может быть такой инструмент, как SAS, который сделает его тривиальным.

  • Подтип SMF 30 1 записывается при запуске задания (или любого адресного пространства).
  • Подтип 5 SMF 30 записывается при завершении задания.

Существует несколько других записей подтипов, таких как дельта окончания этапа задания. SMF 30s содержат абсолютно все, что вы, возможно, захотите узнать о пакетной работе. Если вы просто хотели узнать, сколько прошло или время процессора заняло задание, просто прочитайте подтип 5 и посмотрите раздел производительности.

Если вы действительно должен использовать REXX, то есть продукты, имеющие API REXX, которые получают доступ к данным SMF, таким как IBM Transaction Analysis Workbench for z/OS. Отказ от ответственности: Я один из разработчиков этого продукта.

+0

Также довольно легко создать отчет о запущенном/завершенном задании с использованием DF/Sort или Syncsort, один из которых вы обязательно должны иметь. В двух продуктах используется (почти) один и тот же синтаксис. –

+0

@SteveIves Это интересная идея. Может ли он работать с тройками? –

+0

Triplets? Извините - не уверен, что вы имеете в виду. –

 Смежные вопросы

  • Нет связанных вопросов^_^