JCL за предыдущий месяц-год в имени набора данных

Мне нужно запустить задание в первый рабочий день месяца с учетными данными для закрытия на конец месяца (предыдущего месяца), которые будут использоваться в некоторых заданиях на конец года. Я хотел бы запускать одно и то же задание каждый месяц без вмешательства оператора и указывать месяц и год закрытия в имени набора данных, чтобы можно было легко определить, для какого периода закрытия набор данных был завершен. В настоящее время выполнить 8 отдельных заданий для выполнения этой задачи. Пожалуйста, предоставьте конкретные образцы JCL.

2 ответа

Непонятно, почему вы выполняете 8 отдельных заданий для выполнения этой задачи, что делает каждое задание?

Используете ли вы какой-либо планировщик для запуска задания в определенное время?

Вы можете использовать EZACFSM1, чтобы использовать системные символические параметры для добавления информации о дате / времени к именам наборов данных.

http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA1E241/2.2.2

Лучшее решение для этого - использовать функции вашего планировщика заданий. Было сказано, что...

Вот более свежая ссылка на EZACFSM1. OS/390 2.10 более 10 лет не используется.

Однако вы не можете просто использовать эту утилиту для создания набора данных с информацией о дате / времени в его названии. EZACFSM1 просто читает из SYSIN и пишет в SYSOUT, интерпретируя системные символы, которые он читает.

Вы можете использовать EZACFSM1, чтобы написать оператор ALTER для IDCAMS, переименовывая набор данных со статическим именем (один без года и месяца в нем) в тот, который имеет эти атрибуты. Это требует двух дополнительных шагов и предостережения.

//CATLG    EXEC PGM=IEFBR14
//DD01     DD  DISP=(NEW,CATLG),
//             DSN=STUFF,
//             AVGREC=U,
//             LRECL=80,
//             RECFM=FB,
//             SPACE=(80,(1000,100))
//*
//MKALTER  EXEC PGM=EZACFSM1
//SYSOUT   DD  DISP=(NEW,PASS),
//             AVGREC=U,
//             LRECL=80,
//             RECFM=FB,
//             SPACE=(80,(1000,100))
//SYSIN    DD  *
 ALTER STUFF NEWNAME(STUFF.Y&YR4&MON)
//*
//RENAME   EXEC PGM=IDCAMS
//SYSIN    DD DISP=(OLD,PASS),DSN=*.MKALTER.SYSOUT
//SYSPRINT DD SYSOUT=*
//*

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

Другие вопросы по тегам