Любая пакетная программа, выполняемая через JCL, требует ввода данных, который обрабатывается и создается выход. Существуют разные способы подачи ввода в программу и записи вывода, полученного из JCL. В пакетном режиме взаимодействие с пользователем не требуется, но устройства ввода и вывода и требуемая организация определены в JCL и отправлены.
Ввод данных в JCL
Существуют различные способы передачи данных в программу с использованием JCL, и эти методы были объяснены ниже:
INSTREAM DATA
Входные данные для программы могут быть указаны с помощью оператора SYSIN DD.
//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID //* Example 1: //STEP10 EXEC PGM=MYPROG //IN1 DD DSN=SAMPLE.INPUT1,DISP=SHR //OUT1 DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE), // LRECL=50,RECFM=FB //SYSIN DD * //CUST1 1000 //CUST2 1001 /* //* //* Example 2: //STEP20 EXEC PGM=MYPROG //OUT1 DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE), // LRECL=50,RECFM=FB //SYSIN DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR //*
В примере 1 вход в MYPROG передается через SYSIN. Данные предоставлены в JCL. Две записи данных передаются в программу. Обратите внимание, что / * отмечает конец данных SYSIN в instream.
«CUST1 1000» — это запись1, а «CUST2 1001» — это запись2. Условие конца данных выполняется, когда при чтении данных встречается символ / *.
В примере 2 данные SYSIN хранятся в наборе данных, где SAMPLE.SYSIN.DATA — это файл PS, который может содержать одну или несколько записей данных.
Ввод данных через файлы
Как упоминалось в большинстве примеров в предыдущих главах, ввод данных в программу может быть обеспечен через файлы PS, VSAM или GDG с соответствующими именем DSN и параметрами DISP вместе с операторами DD.
В примере 1 SAMPLE.INPUT1 — это входной файл, через который данные передаются в MYPROG. В программе это называется IN1.
Вывод данных в JCL
Вывод в JCL может быть каталогизирован в набор данных или передан в SYSOUT. Как упоминалось в главе « Операторы DD», SYSOUT = * перенаправляет вывод в тот же класс, который указан в параметре MSGCLASS инструкции JOB.
Сохранение журналов заданий
При указании MSGCLASS = Y журнал заданий сохраняется в JMR (Управление и поиск журналов заданий). Весь журнал JOB можно перенаправить в SPOOL и сохранить в наборе данных, указав команду XDC для имени задания в SPOOL. Когда команда XDC задается в SPOOL, открывается экран создания набора данных. Затем можно сохранить журнал заданий, указав соответствующее определение PS или PDS.
Журналы заданий также можно сохранить в наборе данных, упомянув уже созданный набор данных для SYSOUT и SYSPRINT. Но весь журнал заданий не может быть получен таким способом (т. Е. JESMSG не будет каталогизирован), как это делается в JMR или XDC.
//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=MYPROG //IN1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR //OUT1 DD SYSOUT=* //SYSOUT DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR //SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR //SYSIN DD MYDATA.BASE.LIB1(DATA1),DISP=SHR //* //STEP2 EXEC PGM=SORT
В приведенном выше примере SYSOUT каталогизируется в MYDATA.URMI.SYSOUT и SYSPRINT в MYDATA.URMI.SYSPRINT.