什么是作业控制语言
作业控制语言是描述运行在IBM S/390大服务器(主机)电脑上的MVS、OS/390以及VSE操作系统中的作业(执行单元)语言。
描述操作系统对全部作业分配计算机的运行时间和资源。作业是分步骤进行的,在编制程序时需要加入特殊语句使作业能够分步进行。作业是运行在后台的,不需要用户交互,用户的请求初始化作业。通常前台作业的优先级高于后台作业。
IBM曾经把一系列的JCL语句比作餐馆中的菜单。所有的菜对应作业,在厨房厨师将客户的需要分解为不同的菜,这可以看作是作业中的步骤。当所有作业的步骤完成时,饭也就是好了。
JCL语句主要指定必须访问的输入数据集(文件),输入文件被设置为创建或更新状态,JCL语言还需要指定运行所需要的资源。一个作业的JCL语句也作为数据集存储,并由用户开始它的执行。一个作业的JCL语句集将会以数据集的形式存储下来,并且能够通过交互启动它。MVS和OS/390提供了一个交互式的像菜单一样的接口ISPF,可以用它来初始化和管理作业。
在MVS和OS/390中,操作系统中用来处理JCL的那部分被称作作业登录子系统(JES)。总共有两个版本,JES2和后来的一个带有附加功能的版本JES3。
作业控制语言的解读
作业控制语言是用户与操作系统的接口。用户通过作业控制语言的相应语句来与操作系统通讯,获得作业所需的资源等,按自己的意图来控制作业的执行。
作业控制语言由几个语句组成,对于一个作业,作业控制语言 为被执行的任务引导操作系统,并说明所需要的全部I/O设备。
(一)作业步
在一个作业中,每一次程序的执行称为一个作业步,一个作业可包含几个作业步。
一般的,一个作业由以下相对独立的三步组成:
(1)编译:把源程序语句(源模块)转换成目标模块;
(2)链接编辑:把目标模块同子程序库中的其他程序链接起来得到可执行模块;
(3)执行:运行可执行模块得到结果。
一个作业中的各步是顺序执行的,因此一个作业步的输出可以作为下一个作业步的输入。
大型服务器系统中用户的作业可以由一个或多个作业步构成。只有一个作业步的作业叫做单步作业;由多个作业步构成的作业叫做多步作业。不论单步作业还是多步作业都必须包含三个作业控制语言基本语句(JCL Statement)。它们分别是:
(1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。
(2)执行语句(EXEC):标识一个 作业步的开始,定义本作业步所要执行的程序或过程。
(3)数据定义语句(DD):用于描述应用程序所需要的数据文件。
作业控制语言由九种语句组成,除了上一节中讨论过的三种基本语句外,还有以下六种附加语句:
(1)/* 语句:表示六内数据结束或调用JES 控制语句;
(2)//*语句:注释语句,由第4到第80列写出注释内容;
(3)//语句: 空语句,用以标记一个作业的结束;
(4)PROC 语句:流内过程(IN-STREAM PROCEDURE)或编目过程(CATALOGED PROCEDURE)的起始标记。
(5)PEND语句:标志一个流内过程的结束。
(6)Command语句:操作员用这个语句在输入流中写入操作命令。
(二)JCL字符集
(1) 字母(共26个)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
(2) 数字(共10个)
0 1 2 3 4 5 6 7 8 9
(3) 特殊字符(共10个)
, . / ‘ ( ) * & + – =