#cobol #jcl
#cobol #jcl
Вопрос:
Я настраиваю JCL, который будет передавать значение даты, поступающее из последовательного файла (имеет одну запись) (пример 20190320), в parm, как показано ниже:
//ШАГ 1 EXEC PGM=ABC,PARM=’20190320′
Я пытаюсь передать значение PARM со значением даты, содержащимся внутри последовательного файла.
Ответ №1:
Предполагая, что ваша программа COBOL уже содержит инструкции по извлечению информации, переданной из JCL с помощью PARM
, вы можете использовать PARMDD
параметр в сочетании с инструкцией DD для выполнения задачи. Оператор DD предназначен для определения последовательного файла с PARM
данными.
//STEP1 EXEC PGM=ABC,PARMDD=MYINPUT
//MYINPUT DD DISP=SHR,DSN=MY.PARM.INPUT
//SYSOUT DD SYSOUT=*
Dataset MY.PARM.INPUT
может иметь значение date.
В принципе, вы не можете передать более 100 байт данных, используя параметр PARM. PARMDD
обычно предпочтительнее, если вы хотите передать данные > 100 байт.
Надеюсь, это поможет.
Ответ №2:
Вы не можете сделать это в одном задании. Опции включают
- Изменение программы ABC для чтения из файла
- Написание программы /rexx для чтения файла и вызова программы ABC
- Прочитайте файл и сгенерируйте новое задание, которое вызывает ABC с датой, которую вы только что прочитали. Это можно было бы сделать в скрипте rexx.
- Некоторые системы планирования могут поддерживать это.
Пожалуйста, предоставьте немного больше информации
- Какую систему планирования использует ваша компания
- Является ли программа ABC локально написанной программой??? это можно изменить
- Является ли задание частью пакетного потока, запускаемого автоматически или отправляемого пользователем.
Отправка вручную
Если задание отправляется вручную, вы могли бы
- Напишите скрипт Rexx, используя адаптацию файла ISPF для генерации и отправки JCL
- Макрос Rexx для обновления и отправки JCL
Макрос редактирования ISPF
ты мог бы
// set DATE=$Date$
//STEP1 EXEC PGM=ABC,PARM='amp;date'
в журнале JCL
и попросите макрос редактирования rexx
- прочитайте файл
- замените все на amp;date
- Я бы использовал те же переменные, что и Controlm
С JCL
// set DATE=$Date$
//STEP1 EXEC PGM=ABC,PARM='amp;date'
макрос редактирования будет выглядеть следующим образом
/* rexx */
ADDRESS ISREDIT 'macro'
Address TSO "EXECIO 1 DISKR indd"
pull date
ADDRESS ISREDIT "r $date$" date
ADDRESS ISREDIT "cancel"
Макрос редактирования должен находиться в библиотеках SYSPROC или SYSEXEC. Если
Макрос называется ChgDate, вы бы просто
Комментарии:
1. Я не хочу вносить изменения в программу ABC на Cobol. Задание отправляется вручную в тесте. Я не планирую планировать это в рабочей среде. (В рабочей среде значение поступает через переменные Control-M). Моя цель — уменьшить нагрузку на передачу значений символьных параметров вручную при запуске в тесте.
2. Я бы написал скрипт REXX, который считывает файл и создает JCL для программы COBOL или динамически выделяет все необходимые DDS и вызывает его.