环境
在Windows/Linux上安装JCL
有许多可用于Windows的免费主机仿真器,可用于编写和学习示例JCL。
一个这样的模拟器是Hercules,它可以通过以下几个简单的步骤轻松安装在Windows中:
下载并安装Hercules仿真器,可从Hercules的主页获得: www.hercules-390.eu
有关编写和执行JCL的各种命令的完整指南,请访问URL www.jaymoseley.com/hercules/installmvs/instmvs2.htm
除了最新的64位z/Architecture之外,Hercules还是大型机System/370和ESA/390架构的开源软件实现。 Hercules在Linux,Windows,Solaris,FreeBSD和Mac OS X下运行。
在大型机上运行JCL
用户可以通过多种方式连接到大型机服务器,例如瘦客户端,虚拟终端,虚拟客户端系统(VCS)或虚拟桌面系统(VDS)。
每个有效用户都有一个登录ID进入Z/OS界面(TSO/E或ISPF)。 在Z/OS接口中,JCL可以编码并存储为分区数据集(PDS)中的成员。 提交JCL时,执行它并按照前一章的作业处理部分中的说明接收输出。
JCL的结构
具有共同语句的JCL的基本结构如下:
//SAMPJCL JOB 1,CLASS=6,MSGCLASS=0,NOTIFY=&SYSUID <b>(1)</b>
//* <b>(2)</b>
//STEP010 EXEC PGM=SORT <b>(3)</b>
//SORTIN DD DSN=JCL.SAMPLE.INPUT,DISP=SHR <b>(4)</b>
//SORTOUT DD DSN=JCL.SAMPLE.OUTPUT, <b>(5)</b>
// DISP=(NEW,CATLG,CATLG),DATACLAS=DSIZE50
//SYSOUT DD SYSOUT=* <b>(6)</b>
//SYSUDUMP DD SYSOUT=C <b>(6)</b>
//SYSPRINT DD SYSOUT=* <b>(6)</b>
//SYSIN DD * <b>(6)</b>
SORT FIELDS=COPY
INCLUDE COND=(28,3,CH,EQ,C'XXX')
/* <b>(7)</b>
程序说明
编号的JCL陈述已在下面解释:
(1) JOB statement - 指定(1) JOB statement的SPOOL所需的信息,例如作业ID,执行优先级,作业完成时通知的用户ID。
(2) //* statement - 这是一条评论声明。
(3) EXEC statement - 指定要执行的PROC /程序。 在上面的示例中,正在执行SORT程序(即,按特定顺序对输入数据进行排序)
(4) Input DD statement - 指定要传递给(3)中提到的程序的输入类型。 在上面的示例中,物理顺序(PS)文件在共享模式(DISP = SHR)中作为输入传递。
(5) Output DD statement - 指定程序在执行时产生的输出类型。 在上面的示例中,创建了一个PS文件。 如果一个语句超出了一行中的第70个位置,那么它将在下一行继续,该行应以“//”开头,后跟一个或多个空格。
(6)可以有其他类型的DD语句来为程序指定附加信息(在上面的示例中:SORT条件在SYSIN DD语句中指定)并指定错误/执行日志的目标(例如:SYSUDUMP/SYSPRINT)。 DD语句可以包含在数据集(大型机文件)中,也可以包含在流数据中(在JCL中硬编码的信息),如上例所示。
(7) /*标记流数据的结束。
除流数据外的所有JCL语句都以//开头。 在JOB,EXEC和DD关键字之前和之后应该至少有一个空格,并且该语句的其余部分不应该有任何空格。
JOB参数类型
每个JCL语句都附带一组参数,以帮助操作系统完成程序执行。 参数可以有两种类型:
位置参数
出现在语句中的预定义位置和顺序。 示例:会计信息参数只能在JOB关键字之后和程序员名称参数和关键字参数之前出现。 如果省略位置参数,则必须用逗号替换它。
位置参数存在于JOB和EXEC语句中。 在上面的例子中,PGM是在EXEC关键字之后编码的位置参数。
关键字参数
它们在位置参数之后编码,但可以按任何顺序出现。 如果不需要,可以省略关键字参数。 通用语法是KEYWORD = value 。 示例:MSGCLASS = X,即作业完成后作业日志重定向到输出SPOOL。
在上面的示例中,CLASS,MSGCLASS和NOTIFY是JOB语句的关键字参数。 EXEC语句中也可以有关键字参数。
这些参数已在后续章节中详细说明,并附有适当的示例。