JCL笔记.docx
《JCL笔记.docx》由会员分享,可在线阅读,更多相关《JCL笔记.docx(20页珍藏版)》请在冰豆网上搜索。
JCL笔记
一.JCL的基本概念
1.JCL的定义
ØJobControlLanguage的缩写。
JCL用户与操作系统的接口,用户通过JCL语句按照自己的意图来控制作业的执行
2.作业(JOB)的概念
Ø把大型机完成的每项任务,称为一个作业(或一个JOB)
3.作业步(JOBSTEP)的概念
Ø执行一个作业所要经历的步骤
Ø同一个JOB内,作业步JOBSTEP不能超过255个
Ø每个作业步的标志语句是EXEC语句
4.JCL的功能
Ø控制系统权限
Ø管理系统资源和数据集
Ø对COBOL程序的编译和执行cobol源代码>>>JCL编译>>>cobol机器码(可执行码)>>>JCL执行
5.JCL的重要性
Ø编译作业流和执行作业流都用JCL编写
Ø维护、管理大型机资源的基础语言
二.JCL的语法规则
1.JCL允许使用的字符
Ø字母字符:
A–Z
Ø数字字符:
0–9
Ø通配字符:
@、#、$
Ø特殊字符:
,.‘’/()*&+-=空格
分割不同参数
空格分割不同区域标识区【空格】名字区【空格】操作区【空格】....
&1.调用符号参数的值2.定义临时数据集
ØEBCDIC可打印字符集(EBCDIC码)(两个十六进制数表示一个字符)
2.JCL语句的区域划分
Ø标识区
✓告知系统所包含的语句类型,用来区分语言种类
✓每条语句以“//”作为开始
Ø名字区
✓必须从第3列开始编写
✓最多8个字符,可用字母、数字、通配符(@、#、$)组合
✓首字符不能是数字,必须是字母或通配符(@、#、$)
Ø操作区(操作符区)
✓表示语句的类型。
如:
操作符是EXEC,则该条语句就被界定为EXEC语句
Ø参数区(运算区)
✓几乎每一个操作符都需要有参数配合使用,才能完成语句的效力
✓可包含多个参数,参数之间用“,”分隔
Ø备注区(注释区、说明区)
✓写注释用,不参与语句的执行(此区不建议使用)
2.JCL语句的区域划分(举例说明)
标识区名字区操作区参数区备注区
//XYZJOB(SMD),‘DEVXMG’,MSGLEVEL=(1,1)XXXXXXXXXXX
HIJCL高亮JCL保留字命令HIJCLOFF
3.JCL的参数类型
位置参数(PositionalParameter)
关键字参数(KeywordParameter)
列示参数(ListofSub-parameter)
符号参数(SymbolicParameter)
3.1位置参数PositionalParameter
Ø定义:
用它的位置描述其特性的一种参数
Ø特点:
✓如果一个操作符(如JOB,DD等)可以含有多种参数,则位置参数必须位于其他参数之前
✓如果一个操作符可以含有多个位置参数,则位置参数之间不允许调换前后顺序
位置参数的子参数
Ø位置参数可以包含多个子参数
Ø每个子参数也有固定位置,顺序不可调换
Ø若前边或中间的子参数缺省,则需用“,”留位置
Ø若后边的子参数全部缺省,则不需用“,”留位置
如果括号里只有一个参数那么括号也可以省略
3.2关键字参数KeywordParameter
Ø定义:
简称键字参数,以关键字来描述其特性
Ø特点:
✓关键字参数一定带“=”号,带“=”号的未必是关键字参数
比如:
“PGM=”和“PROC=”是EXEC语句的位置参数
(PGM:
JCL中,程序,是经过编译之后的机器码
PROC:
过程,用JCL语言编写的一段代码,过程内必须由一至多个作业步组成,过程只能被作业调用,不能直接执行)
又如:
符号参数也带“=”号,也不属于关键字参数
✓关键字参数之间可以互换顺序
3.3列示参数,ListofSub-parameter
Ø定义:
是关键字参数的一种延伸。
(关键字参数的一种)
所有含有子参数的关键字参数可以统称为列示参数
Ø特点:
有位置子参数和关键字子参数两种表现形式
✓以“位置子参数”的形式表现
例:
DISP=(NEW,KEEP,DELETE)
(注意:
和位置参数的子参数作区别)
其中的NEWKEEPDELETE具有位置参数的特性,不得调换顺序
✓以“关键字子参数”的形式表现
例:
DCB=(RECFM=FB,LRECL=80,DSORG=PS)
其中的RECFM、LRECL、DSORG具有关键字参数特性,可以换顺序
注意:
•括号的用法:
若一个参数含有多个子参数,则必须用括号进行包含,
除非只写一个子参数。
如:
DISP=NEW或DCB=LRECL=80
•子参数最多有2级,即括号最多2层。
3.4符号参数SymbolicParameter
Ø定义:
与“变量”概念类似,并非系统指定的,而是程序员自定义
Ø符号参数的三种定义和赋值的方式:
✓SET语句,权限最大,可在过程或JOB里定义符号参数并赋值
✓PROC语句,只在过程里定义符号参数(并赋值)(可以不赋值)
✓EXEC语句,在调用过程时,对符号参数赋值
Ø调用符号参数:
在参数之前加一个“&”号,即为调用符号参数
Ø利用过程中定义的符号参数,可以向本过程传递不同的参数值
4.JCL的续行规范和方式
ØJOB、EXEC、DD、PROC等语句续行几率最大
Ø续行时,在一个完整的参数后紧接着“,”(必须在第71列<含>之前)
Ø下一行的第1列、第2列仍然必须为“//”
Ø欲延续的参数必须在第4列至第16列之间开始
例:
//FILE1DDDSN=USERID.ABC,DISP=(NEW,CATLG,DELETE),
//DCB=(RECFM=FB,LRECL=80,DSORG=PS)
D在必须4-16列之间
三.JCL的语句介绍
1.JOB语句定义作业名称,表示作业开始每个作业的起始语句必须是JOB语句
2.PROC语句只在过程里定义符号参数(并赋值)
3.PEND语句过程的结束语句,一般与流内PROC搭配使用
4.JCLLIB语句指定私有的过程库及查找顺序的语句,以备调用编目过程
(名字区可省略)
5.EXEC语句每个作业步的起始语句,用以指定所要执行的程序或调用的过程在调用过程时,对符号参数赋值每个作业步的标志语句是EXEC语句
6.NULL语句表示作业的结束
7.SET语句权限最大,可在过程或JOB里定义符号参数并赋值(名字区可省略)
8.COMMENT语句注释语句,不参与作业的执行
9.DELIMITER语句流内数据或流内控制语句的结束符
10.DD语句定义每个作业步中所要用到的文件(数据集)和属性
1.JOB语句
Ø作用:
定义作业名称,表示作业开始
Ø格式:
//jobnameJOBparameterscomments
Ø规则:
每个作业的起始语句必须是JOB语句
每个作业必须有且只有一个JOB语句
JOB语句中的jobname必须与所在的member名一致
jobname尽量起有意义的名字
Ø常见的JOB的参数和格式:
//jobnameJOBaccounting-information,programmer-name,
//CLASS=job-class,
//MSGCLASS=message-class,
//MSGLEVEL=(statements,messages),
//NOTIFY=USERID,
//REGION=region-size,设定作业运算空间大小的参数
//TIME=([minutes][,seconds]),设定作业运算时间的参数
//COND=((code,operator),…),满足条件,整个作业停止执行
//……
JOB语句(参数说明)
Øaccounting-information:
位置参数,1-143个字符,可省略
Øprogrammer-name:
位置参数,1-20个字符,可省略,
与accounting-information顺序不可调换
ØCLASS=job-class
✓设定本作业的输入类别
✓类别可填写A-Z或0-9其中之一
✓相同类别的作业会放在同一输入队列里顺序的等待执行,
但队列之间并没有优先级
✓CLASS=A
ØMSGCLASS=message-class
✓设定作业日志的输出类别(作业日志:
监控作业执行情况,检查作业错误原因)
✓类别可填写A-Z或0-9其中之一
✓在输出时,DD语句的SYSOUT用来存放作业日志,因此,
本参数值与DD语句的SYSOUT参数值需相同,即SYSOUT=A(从A类别输出,存放在SYSOUT),
简便写法为SYSOUT=*,*表示跟随MSGCLASS的值
✓MSGCLASS=A
✓SYSOUT:
是系统内置的输出数据集,用来存放作业日志或程序的输出结果
✓MSGLEVEL=(statements,messages)
(MSGLEVEL:
作业清单作业源代码)
✓控制作业清单的输出内容和条件
✓statements控制作业清单的输出内容
✓0作业清单只输出JOB语句
✓1作业清单将所有JCL语句及调用过程代码都输出(输出所有语句)
✓2作业清单只输出JCL语句(输出除了过程以外的所有语句)
✓messages控制作业清单的输出条件
✓0只有作业非正常执行,才输出
✓1无论作业正常执行与否,都输出
✓MSGLEVEL=(1,1)
ØNOTIFY=USERID用来控制作业返回码
✓控制作业处理后的反馈信息发送到哪个USER-ID的MSGLOG,
✓USERID的值须与当前登陆TSO的USERID相同,
如:
NOTIFY=USER21,表示作业返回码发送给USER21
✓常用写法:
NOTIFY=&SYSUID
SYSUID系统自带变量
&SYSUID调用系统登录账号的ID
✓作业返回码的几种状况
JOBID是不同的,系统生成的。
1.MAXCC最大条件码(MAXConditionCode)MAXXCC=0作业正常
=4警告,=8,=12等,数字为4的倍数
3.JCLERROR语法错误
3.ABENDED
每个作业步也有返回码,MAXCC是其中数值最大的。
TIME=(1,3)1分3秒运行到1分3秒时停止执行。
REGION=1024K空间
COND=(8,LT)满足判断条件,整个作业或者当前作业步停止执行。
8=[0-4095]LT=比较关系符
GT大于GE大于等于LT小于LE小于等于EQ等于NE不等于
例COND=(8,LT)8<任何一个作业步的返回码如符合条件,作业停止执行
COND=(4,EQ,S1)S1作业步返回码=4时作业停止执行
可用之前的作业步决定后面作业是否继续执行。
若作业步S4中,COND=((8,GE,S1),(16,NE,S2))表示若满足8大于等于S1or16不等于S2,作业步S4停止执行。
JOB语句(常用参数小结)
ØCLASS