Передача значения в программу Cobol через Parm с использованием данных в последовательном файле - PullRequest
1 голос
/ 23 марта 2019

Я устанавливаю JCL, который передаст значение даты, поступающей из последовательного файла (имеет одну запись) (например, 20190320), в parm, как показано ниже:

// STEP1 EXEC PGM = ABC, PARM = '20190320'

Я пытаюсь передать значение PARM со значением даты, содержащейся в последовательном файле.

Ответы [ 2 ]

7 голосов
/ 23 марта 2019

Предполагая, что ваша программа на языке COBOL уже содержит инструкции для извлечения информации, переданной из JCL с использованием PARM, вы можете использовать параметр PARMDD в сочетании с оператором DD для выполнения задачи.Оператор DD предназначен для определения последовательного файла с данными PARM.

//STEP1    EXEC PGM=ABC,PARMDD=MYINPUT
//MYINPUT  DD DISP=SHR,DSN=MY.PARM.INPUT
//SYSOUT   DD SYSOUT=*

Набор данных MY.PARM.INPUT может иметь значение даты.

По сути, вы не можете передать более 100 байт данных с помощью параметра PARM.PARMDD обычно предпочтительнее, если вы хотите передать данные размером> 100 байт.

Надеюсь, это поможет.

3 голосов
/ 23 марта 2019

Вы не можете сделать это в одной работе.Опции включают

  • Изменение программы ABC для чтения из файла
  • Запись программы / rexx для чтения файла и вызова программы ABC
  • Прочитайте файл и Создайте новое задание, которое вызывает ABC с датой, которую вы только что прочитали.Это можно сделать с помощью сценария rexx.
  • Некоторые системы планирования могут поддерживать это.

Пожалуйста, предоставьте немного больше информации

  • Что делает система планированияваша компания использует
  • Является ли программа ABC локальной программой ???это можно изменить
  • Является ли задание частью пакетного потока, запущенного автоматически или отправленного пользователем.

Ручная отправка

Если заданиеесли вы отправляете вручную, вы можете

  • написать скрипт Rexx, используя файл ISPF , чтобы сгенерировать && отправить макрос JCL
  • Rexx для обновления и отправки JCL

ISPF Редактировать макрос

Вы можете иметь

// set DATE=$Date$ 
//STEP1 EXEC PGM=ABC,PARM='&date' 

в журнале JCL и иметь макрос редактирования rexx

  • прочитать файл
  • сделать замену всех на & дату
  • Я бы использовал те же переменные, что и Controlm

С JCL

// set DATE=$Date$ 
//STEP1 EXEC PGM=ABC,PARM='&date' 

макрос редактирования может выглядеть примерно так:

   /* rexx */
  ADDRESS ISREDIT 'macro'
  Address TSO "EXECIO 1 DISKR indd"
  pull date
  ADDRESS ISREDIT "r $date$" date 
  ADDRESS ISREDIT "cancel"

Макрос редактирования должен находиться в библиотеках SYSPROC или SYSEXEC.Если макрос называется ChgDate , вы бы просто

...