JCL学习手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

作业控制语言JCL(JobControlLanguage)作业控制语言JCL必须包含三个JCL基本语句:(1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。(2)执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程。(3)数据定义语句(DD):用于描述应用程序所需要的数据文件。作业控制语言JCL系统规定这三种语句行必须以“//”开头。下面是一个多步作业的例子://JOB1JOB…//STEP1EXEC…//DD1DD…作业步1//STEP2EXEC…//INDD1DD…作业步2//INDD2DD…//作业控制语言JCL六种附加语句:1)/*语句:表示六内数据结束或调用JES控制语句;2)//*语句:注释语句,由第4到第80列写出注释内容;3)//语句:空语句,用以标记一个作业的结束;4)PROC语句:流内过程(IN-STREAMPROCEDURE)或编目过程(CATALOGEDPROCEDURE)的起始标记。5)PEND语句:标志一个流内过程的结束。6)Command语句:操作员用这个语句在输入流中写入操作命令。作业控制语言JCLJCL实例://BACKUPJOB,’EXAMPLEJOB’//************************//*ITISAEXAMPLE!*//************************//STEP1EXECPGM=IEBGENER//STEPLIBDDDSN=SYS1.LINKLIB,DISP=SHR//SYSINDDDUMMY//SYSPRINTDDSYSOUT=A//SYSU1DDDSN=PR.MASTER,DISP=OLD//SYSU2DDDSN=PR.MAILY.BACKUP,DISP=(NEW,CATLG),UNIT=TAPE,//DCB=(RECFM=FB,LRECL=200,BLKSIZE=1000)//作业控制语言JCLJCL的语法规则:一、JCL字符集(1)字母(共26个)ABCDEFGHIJKLMNOPQRSTUVWXYZ(2)数字(共10个)0123456789(3)特殊字符(共10个),./‘()*&+-=(4)通配符(共6个)@$#(也可分别用X’7C’X’5B’和X’7B’表示)(5)EBCDIC可打印字符集作业控制语言JCL一般语句格式规范:分别是标识符区、名字区、操作符区、参数区和说明区.名字区后必须跟一个或多个空格,可以选择名字表达出这个JCL语句的作用。下面给出几个正确与错误的名字区的例子:正确的错误的//Z//9Z//BACKUP#1//TAPEBACKUP//#99//TEST*9//$EXAM//EXAM(0)作业控制语言JCL操作符区位于名字区之后,规定了语句的类型:JOB、EXEC、DD、PROC、PEND,或操作员命令。名字区后必须跟一个或多个空格。例如://EXAMPLEJOB//STEP1EXEC//INDD1DD作业控制语言JCL参数区在操作符区之后,其中包括被逗号分隔的参数,参数由事先规定好的关键字组成,对于这些参数其数值必须是可被代换的变值。参数区没有固定的长度及列的要求。例如://EXAMPLEJOB2000,CLASS=A//STEP1EXECPGM=IEYFORT//PRINTDDSYSOUT=A作业控制语言JCL说明区位于参数区后,用于对相应语句进行注释说明,它可以是任何需要的说明信息,注释区后必须跟一空格。需要注意的是,仅当参数出现时才能书写说明信息,不然容易与参数混淆。//EXAMPLEJOB,CLASS=AITISACOMMENT作业控制语言JCLJCL只允许在参数区和说明区有续行,当需要续行时,在当前行的第71列前必须将某个参数或某个子参数以及参数后的逗号写完整,且下一行第1、2列为“//”,第3列为空格,续行的内容只能从4~16列开始,如从16列后开始,将被认为是注释语句。//DATADDDSN=SYS1。FORTLIB,//DISP=OLD作业控制语言JCL参数规则在JCL中,参数区内的参数的类型分为两类:(1)位置参数(positional):与其他参数保持相对位置的参数;(2)关键字参数(keyword):由一个关键字和等号后面的可变数据组成。如果在一个语句内既有位置参数又有关键字参数时,所有的关键字参数必须位于位置参数之后。例://EXAMPLEJOB2000,CLASS=A位置参数关键字参数作业控制语言JCLJCL语法实例作业语句//EXPJOBJOB,’USERNAME’,MSGLEVEL=(1,1),EXAMPLE作业语句续行//MSGCLASS=Q,CLASS=A//**********************注释语句//*ITISAEXAMPLE*//**********************执行语句//STEP1EXECPGM=IEFBR14DD语句//DD1DDDSN=MJSN.TEAM01.ONE,DISP=(,CATLG),DD语句续行//SPACE=(TRK,(5,2)),UNIT=SYSDADD语句//DD1DDDSN=MJSN.TEAM01.TWO,DISP=(,KEEP),DD语句续行//SPACE=(TRK,(1,1)),UNIT=SYSDA作业控制语言JCLJOB语句JOB语句标志一个作业的开始、分配作业名并设置相关的位置参数及关键字参数,每个作业的第一个语句必须是JOB语句。JOB语句的格式如下://作业名JOB位置参数[,关键字参数][,关键字参数]。。。[注释说明]作业控制语言JCLJOB语句中的关键字参数有如下几个:1.ADDRSPC作业所需之存贮类型2.BYTES打印作业的系统输出数据集的最大千字节数3.CLASS参数规定了作业的类别用字母A~Z及数字0~9表示4.MSGCLASS用于为作业日志(joblog)设置输出类别。//EXMP1JOB,GEORGE,MSGCLASS=F5.MSGLEVEL用于控制JCL作业输出清单的内容6.NOTIFY用于请求系统在后台作业处理完毕时给指定用户发送信息。作业控制语言JCL7.PRTY用于为相应的输入队列中的作业分配优先级。8.REGION用于指定作业所需的实存或虚存空间的大小,系统将在该作业中的每一作业步使用该值。9.TIME用于指定作业占用处理器的最长时间并可通过一些信息得知该作业占用处理器的时间。10.TYPRUN用于请求特殊的作业处理。COND、GROUP、PASSWORD、PERFORM、RD、RESTART、SECLABEL、USER…作业控制语言JCLEXEC语句EXEC语句标明作业或过程中的每一作业步的开始,并告知系统如何执行该作业步。EXEC语句格式如下://[作业步名]EXEC位置参数[,关键字参数]…[符号参数=值]…[注释]EXEC语句中的位置参数有两个:PGM和PROC。每条EXEC语句必须有且仅有一个位置参数或过程名.作业控制语言JCL格式:PGM={program-name}{*.stepname.ddname}{*.stepname.procstepname.ddname}作业控制语言JCL例://JOBCJOB,JOHN,MSGCLASS=H//STEP2EXECPGM=UPDT//DDADDDSNAME=SYS1.LINKLIB(P40),DISP=OLD//STEP3EXECPGM=*.STEP2.DDA在上例中,名为STEP3的EXEC语句采用程序间接调用方式,所调用的程序名由作业步STEP2中的名为DDA的DD语句决定,在该DD语句中定义了系统库SYS1.LINKLIB,程序P40是该库的一个成员。“P40”即STEP3中要调用执行的程序名.作业控制语言JCLPROC指明作业步所要运行的过程名。格式:{PROC=procedure-name}{procedure-name}procedure-name:需要调用的过程名,过程名由1~8个字母或通配符开头的字符数字构成。所调用的过程名可以是:·编目过程的成员名或别名。·由PROC语句定义的流内过程的过程名,该流内过程必须在本作业内且本作业步前定义。在设定该参数时,可直接写出过程名。例://SPEXECPROC=PAYWRKS//BKEXECOPERATE作业控制语言JCLEXEC语句的关键字参数关键字参数.过程步名=值1.ACCT作业步所需的一个或多个记账信息子参数ACCT[.过程步名]=(记账信息)例://STP3EXECPROC=LOOKUP,ACCT=(‘/83468’)2.ADDRSPC作业步所需之存贮类型,它有两个子参数:VIRT及REAL例://CAC1EXECPGM=A,ADDRSPC=VIRT//CAC2EXECPROC=B,ADDRSPC=REAL,REGION=100K作业控制语言JCLREGION作业步所需的实存或虚存空间的大小,系统仅在本作业步中使用该值。REGION[.过程步名]={valueK}={valueM}例://MKBOYLEEXECPROC=A,REGION=100K,ADDRSPC=REAL//STEP6EXECPGM=CONT,REGION=250K作业控制语言JCLTIME用于指定作业步占用处理器的最长时间,并可通过作业输出清单得知该作业步占用处理器的时间TIME[.过程步名]={([minutes][,seconds])}={1440}={NOLIMIT}={MAXIMUM}值得注意的是:在JOB语句中不可设置TIME=0,而在EXEC语句中则可以设置TIME=0,当TIME=0时表示本作业步的执行时间由前面作业步的剩余执行时间决定。作业控制语言JCL例1://STP1EXECPGM=ACCT,TIME=(12,10)例2://STP2EXECPGM=PAY,TIME=(,30)例3://FIRSTJOB,SMITHMSGLEVEL=(1,1)//STEP1EXECPGM=READER,TIME=1···//STEP2EXECPGM=WRITER·在上例中,STEP1规定了1分钟的执行时间,STEP2的运行时间将由STEP1决定,也即STEP2的执行时间为:(1分钟–STEP2实际运行时间)。作业控制语言JCLCOND用于对先前作业步执行的返回码(returncode)进行测试,以决定是否执行本作业步。格式:(1)COND[.过程步名]=(code,operator)(2)COND[.过程步名]=((code,operator[,作业步名][,过程步名])[,(code,operator[,作业步名][,过程步名])]…[,EVEN])[,ONLY](3)COND=EVENCOND=ONLY//STEP6EXECPGM=DISKUTIL,COND=(4,GT,STEP3)在本例中如果STEP3的返回码小于4,系统将不执行STEP6。由于没有设置EVEN或ONLY,如果先前的作业步异常终止,系统将不会执行本作业步。//TEST2EXECPGM=DUMPINT,COND=(16,GE),(90,LE,STEP1),ONLY)由于设置了ONLY子参数,系统只在以下两种情况满足时执行本作业步:(1)先前作业步异常终止;(2)返回值的测试条件都不满足。那么对于本例来说,系统将会在以下三种情况都满足的情况下执行本作业步:·一个先前作业步异常终止。·所有先前作业步的返回码大于等于17。·STEP1的返回码小于等于89。作业控制语言JCL//STEP1EXECPGM=CINDY·//STEP2EXECPGM=NEXT,COND=(4,EQ,STEP1)·//STEP3EXECPGM=LAST,COND=((8,LT,STEP1),(8,GT,STEP2))·在本例中,如果STE

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功