您好,欢迎访问三七文档
1主机JCL基础培训2课程目的JCL是主机平台程序开发中的基础工具通过本课程的学习,让你在动手开发程序前掌握JCL知识,熟练使用JCL3目录概述基本概念结构和实例语法结构语句介绍常用的实用程序JOB提交JOB返回码和执行信息4JCL是什么?JobControlLanguage作业控制语言是一种电脑语言,它由许多作业控制语句所组成,用来调用作业系统(JES)对应用程序进行处理。即我们使用计算机系统完成某一任务时,需要对所作的工作及所需要的资源进行说明描述,并提交给计算机系统.通俗的讲,就是为了让主机系统为你工作,你必须向系统描述要作的工作和需要的资源,用JCL向系统提供这些信息。5JCL作什么?决定作业创建JCL提交作业JES翻译JCL并送MVSMVS完成作业JES收集作业的输出和信息用户查看和翻译输出系统信息用户动作系统的动作6JCL:基本概念JOB用户使用计算机系统完成某一任务时,要求计算机所做的工作的集合。JOBSTEP完成一个JOB,可能需要运行多个程序,每一个程序的执行称为一个作业步,每个作业步由许多作业控制语句组成。JOBCONTROLSTATEMENT提交作业给系统,需要告诉系统JOB需要哪些输入资料,怎样处理,输出资料存储在哪里等,利用JCL通过一系列语句传送这些信息,这些语句叫作业控制语句。7//HP0014SJOB'ACCT#',HP0014,//CLASS=A,//MSGCLASS=X,//MSGLEVEL=(1,1),//NOTIFY=&SYSUID//*//*THEFIRSTJCL//*//STEP1EXECPGM=SORT//SYSINDD*SORTFIELDS=(9,15,CH,A)/*//SYSOUTDDSYSOUT=*//SORTINDD*HP0001CHENGANGHT0002MAYANHF0003YERUIHUAHS0004XIAFANHW0005ZHOUFENGBO/*//SORTOUTDDSYSOUT=*/*JCL结构一个JCL作业有一个JOB语句,它描述该作业的相关信息一个JOB语句下可有多个EXEC语句,每一句描述一个作业步一个EXEC语句下可有多个DD语句,每一句描述该作业步所用的数据集(DD:DataDefinition)8JCL结构语句用途//JOB标识作业的开始,给作业一个名字//EXEC标识作业步的开始,给作业步一个名字,指明该作业步所用的程序//DD标识和描述数据集//*comment填写注释,注释语句是描述程序及其所需资源的主要方法/*分隔符,表示输入流(inputstream)的数据的结束9JCL:实例//COPYDSJOB(ACCT#),'P390',NOTIFY=&SYSUID//*//STEP01EXECPGM=CCKDDUMP//STEPLIBDDDSN=SYS1.LINKLIB,DISP=SHR//SYSPRINTDDSYSOUT=*//SYSUT1DDDISP=SHR,UNIT=3390,VOL=SER=SARES1//SYSUT2DDDSN=WH0009.SARES1.CCKD,DISP=(NEW,CATLG),//UNIT=3390,VOL=SER=MIIU01,//SPACE=(TRK,(10000,2000),RLSE),//DCB=(LRECL=4096,RECFM=FB,BLKSIZE=0,DSORG=PS)//*//STEP02EXECPGM=IEFBR14//DD1DDDSN=WH0009.SARES1,DISP=(NEW,CATLG),//UNIT=3390,VOL=SER=MIIU01,//SPACE=(TRK,(10000,2000),RLSE),//DCB=(LRECL=4096,RECFM=FB,BLKSIZE=0,DSORG=PS)//*10JCL:语法结构每一个JCL语句可包含五个字段(域):标识符字段命名字段操作数字段参数字段注释字段|||||//NAMEOPERATIONOPERANDCOMMENTS|||1,2列|--------3~71列---------------|例://DDNAMEDDDSN=TRANS1,DISP=OLDTRANSACTIONFILEA.//必须写在第1列和第2列;(分隔符语句/*除外)B.Name字段必须从第3列开始书写,由1—8个字母和数字及通用符号($,#,@),且第一位必须是字母或通用符号($,#,@);C.各字段间以空格分隔;D.操作数字段必须跟随NAME字段,并且必须是语法规则里有的;E.Name字段、操作数字段、参数字段必须位于3~71列间;11JCL:语法结构F.对书写参数字段有如下规则:.参数字段紧跟在操作数字段之后;.各参数间不许有空格(因为空格是字段间的分隔符);.各参数间以逗号分隔;.参数字段前面和后面都必须至少有一空格;.参数字段需要换行时,//必须写在续行的第1列和第2列,续行的参数字段必须从第4--16列之间开始书写。G.在一个作业步中描述各数据集的DD语句可以任意先后顺序书写。12JCL:语句介绍(JOB)JOB语句:作业语句格式://JOBNAMEJOBoperandscomments作用:用以标明一个作业的开始及其作业名,同时提供必要的计数信息及其它相关的参数。规则:每一个JOB必须有且只能有一个JOB语句,JOB语句中的jobname必须编写。13JOB语句编写格式//JobnameJOBaccounting-information,//programmer-name,//CLASS=job-class,//MSGCLASS=message-class,//MSGLEVEL=(statements,messages),//REGION=region-size,//TIME=([minutes][,seconds]),//NOTIFY=useridentification,//COND=((code,operator),…),//TYPRUN=typerun,//LINES=(nnnnnn,action),//RESTART=stepnameJCL:语句介绍(JOB)14JOB语句主要参数说明1)accounting-information指定客户信息,可省略2)programmer-name标识作业的拥有者,可省略3)CLASS=job-class设定JOB处理的优先级别给作业分配一个级别,供JES进行作业调度,一般用AJCL:语句介绍(JOB)154)MSGCLASS=message-class指定系统信息及JCL语句输出的级别,一般用A具体级别的划分需查看JES2中OUTCLASS配置5)MSGLEVEL=(statements,messages)指定JOB所有输出列表的内容,一般用(1,1)statements0=只印出JOB语句(即第一行)1=所有JCL和procedure内容均印出2=只印出JCL语句messages0=系统信息不印出,除非jobabnormally才印出1=系统信息正常与否都印出JCL:语句介绍(JOB)166)REGION=region-size表示分配给JOB使用的存储空间大小以nnnnK或nnnnM表示nnnn最好是4的倍数,如:REGION=1024KREGION=0M,表示按需要系统自动分配7)NOTIFY=useridentificationJOB处理完后的提示信息发送给指定的USER-ID,若接收信息的使用者已经logoff,信息会保存直至该userIDlogon接收该信息为止JCL:语句介绍(JOB)17JOB语句实例:语句参数编辑好后,一般很少改动JCL:语句介绍(JOB)//JCLTSTJOB'ACCT#',USERTST,//CLASS=A,//MSGCLASS=A,//MSGLEVEL=(1,1),//NOTIFY=&SYSUID,//REGION=1024K18JCL:语句介绍(EXEC)EXEC语句:执行语句作用:用以标明一个作业步的开始及分配一个作业步名,标识一程序或过程执行。格式://stepnameEXEC[PGM|PROC],PARM=parameter,REGION=region-size,COND=((code,operator,stepname),…),TIME==([minutes][,seconds])19EXEC语句主要参数说明:1)PGM=programnamePGM:标识执行的程序名举例://STEP1EXECPGM=SORT2)PROC=procedurenamePROC:标识执行的过程名3)PARM=parameterPARM:此参数传送必要的值给被EXEC语句激活的程序格式:PARM=(A,B,C)其中:A,B,C代表被传送的参数值(数字,字符)举例://LKEDEXECPGM=HEWL,PARM='LISTA,LISTB,LISTC'4)REGION:定义分配给该作业步的存储空间的大小JCL:语句介绍(EXEC)205)COND=((code,operator,stepname),…)COND:根据前面各作业步的返回码决定是否继续执行该作业步。即在每个作业步执行之前,要判断COND参数的条件,如果为真,该作业步跳过。JCL:语句介绍(EXEC)COND=(code,operator,stepname)||0-4095GT大于|LT小于|EQ等于|NE不等于|GE大于等于|LE小于等于||含义:IF____IS____STEP返回码THEN跳过该作业步21COND语句举例:1)COND=(4,LT)当上步返回码大于4时不执行当前作业步2)COND=(8,LT,STEP3)当STEP3的返回码大于8时不执行当前作业步3)COND=((8,LT,STEP1.RC),(4,LT,STEP2.RC))当STEP1的返回码大于8,且STEP2的返回码大于4时,不执行当前作业EXEC语句举例(包含PGM,REGION,PARM,COND各参数)://LKEDEXECPGM=IEWL,REGION=1M,PARM=(LIST,XREF),COND=(5,LT,COB)JCL:语句介绍(EXEC)22PROC语句:过程语句如果我们经常使用同一段JCL,可以把它事先准备好,供大家调用,这段JCL称作过程(Procedure)格式://procnamePROCPARM=…作用:用以标识过程开始及过程名,分配缺省的参数。可以省略PROC=,只写PROC的名字举例://STEP01EXECPROC=PROC1或//STEP01EXECPROC1JCL:语句介绍(PROC/PEND)23PEND语句过程分两类in-streamproc过程直接写在JOBSTREAM中以PROC开始,以PEND语句结束catalogedproc过程以member方式放在procedurelibrary中以PROC开始,无须PEND语句结束格式://PEND作用:用以标识过程结束第37页中有JCL实例,列出以上2种过程调用的使用方法JCL:语句介绍(PROC/PEND)24JCL:语句介绍(JCLLIB)JCLLIB语句:格式://NAMEJCLLIBORDER=(DATASETNAME,…)作用:用以指定过程库的数据集,此数据集含有EXEC使用的过程。举例://SEARCHJCLLIBORDER=(USER.PROC)含义:程序中需要使用的过程PROC在数据集USER.PROC中第37页中有相关JCL实例。25JCL:语句介绍(DD)DD语句:数据定义语句作用:用以标识和描述被EXEC语句激活的程序要使用数据集及指出数据集所需要的输入输出的资源。26JCL:语句介绍(DD)DD语句主要参数说明:1)DSNAME:指定使用的数据集格式:顺序数据集,DSN=DATASETNAMEPDS数据集,DSN=DATAS
本文标题:主机JCL培训课件
链接地址:https://www.777doc.com/doc-2767541 .html