JCL笔记.doc_第1页
JCL笔记.doc_第2页
JCL笔记.doc_第3页
JCL笔记.doc_第4页
JCL笔记.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一. JCL的基本概念 1. JCL的定义 Job Control Language 的缩写。JCL用户与操作系统的接口,用户通过JCL语句按照自己的意图来控制作业的执行 2. 作业 (JOB)的概念 把大型机完成的每项任务,称为一个作业 (或一个JOB)3. 作业步 (JOB STEP)的概念 执行一个作业所要经历的步骤 同一个JOB内,作业步JOB STEP不能超过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语句的区域划分 (举例说明)标识区 名字区 操作区 参数区 备注区 /XYZ JOB (SMD),DEVXMG,MSGLEVEL=(1,1) XXXXXXXXXXXHI JCL 高亮JCL保留字命令 HI JCL OFF 3. JCL的参数类型位置参数 (Positional Parameter)关键字参数 (Keyword Parameter)列示参数 (List of Sub-parameter)符号参数 (Symbolic Parameter)3. 1位置参数Positional Parameter 定义:用它的位置描述其特性的一种参数 特点: 如果一个操作符(如JOB,DD等)可以含有多种参数,则位置参数必须位于其他参数之前 如果一个操作符可以含有多个位置参数,则位置参数之间不允许调换前后顺序 位置参数的子参数 位置参数可以包含多个子参数 每个子参数也有固定位置,顺序不可调换 若前边或中间的子参数缺省,则需用“,”留位置 若后边的子参数全部缺省,则不需用“,”留位置 如果括号里只有一个参数 那么括号也可以省略3. 2关键字参数Keyword Parameter 定义:简称键字参数,以关键字来描述其特性 特点: 关键字参数一定带“=”号,带“=”号的未必是关键字参数 比如:“PGM=”和“PROC=” 是EXEC语句的位置参数 (PGM:JCL中,程序,是经过编译之后的机器码PROC:过程,用JCL语言编写的一段代码,过程内必须由一至多个作业步组成,过程只能被作业调用,不能直接执行) 又如:符号参数也带“=”号,也不属于关键字参数 关键字参数之间可以互换顺序 3. 3列示参数,List of Sub-parameter 定义:是关键字参数的一种延伸。(关键字参数的一种) 所有含有子参数的关键字参数可以统称为列示参数 特点:有位置子参数和关键字子参数两种表现形式 以“位置子参数”的形式表现 例:DISP=(NEW,KEEP,DELETE) (注意:和位置参数的子参数作区别) 其中的NEW KEEP DELETE具有位置参数的特性,不得调换顺序 以“关键字子参数”的形式表现 例:DCB=(RECFM=FB,LRECL=80,DSORG=PS) 其中的RECFM、LRECL、DSORG 具有关键字参数特性,可以换顺序 注意: 括号的用法:若一个参数含有多个子参数,则必须用括号进行包含, 除非只写一个子参数。如:DISP=NEW 或 DCB=LRECL=80 子参数最多有2级,即括号最多2层。 3. 4符号参数Symbolic Parameter 定义:与“变量”概念类似,并非系统指定的,而是程序员自定义 符号参数的三种定义和赋值的方式: SET语句,权限最大,可在过程或JOB里定义符号参数并赋值 PROC语句,只在过程里定义符号参数 (并赋值) (可以不赋值) EXEC语句,在调用过程时,对符号参数赋值 调用符号参数:在参数之前加一个“&”号,即为调用符号参数 利用过程中定义的符号参数,可以向本过程传递不同的参数值4. JCL的续行规范和方式 JOB、EXEC、DD、PROC等语句续行几率最大 续行时,在一个完整的参数后紧接着“,”(必须在第71列之前) 下一行的第1列、第2列仍然必须为“/” 欲延续的参数必须在第4列至第16列之间开始 例: /FILE1 DD DSN=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语句 作用:定义作业名称,表示作业开始 格式:/jobname JOB parameters comments 规则:每个作业的起始语句必须是JOB语句 每个作业必须有且只有一个JOB语句 JOB语句中的jobname必须与所在的member名一致 jobname尽量起有意义的名字 常见的JOB的参数和格式: /jobname JOB accounting-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的MSG LOG, USERID的值须与当前登陆TSO的USERID相同, 如:NOTIFY=USER21,表示作业返回码发送给USER21 常用写法:NOTIFY=&SYSUIDSYSUID系统自带变量 & SYSUID调用系统登录账号的ID 作业返回码的几种状况 JOBID是不同的,系统生成的。1.MAXCC最大条件码 (MAX Condition Code) MAXXCC=0 作业正常=4 警告,=8,=12等,数字为4的倍数3.JCL ERROR 语法错误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大于等于S1 or 16不等于S2,作业步S4停止执行。JOB语句 (常用参数小结) CLASS=A,设定作业输入类别 MSGCLASS=A,设定作业日志的输出类别 MSGLEVEL=(1,1),控制作业清单的输出内容及条件 NOTIFY=&SYSUID,控制是否显示作业返回码 2. PROC语句 (名字区必须要写,后面必须跟符号参数) 作用:定义一段处理过程 过程:用JCL语言编写的一段代码,过程内必须由一至多个作业步组成,过程只能被作业调用,不能直接执行 种类:流内过程和编目过程 什么是编目(CATLG)? 保留并写入3.4 数据集列表 流内过程:写在一个作业内部,只能被本作业调用(必须先定义,后调用)。流内过程在同一个作业内最多只能定义15个 编目过程:写在作业外部的某个PDS或PDSE的member中, 可以被多个作业所调用 不同数据集可以有同名MEMBER,所以通常需要指定查找路径,就需要用到JCLLIB语句 格式:/procname PROC 符号参数 注意:编目过程语句的名字必须与所在的member名一致, 并且,无论哪种过程,都不允许含有如下语句 JOB 语句、DELIMITER (/*) 语句、NULL (/) 语句、 DD * 语句、DD DATA 语句、JOBLIB DD 语句 一个流内过程的例子: /EXAMPLE JOB CLASS=A,MSGCLASS=A,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/XYZ PROC OUTDD=,INDD= /CPY EXEC PGM=IEBGENER/SYSPRINT DD SYSOUT=*/SYSUT1 DD DSN=&INDD.,DISP=(SHR,KEEP,KEEP)/SYSUT2 DD DSN=&OUTDD.,DISP=(SHR,KEEP,KEEP)/SYSIN DD DUMMY/XYZEND PEND /STEP1 EXEC PROC=XYZ,OUTDD=USERID.PSOUT,INDD=USERID.PSIN /. /STEP2 EXEC PROC=XYZ,OUTDD=USERID.ABC2,INDD=USERID.ABC1 /. SET语句定义符号参数并赋值,权限最大,可在过程或JOB里定义符号参数并赋值该条语句必须写在JOB后和使用该符号参数之前, 在过程中和作业中都可以使用SET语句定义符号参数并赋值PROC语句定义一段处理过程,只在过程里定义符号参数(可以不赋值)跟EXEC语句搭配使用,通过符号参数向过程传递数值EXEC语句在调用过程时,对符号参数赋值,跟PROC语句搭配使用,通过符号参数向过程传递数值3. PEND语句 作用:过程的结束语句,一般与流内PROC搭配使用 规则: 流内过程以PROC语句开始,必须以PEND语句结束 编目过程以PROC语句开始,通常不需要PEND语句结束 格式:/ PEND4. JCLLIB语句 名字可以省略 作用:指定私有的过程库及查找顺序的语句,以备调用编目过程 格式:/ JCLLIB ORDER=(library1,library2,library3,) 举例: /SEARCH JCLLIB ORDER=(USERID.LIB1,USERID.LIB2) /STEP1 EXEC PROC=WWW /STEP2 EXEC PROC=QQQ /先在lib1里找,再去lib2里找,再在系统编目库里找。5. EXEC语句 (名字不能省略 且不能重复) 作用:每个作业步的起始语句,用以指定所要执行的程序或调用的过程 格式:/stepname EXEC PGM= | PROC= | procedure name , PARM= parameter value, REGION= region-size, COND=(code,operator,stepname),), TIME=(minutes,seconds) 规则: PGM= program name PROC= procedure name 流内过程和编目过程都可以 PARM= value,表示向程序传送的参数值,最多100个字符; 向过程传递参数值用过程中定义的符号参数 向程序传递参数值用PARM= value, 向过程传递参数值用符号参数6. NULL语句 作用:表示作业的结束 格式:/ 规则:当作业结束时,该语句可以省略不写 举例: /EXAMPLE JOB CLASS=A,MSGCLASS=A,/ MSGLEVEL=(1,1),NOTIFY=&SYSUID/. /. /之后的内容不参与执行7. SET语句 作用:定义符号参数并且赋值 格式:/ SET parameter1=value1,parameter2=value2, 规则:该条语句必须写在JOB后和使用该符号参数之前, 在过程中和作业中都可以使用SET语句定义符号参数并赋值 举例: / SET A=123,PBBAT=AAPP03,C1=789,D1=USERID /SEARCH JCLLIB ORDER=(&D1.LIB1,&D1.LIB2)/上面的内容相当于ORDER=(USERIDLIBI, USERID.LIB2). COMMENT语句 作用:注释语句,不参与作业的执行 格式:/* 注释内容 举例: /*/* PROC :AIPEOD10 * /* FUNCTION :SPLIT VOUCHER FILES */* VERSION :5.0 * /* AUTHOR :LIN MING * /*DELIMITER语句 作用:流内数据或流内控制语句的结束符 规则:与“DD *”语句或“DD DATA”语句搭配使用 格式:/* 流内数据:作业流内部的一些处理数据,一般用来向外部文件 (PS) 传递使用 举例: /STEP1 EXEC PGM=IEBGENER/SYSPRINT DD SYSOUT=* /SYSUT1 DD *20121221ABC00120121201UVW00220120921XYZ003/*/SYSUT2 DD DSN=USERID.PS2,DISP=(OLD,KEEP,KEEP)/SYSIN DD DUMMY PGM程序分两种 1实用程序(系统程序)维护大机自身 2应用程序 如COBOL 满足不同客户的需求如何区别流内数据和流内控制语句,区别有三1流内数据写在/SYSUT1 流内控制语句写在/SYSIN2流内数据没有逻辑 以动词开始,有固定格式3可以在第一列编写 一般不能在第一列开始写 流内控制语句:大多数实用程序都需要控制语句配合,才能完成功能 举例: /STEP1 EXEC PGM=IDCAMS/SYSPRINT DD SYSOUT=* /SYSIN DD * DELETE USERID.PS3 /* 10. DD语句 作用:定义每个作业步中所要用到的文件 (数据集) 和属性 规则: 同一个作业步内可以有多条DD语句 每个DD语句指定一个文件 在同一个作业步内,不得有重复的 “外部文件名” (DD语句的名字) 以SYS、JOB 、STEP 、JCL等开头的外部文件名具有特殊的意义,不得随意更改。如SYSUT1(指定输入文件,输入从哪来)、SYSUT2(制定输出数据集)、SYSPRINT(日志的输出数据集)、SYSIN(流内控制语句)等 当执行COBOL程序时,DD语句的外部文件名必须与该COBOL程序中ASSIGN TO子句指向的外部文件名一致 凡是以IEB开头的,前面SYSIN必需要写。 格式和参数: /ddname DD positional,/ DSN=data-set-name,/ DISP=(status,normal,abnormal),/ SPACE=(unit-of-measure,(primary,secondary,.),/ DCB=(LRECL=logical-record-length,/ BLKSIZE=block-size, RECFM=record-format,),/ UNIT=device-name or group-name,/ VOL=SER=volume-serial-number,/ DD语句 (位置参数) * :标志流内数据或流内控制语句的开始 /SYSUT1 DD * data 输入的数据不允许以“/”开始 /* DATA :标志流内数据或流内控制语句的开始 /SYSUT1 DD DATA data 输入的数据可以含有“/”开始 (如果写了/ /会当成数据)/* DUMMY :表示不对实用程序输入流内控制语句 /SYSIN DD DUMMY 注意:DD语句的位置参数互不相容 (即:不能在同一条语句中同时出现) DD语句 (关键字参数) DSN 作用:定义物理文件名称 格式:DSN=data-set-name 永久数据集 永久数据集即经过编目的,生命周期较长的数据集 如:顺序数据集、分区数据集、扩展分区数据集、VSAM数据集等 临时数据集 (名字不能分段) 临时数据集仅作用于当前的作业步,作业步执行完毕则自动删除 如:DSN=&HKOUT 或 DSN=&TEMP(MEMEBER1) &的作用:调用临时数据集注意:目前环境下的永久数据集名字首段必须为USERID, 即 DSN=USERID.XXXXX DISP 作用:描述数据集在作业步执行之前的状态,及执行后如何处理 结构:DISP由三个位置子参数构成 格式:DISP=(status,normal,abnormal) 如:DISP=(NEW,CATLG,DELETE) =(SHR,KEEP,KEEP) =(OLD,KEEP,KEEP) =(MOD,CATLG,UNCATLG) =(,CATLG) 第一个位置子参数表示在作业步执行之前,数据集的存在状态 NEW :分配新的数据集,一般作为输出文件使用 SHR :在作业步执行之前数据集已经存在,以共享的形式使用 记录覆盖 OLD :在作业步执行之前数据集已经存在,以独占的形式使用 记录覆盖 MOD :当数据集不存在,则视为“NEW”; 当数据集已经存在,则视为以独占的形式使用, 并且记录追加在该数据集的末尾 (必须是顺序数据集) 第二个位置子参数表示作业步正常执行时,数据集的处理方式 DELETE :删除该数据集,释放所占空间 (不用压缩么?) KEEP :仍然保留该数据集 PASS :保留该临时数据集,并传递给后续作业步使用 CATLG :保留该数据集,并将其进行编目 第三个位置子参数表示作业步异常执行时,数据集的处理方式 DELETE :删除该数据集,释放所占空间 KEEP :仍然保留该数据集 CATLG :保留该数据集,并将其进行编目 默认值 NO DISP : DISP=(NEW,DELETE,DELETE) DISP=NEW : DISP=(NEW,DELETE,DELETE) DISP=SHR : DISP=(SHR,KEEP,KEEP) DISP=OLD : DISP=(OLD,KEEP,KEEP) DISP=MOD : DISP=(MOD,KEEP,KEEP) DISP=(,CATLG) : DISP=(NEW,CATLG,CATLG) SPACE 作用:为数据集分配空间大小,一般在新建数据集时使用 格式:SPACE=(TRK,CYL,(primary,secondary,directory) TRK :表示空间分配以TRACK为单位 CYL :表示空间分配以CYLINDER(磁道)为单位 primary :首次分配空间大小 secondary :二次分配空间大小 (扩展分配空间大小) directory :目录块数量 例:SPACE=(TRK,(5,2,0) 或 SPACE=(TRK,(5,2) 分配PS SPACE=(TRK,(5,2,10) 分配PDS DCB 作用:指定数据集的属性信息 (记录格式、记录长度、块大小、组成结构等) 格式:DCB=(RECFM=,LRECL=,BLKSIZE=,DSORG=) RECFM :记录格式,如 FB定长块结构,U系统指定 LRECL :记录长度,通常为80 BLKSIZE :分块大小,18-32760之间 DSORG :数据集组成结构 (数据集类型) DSORG=PS,表示顺序数据集 DSORG=PO,表示分区数据集 例:DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200,DSORG=PS) UNIT 作用:表示数据集使用的设备类型 (存储介质) 及编号 格式:UNIT=(device type or group name,count) device type :某种设备类型,UNIT=3390,表示硬盘 UNIT=130,表示磁带机 group name :某种存储组设备,如UNIT=SYSDA count:同时要使用的设备个数,最多59个 VOLUME (由于SMS的存在 联系环境下可以不写该语句) 作用:指定数据集所在的卷标 格式:VOL=SER=serial number serial number :卷标是一个1-6个字符的名字 注意:当系统中有SMS (存储管理子系统) 时,不需要指定VOLUME参数, 系统会动态的去建立或寻找数据集 DD语句 (特殊的DD语句名字) /JOBLIB DD 作用:指定私有的程序库 (PDS或PDSE)名称 (指定优先查找路径)找不到的话,会去系统程序库里查找 规则: 作用范围为整个作业 该条语句必须紧跟JOB语句,两者之间不允许有其他语句 举例: /EXAMPLE JOB 123,ABC,CLASS=A, /JOBLIB DD DSN=USERID.LIB1,DISP=SHR /STEP1 EXEC PGM=UPDATE / /STEPLIB DD 作用:指定私有的程序库 (PDS或PDSE)名称 (指定优先查找路径) 规则: 作用范围为当前的作业步 如果一个作业既定义了JOBLIB DD,又为某一个作业步定义了STEPLIB DD,那么当前的作业步会首先到STEPLIB DD所指定的私有程序库去搜索,若找不到该程序,则直接去系统程序库搜索,而JOBLIB DD对于当前的作业步会被忽略掉 举例: /STEP2 EXEC PGM=PAYROLL /STEPLIB DD DSN=USERID.LIB2,DISP=SHR 性质 作用JCL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论