输入输出方法

通过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
//*


在示例中e 1,MYPROG的输入通过SYSIN传递.数据在JCL中提供.两个数据记录传递给该程序.请注意,/*标记了流入SYSIN数据的结束.

"CUST1 1000"是record1,"CUST2 1001"是record2.在读取数据时遇到符号/*时,满足数据结束条件.

在示例2中,SYSIN数据保存在数据集中,其中SAMPLE.SYSIN.DATA是PS文件,可以保存一个或多个数据记录.

通过文件输入数据

如前几章中的大部分示例所述,输入到程序的数据可以通过PS,VSAM或GDG文件提供,具有相关的DSN名称和DISP参数以及DD语句.

在示例1中,SAMPLE.INPUT1是输入文件通过哪些数据传递给MYPROG.它在程序中被称为IN1.

JCL中的数据输出

可以将JCL中的输出编目到数据集中或传递给SYSOUT.如DD语句章节中所述, SYSOUT = * 将输出重定向到与JOB语句的MSGCLASS参数中提到的类相同的类.

保存作业日志

指定 MSGCLASS = Y 将作业日志保存在JMR(作业日志管理和检索)中.整个JOB日志可以重定向到SPOOL,并可以通过对SPOOL中的作业名称提供XDC命令来保存到数据集.在SPOOL中给出XDC命令时,将打开数据集创建屏幕.然后可以通过提供适当的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和MYDATA.URMI.SYSPRINT中的SYSPRINT中编目.