Учебники

Методы ввода-вывода

Любая пакетная программа, выполняемая через 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.