作业控制语言简介1_第1页
作业控制语言简介1_第2页
作业控制语言简介1_第3页
作业控制语言简介1_第4页
作业控制语言简介1_第5页
已阅读5页,还剩132页未读 继续免费阅读

下载本文档

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

文档简介

作业控制语言杨梦宁mnyang@基本概念主机包含的单元:处理器(Processor)Mainfram大型主机,ES9000,S/390,zSeries输入/输出设备(Input/OutputDevice)Disk硬盘,如3390,3380Reader读卡器(少用)Printer打印机,如4248,3828,3800Terminal终端,如3270终端Punch打孔机(少用)Tape磁带机,如3490,3480操作系统(OperatingSystem)程序(Programs)数据(Data)基本概念作业包含下列信息:程序(Program)数据集(DataSets)外部设备(Devices)磁盘卷(Volumes)数据空间(Space)数据集属性(DataSetAttributes)JCL语句将这些信息传递给系统JES系统概念在工作执行前后,JES负责-接收作业-准备执行作业-在DASD临时存储直到OS390准备好接收-选择OS390执行的作业在工作执行时,JES负责-HANDLE输出-执行结束后,清除工作Input/Output设备DISKREADERTERMINALPUNCHHOSTSPRINTERTAPEInput/Output数据PROG1PROG2PROG3DATADATAInput/Output数据程序通常需要输入和输出数据数据存放在数据集中提交至系统的作业必须指明相关的数据集作业作业(Job)-用户在完成某任务时要求计算机所做工作的集合。在大型服务器系统中,当用户需要使用计算机完成某项任务时,用户必须准备一个作业流(JobStream),作业流中包含一个或多个作业。作业控制语言作业控制语言JCL(JobControlLanguage)-用户与操作系统的接口。用户通过JCL的相应语句与操作系统通讯,获得作业所需的资源,并按自己的意图来控制作业的执行。JCL由几个语句组成,对于一个作业,JCL为被执行的任务引导操作系统,并注释所需要的全部I/O设备。作业步作业步-在一个作业中,每一次程序的执行就称为一个作业步。一个作业可包含几个作业步,一般的,一个作业由以下相对独立的三步组成:(1)编译:把源程序语句(源模块)转换成目标模块;作业步(2)链接编辑:把目标模块同子程序库中的其他程序链接起来得到可执行模块;(3)执行:运行可执行模块得到结果。一个作业中的各步是顺序执行的,因此上一个作业步的输出可以作为下一个作业步的输入。基本概念大型服务器系统中用户的作业可以由一个或多个作业步构成。只有一个作业步的作业叫做单步作业;由多个作业步构成的作业叫做多步作业。不论单步作业还是多步作业都必须包含三个JCL基本语句(JCLStatement)。JCL基本语句(1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。(2)执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程。(3)数据定义语句(DD):用于描述应用程序所需要的数据文件。Example下面我们来看一个多步作业的例子://JOB1JOB…

//STEP1EXEC…//DD1DD…作业步1//STEP2EXEC…//INDD1DD…作业步2//INDD2DD…//作业控制语句在大型服务器系统中,作业控制语句有两种类型:一类是JES2控制语句(负责控制作业和给作业提供参数);另一类就是JCL。作业控制语言由九种语句组成,分别是:三种基本语句:JOB,EXEC和DD。六种附加语句:(1)/*语句:表示流内数据结束或调用JES控制语句;(2)//*语句:注释语句,由第4到第80列写出注释内容;作业控制语句(3)//语句:空语句,用以标记一个作业的结束;(4)PROC语句:流内过程(IN-STREAMPROCEDURE)或编目过程(CATALOGEDPROCEDURE)的起始标记。(5)PEND语句:标志一个流内过程的结束。(6)Command语句:操作员用这个语句在输入流中写入操作命令。Example下面我们再来看一个单步作业的JCL实例://BACKUPJOB,’EXAMPLEJOB’//*ITISAEXAMPLE!*//STEP1EXECPGM=IEBGENER//STEPLIBDD//DSN=SYS1.LINKLIB,DISP=SHR//SYSINDDDUMMYExampleCont.//SYSPRINTDDSYSOUT=A//SYSUT1DDDSN=PR.MASTER,DISP=OLD//SYSUT2DD//DSN=PR.MAILY.BACKUP,//DISP=(NEW,CATLG),UNIT=TAPE,//DCB=(RECFM=FB,LRECL=200,//BLKSIZE=1000)/*JCL的语法规则与计算机语言一样,JCL有一套严格的语法规则,不仅如此,JCL还有严格的语句格式规范。用户只有严格按照这些规则来编写作业控制程序,系统才能按照其意图正确完成用户的作业,否则系统就会给出错误信息,甚至产生不可预知的后果。

JCL字符集(1)

字母26个(2)

数字10个(3)

特殊字符(共10个),./()*&+-=(4)

通配符(共3个)@$#(5)

关系字符集(共6个)GT,GE,EQ,LT,NE,LE特殊字符字符功能,分隔参数和子参数=分隔关键字参数与它的值,例:CLASS=A()括起子参数列表或PDS、PDSE的成员名&标志一个符号参数(symbolicparameter),例:&LIB&&标志一个临时数据集名(temporarydatasetname)例:&&TEMPDS标志一个流内或系统输出(sysout)数据集名,例:&&PAYOUT特殊字符字符功能.分隔受限数据集(qualifieddataset)名字的各部分,例:A.B.C分隔一些特定参数与子参数的各部分,例:nodename.userid*提及一条先前的语句,例:OUTPUT=*.name,或在特定的语句内,标志特定的功能,例://ddnameDD*特殊字符字符功能‘’括起含有特殊字符的参数值空格划分域一般语句格式规范在JCL中,除/*语句外的所有语句均以第一、二列的//符号作为开始标志,系统规定这些语句的长度为80列。这80列在逻辑上被划分为五个区域,分别是标识符区、名字区、操作符区、参数区和注释区,即:一般语句格式规范标识符区名字区操作符区参数区注释区//名字操作符参数说明标识符区一般情况下,标识符区的符号为“//”,该符号表明该条语句为JCL语句,标识符区位于每条语句的第一、二列。在特殊情况下,标识符区的符号可以是“/*”语句和“//*语句。名字区名字区指明一个语句,便于系统控制块或其他语句识别。名字可以由1~8个字母数字或通配符组成,但第一个字符必须是字母或通配符(#,@,$),且必须从第三列开始。名字区后必须跟一个或多个空格,可以选择名字表达出这个JCL语句的作用。Example下面给出若干例子:CorrectWrong//Z//9Z//BACKUP#1//TAPEBACKUP//#99//TEST*9//$EXAM//EXAM(0)建议:用比较有意义的名字。操作符区操作符区位于名字区之后,规定了语句的类型:JOB、EXEC、DD、PROC、PEND或操作员命令。名字区后必须跟一个或多个空格。例如://EXAMPLEJOB//STEP1EXEC//INDD1DD参数区参数区在操作符区之后,其中包括被逗号分隔的参数,参数由事先规定好的关键字组成,对于这些参数其数值必须是可被代换的变值。参数区没有固定的长度及列的要求。例如://EXAMPLEJOB2000,CLASS=A//STEP1EXECPGM=IEYFORT//PRINTDDSYSOUT=A注释区注释区位于参数区后,用于对相应语句进行注释说明,它可以是任何需要的注释信息,注释区后必须跟一空格。需要注意的是,仅当参数出现时才能书写注释信息,不然容易与参数混淆。下面是一个注释区的例子:

//EXAMPLEJOB,CLASS=AITISACOMMENT注意:不建议采用这种注释方式

关于续行的说明JCL只允许在参数区和注释区有续行,当需要续行时,在当前行的第71列前必须将某个参数或某个子参数以及参数后的逗号写完整,且下一行第1、2列为“//”,第3列为空格,续行的内容只能从4~16列开始,如从16列后开始,将被认为是注释语句。下面是一个续行的例子://DATADDDSN=SYS1.FORTLIB,//DISP=OLDExample//DD1DDDSNAME=STU118.GROUP12,//UNIT=3390,VOLUME=335230,//SPACE=(TRK,(8),15)),DISP=(,PASS)参数续行从第四列开始参数规则在JCL中,参数区内的参数的类型分为两类:(1)位置参数(positional):参数的含义与它在各个参数中的前后顺序有关,当位置参数有子参数时,子参数也必须按顺序排列在圆括号内,位置参数之间以及子参数之间用逗号分隔。规则如下:用逗号表示缺省;如果是最后一个位置参数省略,不需要用逗号;如果全部位置参数省略,不需要用逗号。Example//DD1OPER//POS1,POS2,KEY3=C,KEY1=A//DD2OPER,POS2,KEY2=B//DD3OPERPOS1,KEY2=B//DD4OPERKEY3=C,KEY1=A参数规则(2)关键字参数(keyword):由一个关键字和等号后面的可变数据组成。关键字参数和位置参数不一样,关键字的意义与顺序无关。参数规则如果在一个语句内既有位置参数又有关键字参数时,所有的关键字参数必须位于位置参数之后。例如://EXAMPLEJOB2000,CLASS=A

位置参数关键字参数参数的书写规则1.位置参数和关键字参数之间必须用逗号分开,不允许有空格。值得注意的是,在JCL语句中错写空格,会导致非常难以查出的错误。

参数的书写规则2.必须按规定的次序书写参数:所有的关键字参数必须位于位置参数之后,而所有位置参数也必须按规定排列。3.当缺省某个位置参数或某个子参数时,应以一个逗号指明所在位置。当缺省最后一个位置参数时,逗号可以省略。Example例如://EXPJOB(2000,,9),CLASS=A//SYSTEMJOB,SYSTEM,CLASS=S,//MSGLEVEL=(0,0)参数的书写规则4.当没有任何位置参数时,可以不必书写任何内容表示。//EXPJOBCLASS=A5.关键字参数之间没有相对位置的规定,可以按任何次序排列。//EXPJOB2000,CLASS=A,MSGLEVEL=1也可写作://EXPJOB2000,MSGLEVEL=1,CLASS=A参数的书写规则6.允许含有特殊字符的参数或子参数,且其中的特殊字符并非起某种特定的语法功能时,必须用撇号‘’替代括号将这些参数和子参数括起来。例:ACCT=’123+456’。参数的书写规则7.JCL的位置参数与关键字参数最多只能由两级子参数。也就是说用于括起子参数列表的括号最多只能有两层。

JCL语句1.JOB语句。2.JOBLIB语句。3.JOBCAT及SYSCHK语句。4.任何流内过程。5.EXEC语句。6.任何的STEPCAT、STEPLIB,或一般的属于这一步的DD语句。7.任何空语句。JCL语句//commandJCLcommandEntersanMVSsystemoperatorcommandthroughtheinputstream.Thecommandstatementisusedprimarilybytheoperator.UsetheCOMMANDstatementinsteadoftheJCLcommandstatement.JCL语句//COMMANDcommandSpecifiesanMVSorJEScommandthatthesystemissueswhentheJCLisconverted.UsetheCOMMANDstatementinsteadoftheJCLcommandstatement.JCL语句//*commentcommentContainscomments.Thecommentstatementisusedprimarilytodocumentaprogramanditsresourcerequirements.//CNTLcontrolMarksthebeginningofoneormoreprogramcontrolstatements.//DDdatadefinitionIdentifiesanddescribesadataset.JCL语句/*delimiterIndicatestheendofdataplacedintheinputstream.Note:Ausercandesignateanytwocharacterstobethedelimiter.JCL语句//ENDCNTLendcontrolMarkstheendofoneormoreprogramcontrolstatements.//EXECexecuteMarksthebeginningofajobstep;assignsanametothestep;identifiestheprogramorthecatalogedorin-streamproceduretobeexecutedinthisstep.JCL语句//IF/THEN/ELSE/ENDIFSpecifiesconditionalexecutionofjobstepswithinajob.//INCLUDEincludeIdentifiesamemberofapartitioneddataset(PDS)orpartitioneddatasetextended(PDSE)thatcontainsJCLstatementstoincludeinthejobstream.JCL语句//JCLLIBJCLlibraryIdentifiesthelibrariesthatthesystemwillsearchfor:1.INCLUDEgroups2.ProceduresnamedinEXECstatements.//JOBjobMarksthebeginningofajob;assignsanametothejob.JCL语句//nullMarkstheendofajob//OUTPUToutputJCLSpecifiestheprocessingoptionsthatthejobentrysubsystemistouseforprintingasysoutdataset.//PENDprocedureendMarkstheendofanin-streamorcatalogedprocedure.JCL语句//PROCprocedureMarksthebeginningofanin-streamprocedureandmaymarkthebeginningofacatalogedprocedure;assignsdefaultvaluestoparametersdefinedintheprocedure.//SETsetDefinesandassignsinitialvaluestosymbolicparametersusedwhenprocessingJCLstatements.Changesornullifiesthevaluesassignedtosymbolicparameters.JCL语法实例作业语句//EXPJOBJOB,’USERNAME’,MSGLEVEL=(1,1),作业语句续行//MSGCLASS=Q,CLASS=A//**********************注释语句//*ITISAEXAMPLE*//**********************执行语句//STEP1EXECPGM=IEFBR14DD语句//DD1DDDSN=MJSN.TEAM01.ONE,DISP=(,CATLG),DD语句续行//SPACE=(TRK,(5,2)),UNIT=SYSDADD语句//DD2DDDSN=MJSN.TEAM01.TWO,DISP=(,KEEP),DD语句续行//SPACE=(TRK,(1,1)),UNIT=SYSDAJOB语句JOB语句标志一个作业的开始、分配作业名并设置相关的位置参数及关键字参数,每个作业的第一条语句必须是JOB语句,且仅有一条。JOB语句的格式如下://作业名JOB位置参数[,关键字参数][,关键字参数]…[注释说明]作业名-JOBNAME作业名是用户给作业指定的名字,为使操作系统识别作业,必须选择合适的作业名字,由于系统不能同时运行具有相同名字的作业,因此只能给作业一个唯一的名字。一般来说,建议用户采用“用户标识USERID+数字或字符”的作业名,例如用户标识为JACK,则作业名可用JACKA(也是出于安全控制的考虑)。位置参数作业语句中的位置参数有两个:1.记账信息(accountinginformation):记账信息位于操作符JOB后,它用于提供用户使用系统的合法性、时间和纸张的收费管理等。其格式为:([account-number][,accounting-information]…)account-number:用户账号;accounting-information:附加的记账信息,如房间号和部门名等等。位置参数记账信息参数及其子参数最多不可超过143个字符,特殊字符用单引号(包括分隔子参数的逗号,但不包括括起子参数列表的括号)。例如://EXAMPLE1JOB//(D548-8686,’12/8/98’,PGMBIN)//EXAMPLE2JOBD548-8686位置参数2.程序员名(programmer’sname)程序员名用于标识作业的所有者(owner))信息,包括特殊字符在内,其长度不得超过20个字符,特殊字符用单引号包含。例如://EXAMPLE1JOB2000,J.A.C.K//EXAMPLE2JOB2001,JACK//EXAMPLE3JOB2003,‘OSUN’Example下面是几个位置参数不同的书写格式的例子:1.带有全部位置参数的作业语句://JOBAJOB(20008,60),A.B.C,CLASS=S,…2.缺省记账信息的作业语句://JOBBJOB,USER-NAME,CLASS=A,…3.不带位置参数的作业语句://JOBCJOBCLASS=Q,…关键字参数CLASS指定输入队列COND指定作业执行条件LINES输出行数控制MSGCLASS指定输出队列MSGLEVEL显示作业输出信息NOTIFY作业结束时通知TSO用户REGION指定作业使用的最大虚存RESTART控制作业的重新启动TIME指定作业执行的最大时间TYPRUN执行类型控制ADDRSPC指定作业所需的存储空间类型REGION指定存储空间的大小PARM指明作业的参数关键字参数JOB语句中的关键字参数有如下几个:

1.ADDRSPC指明作业所需之存贮类型,它有两个子参数:VIRT及REAL。VIRT表示作业请求虚拟页式存贮,而REAL表示作业请求实存空间。缺省值为VIRT。其格式为:ADDRSPC={VIRT}{REAL}Example例如://PEHJOB,BAKER,ADDRSPC=VIRT//DEBJOB,ERIC,ADDRSPC=REAL,//REGION=100KCLASSCLASS参数:-将作业置于JES输入队列;-一个字符,A-Z,0-9;-如果不指定CLASS,JES使用初始化时缺省的CLASS。CLASSCLASS参数规定了作业的类别,JCL中可选用的作业类别有36个,用字母A~Z及数字0~9表示。相同类别的作业处于同一输入队列等待执行,并具有相同的处理属性。作业类别的属性定义在JES中,当CLASS参数缺省时,JES将会根据安装时的缺省值赋予该作业一个缺省的CLASS值。格式:CLASS=jobclassMSGCLASSMSGCLASS参数-控制输出CLASS;-一个字符,A-Z,0-9;-缺省与CLASS参数一致。MSGCLASS用于为作业日志(joblog)设置输出类别。作业日志是为程序员提供的与作业相关信息的记录。当该参数省略时,系统将会采用默认值。格式:MSGCLASS=class例如://EXMP1JOB,GEORGE,MSGCLASS=FMSGLEVEL用于控制JCL作业输出清单的内容。格式:MSGLEVEL=([statements][,messages])statements:指明在JCL作业输出清单中应打印出的作业控制语句的类型,取值范围为:0~2。MSGLEVELMSGLEVEL=0,仅输出JOB语句;MSGLEVEL=1,输出所有JCL和JES语句包括PROCEDURE中的语句;MSGLEVEL=2,仅输出被提交的JCL和JES语句,不输出PROCEDURE中的语句。MSGLEVEL第二个子参数控制输出哪一条信息。MSGLEVEL=(,0),如果正常结束,仅输出JCL信息,否则输出所有信息;MSGLEVEL=(,1),不管是否正常结束,都输出所有信息。如果省略MSGLEVEL,JES提供初始化时的缺省值。Example例如://EXMP3JOB,MSGLEVEL=(2,1)//EXMP4JOB,MENTLE,MSGLEVEL=0//EXMP5JOB,MIKE,MSGLEVEL=(,0)缺省设置为:MSGLEVEL=(1,1)NOTIFY用于请求系统在后台作业处理完毕时给指定用户发送信息。如果作业完成时,该用户未在系统登录,则系统所发送的信息将会保留到此用户下次登录。格式:NOTIFY=USERIDNOTIFY参数使得作业结束时,系统通知NOTIFY参数指定的TSO用户。USERID必须是有效的用户ID。命名规则USERID:必须以字母或通配符开头的1~8个字母、数字或通配符组成,其值必须是一个存在的TSO用户标识。例://SIGNJOB,//TLOMP,NOTIFY=STU123TYPRUNTYPRUN参数-修改JES处理作业的方式。

TYPRUN=SCAN仅检查语法错误,不执行TYPRUN=HOLD作业在输入队列HOLD住,操作员必须释放它才能执行TYPRUN=COPY作业流COPY的是提交到MSGCLASS参数指定的系统输出CLASS的作业流(仅用于JES2)PRTY用于为相应的输入队列中的作业分配优先级。系统根据作业优先级的高低来选择作业执行,对于同一级的作业的选择将采取“先进先出”的原则。格式:PRTY=PRIORITYPRTYPRIORITY:用数字量来表示优先级,数字越大表示优先级越高。根据作业进入子系统的类型,在JES2系统中,其取值范围是0~15;例://JOBAJOB1,//‘JIMWEBSTER’,PRTY=12REGIONREGION参数指定作业或一个作业步所使用的虚存大小。用于JOB或EXEC语句。-定义在JOB语句,优先于定义在EXEC语句;-如果某个作业步所需要的虚存超过了JOB语句REGION参数指定的虚存,或者REGION参数指定的虚存大小值不能够被获得,就会导致ABEND;-如果在EXEC语句指定REGION参数,则参数指定的虚存值为该作业步所使用的虚存大小;-如果一个作业步所需要的大于指定的空间大小,或者指定的无法获得,就会导致该作业步ABEND。格式:REGION={valueK}={valueM}

REGIONvalueK:以千字节(Kb)为单位指出所需空间大小,系统以每4k为一存储单位分配空间,所以value值应取4的倍数,如REGION=68K。当value值不是4的倍数时,系统会将其增至一最为接近的4的倍数的值。valueK:1-7digitsfrom1-2096128REGIONvalueM:以兆字节(Mb)为单位指出所需空间大小。注:REGION值必须是有效的存储空间,如果取值为0或任何大于系统极限的值时都有可能会引起存储问题。valueM:1-4digitsfrom1-2047Example例如://ACCT1JOB//A23,SMITH,REGION=100K,//ADDRSPC=REAL//ACCT2JOB175,FRED,REGION=250KLINESLINES参数用于限定作业的系统输出数据集的打印行数(以K为单位)行数超过限制时,系统可以使用下列三种处理方式://MAXLINE1JOBLINES=(50,CANCEL)如果输出超过50,000行,取消该作业。//MAXLINE2JOBLINES=(50,DUMP)如果输出超过50,000行,出DUMP。//MAXLINE3JOBLINES=(50,WARNING)如果输出超过50,000行,向操作员发出警告信息。RESTARTRESTARTJOB出错时重新执行。可以使用下面4种方式:-自动步重起:从发生错误的作业步开始处重新执行。-自动点重起:从发生错误的作业步中的某个语句重新执行。-延迟步重起:系统允许检查错误,可以修改并重新提交。从失败的作业步开始处重新执行。-延迟点重起:系统允许检查错误,可以修改并重新提交。从失败的作业步中的某个语句重新执行。RESTART用NOTIFY参数以达到等待用户修改的目的使用延迟重起RESTART参数表明系统重起作业时的作业步。例://JOBNAMEJOB//ACCOUNTING,’PRGMR//NAME’,CLASS=A,//NOTIFY=TSOMJ01,RESTART=STEP10TIME用于指定作业占用处理器的最长时间并可通过一些信息得知该作业占用处理器的时间。当作业占用处理器时间超过指定值时,系统将终止该作业。TIME通常情况下,此参数不用设置。当作业所需处理器时间长于系统缺省值时,或出于某种测试目的才设置此参数。格式:TIME={([minutes][,seconds])}={1440}={NOLIMIT}={MAXIMUM}TIMEminutes:指定作业可占用处理器最长时间的分钟数。注意:不可以将TIME参数写作TIME=0,这样将导致不可预知的后果。TIMESeconds:作为minutes的补充,定义指定作业可占用处理器最长时间的秒钟数(1-59)。NOLIMIT:表明作业的运行无时间限制,等同于TIME=1440。1440:表明作业的运行无时间限制,即24小时。TIMEMAXIMUM:表示作业的运行时间为357912分钟。当JOB语句中的TIME参数没有指明时,每作业步的运行时间限制由以下值决定:1.在EXEC语句中TIME参数的值;2.当EXEC语句中也没有设置TIME参数时,采用默认的时间限制值(也就是JES默认的作业步时间限制值)。Example例1://STD1JOBACCT271,TIME=(12,10)例2://STD2JOB,GOR,TIME=(,30)Example例3://FIRSTJOB,SMITH,TIME=2……//STEP1EXECPGM=READER,TIME=1……//STEP2EXECPGM=WRITER,TIME=1……Example说明:在例3中,JOB语句中规定了2分钟的作业运行时间限制,每个作业步允许的时间为1分钟,如果任何一个作业步的执行时间超过1分钟,作业将会异常终止。下面我们再来看一个例子:Example例4://SECONDJOB,JONES,TIME=3……//STEP1EXECPGM=ADDER,TIME=2……//STEP2EXECPGM=PRINT,TIME=2……Example说明:在例4中,JOB语句中规定了3分钟的作业运行时间限制,每个作业步允许2分钟,如果任何一个作业步的执行时间超过2分钟,作业将会异常终止。但两个作业步的总共运行时间不得超过作业运行时间限制——3分钟,也即:如果作业步1的运行时间为1.56分钟,则作业步2的运行时间不得超过1.44分,否则作业也会异常终止。其他参数JOB语句中的关键字参数还有:COND、GROUP,PASSWOR、PERFORM、RD、SECLABEL、USER等。《MVSJCLReference》EXEC语句EXEC语句标志要执行的程序或者过程,标明作业或过程中的每一作业步的开始,并告知系统如何执行该作业步。一个作业最多可以有255个作业步,包括所有在EXEC语句中调用的过程中的所有作业步。EXEC语句格式如下://[作业步名]EXEC位置参数[,关键字参数]…[符号参数=值]…[注释]作业步作业步名是可以省略不写的,如需要标明作业名时,该作业名必须在该作业内以及该作业调用的所有过程中是唯一的,它由1~8个字母或通配符开头的字符数字构成,作业步名和作业名的命名规则相同。

位置参数EXEC语句中的位置参数有两个:PGM和PROC。每条EXEC语句必须有且仅有一个位置参数。PGM参数用于指明所要执行的程序名。该程序必须是一个分区数据集(PDS)的成员或者是系统库(systemlibrary)、私有库(privatelibrary)及临时库(temporarylibrary)的扩充分区数据集(PDSE)的成员。程序名的调用方法分为直接调用和间接调用。PGM参数格式:PGM={program-name}{*.stepname.ddname}{*.cstepname.ddname}

program-name:指明要执行的程序名或别名,程序名由1~8个字母或通配符开头的字符数字构成。PGM参数*.stepname.ddname:表示要执行的程序名由本作业步前名为“stepname”的作业步内名为“ddname”的DD语句的DSN参数决定。*.cstepname.ddname:表示要执行的程序名由本作业步前名为“stepname”的作业步里所调用过程名为“procstepname”的过程步中相应名为“ddname”DD语句的DSN参数决定。程序调用方法

1.直接调用;2.间接调用:采用向“后”参考的方法。这里的“后”指在本作业步读入之前,已先读入系统的本作业的其它JCL语句。

Example例如://JOBCJOB,JOHN,MSGCLASS=H//STEP2EXECPGM=UPDT//DDADDDSN=SYS1.LINKLIB(P40),//DISP=OLD//STEP3EXECPGM=*.STEP2.DDAExample说明:在上例中,名为STEP3的EXEC语句采用程序间接调用方式,所调用的程序名由作业步STEP2中的名为DDA的DD语句决定,在该DD语句中定义了系统库SYS1.LINKLIB,程序P40是该库的一个成员,“P40”即STEP3中要调用执行的程序名。PROC参数指明作业步所要运行的过程名。格式:{PROC=procedure-name}{procedure-name}procedure-name需要调用的过程名,过程名由1~8个字母或通配符开头的字符数字构成。所调用的过程名可以是:1.编目过程的成员名或别名。2.由PROC语句定义的流内过程的过程名,该流内过程必须在本作业内且在本作业步前定义。Example例如://SPEXECPROC=PAYWRKS//BKEXECOPERATE在本例中,PORC可以省略关键字参数EXEC语句的关键字参数只作用于本作业步。当EXEC语句的位置参数指定程序名时,关键字参数的写法同JOB语句;当EXEC语句的位置参数指定编目或流内过程时,EXEC语句的关键字参数将覆盖所调用过程中各EXEC语句的关键字参数。关键字参数如果想仅覆盖过程中的某个EXEC语句的关键字参数,则应在设置关键字参数时,同时指出所调用过程的相关过程步的名字。格式如下:关键字参数.过程步名=值ACCT参数指明作业步所需的一个或多个记账信息子参数。记账信息参子参数最多不可超过142个字符(包括分隔子参数的逗号,但不包括括起子参数列表的括号)。ADDRSPC参数指明作业步所需之存贮类型,它有两个子参数:VIRT及REAL,缺省值为VIRT。EXEC语句中的ADDRSPC参数仅在本作业步中起作用,JOB语句中的ADDRSPC参数会覆盖该作业中的所有EXEC语句中的ADDRSPC参数。格式:ADDRSPC[.过程步名]={VIRT}{REAL}Example例如://CAC1EXECPGM=A,ADDRSPC=VIRT//CAC2EXECPROC=B,//ADDRSPC=REAL,REGION=100KREGION参数用于指定本作业步所需的实存或虚存空间的大小,系统仅在本作业步中使用该值。格式:REGION[.过程步名]={valueK}={valueM}

EXEC语句中REGION的子参数定义与JOB语句中相同。TIME参数用于指定作业步占用处理器的最长时间,并可通过作业输出清单得知该作业步占用处理器的时间。当作业步占用处理器时间超过指定值时,系统将终止该作业。格式:TIME[.过程步名]={([minutes][,seconds])}={1440}={NOLIMIT}={MAXIMUM}TIME参数EXEC语句与JOB语句中的TIME参数的子参数的设置方法基本相同。值得注意的是:在JOB语句中不可设置TIME=0,而在EXEC语句中则可以设置TIME=0,当TIME=0时表示本作业步的执行时间由前面作业步的剩余执行时间决定。COND参数用于对先前作业步执行的返回码(returncode)进行测试,以决定是否执行本作业步。用户可以对特定作业步的返回码进行测试,也可以对每一步执行完毕的的返回码都进行测试。如果测试条件不满足,系统执行本作业步;如果测试条件满足系统则不执行该作业步。作业中的第一个EXEC语句中的COND参数将被系统忽略。注意,当测试条件满足时,系统并非不正常终止该作业步,而只是跳过该作业步,该作业仍将正常执行。COND参数格式:(1)COND[.过程步名]=(code,operator)(2)COND[.过程步名]=((code,operator[,作业步名][,过程步名])[,(code,operator[,作业步名][,过程步名])]…[,EVEN])[,ONLY](3)COND=EVENCOND=ONLYCOND参数code:系统使用code(测试码)与先前作业步或某特定作业步的返回码进行比较。Code的取值范围为:0~4095。Returncode:系统代码,0,4,8,16以及ABEND等。operater:表示code与返回码的比较类型,这些比较的操作符是:GT(大于)、GE(大于等于)、EQ(等于)、NE(不等于)、LT(小于)、LE(小于等于)。COND参数作业步名:指定先前某一作业步,并用该作业步的返回码与本作业步的测试码进行比较。当省略作业步名时,表示本作业步的测试码将与先前所有作业的返回码进行比较测试。作业步名.过程步名:指定先前某一作业步调用过程的过程步。系统将用该过程步的返回码与给定的测试码进行比较。其中该作业步由“作业步名”指定,而过程步由“过程步名”指定。COND参数利用COND参数最多可以有8个返回码测试,如果有EVEN或ONLY时,最多有7个测试。格式(1)只有在先前作业步没有非正常终止时,才能进行该测试。格式(2)、(3)测试决定于EVEN和ONLY的设置。EVENEVEN:表示无论即使先前作业步异常终止,本作业步都要执行(execut

温馨提示

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

评论

0/150

提交评论