您好,欢迎访问三七文档
第五章过程与实用程序过程•和其它高级语言一样,作业控制语言中也允许定义过程。过程是一段预先编写好的JCL语句的集合,它可以被反复调用。•作业控制语言中定义了两种过程,分别是编目过程(catalogedprocedure)和流内过程(in-streamprocedure)。过程——编目过程•在指定的过程库中编目的过程称为编目过程。该过程库可以是分区数据集或扩展分区数据集,通常系统过程被编目在系统过程库中,用户过程被编目在用户库中。由于调用编目过程时,系统提供的是该过程的拷贝,因此一个编目过程可以同时被几个作业调用。过程——流内过程•流内过程是放置在作业输入流中的过程。在一个作业中最多可以有15个流内过程,但不能嵌套使用,也不能被其他作业调用过程——流内过程与编目过程•流内过程与编目过程的区别是流内过程随着一个作业放在输入流中,它紧跟在JOB语句后面而不是作为分区数据集的成员•在实际应用时,流内过程只用于测试阶段,一旦流内过程调试成功,即可对其进行编目,使其成为编目过程过程——过程的编写•一个过程可由几个作业步组成。在过程中可以包含除下列语句外的所有JCL语句:•调用过程的EXEC语句(一个过程不能调用另一个过程)•JOB语句、/*语句或//语句•JOBLIBDD语句或JOBCATDD语句•任何的JES控制语句•DD*语句或DDDATA语句•流内过程的开始和结束分别用PROC语句和PEND语句表示,对于编目过程,不能有PEND语句,而如果没有分配给符号参数默认值,PROC语句是可选的过程——过程的结构//过程名PROC[符号参数]//过程步1EXEC//dd名1DD···//过程步2EXEC//dd名2DD···//PEND(仅在流内过程中使用)•过程结构中的过程名、过程步名及dd名的书写规则与JCL中其它语句名的书写规则一样。符号参数的功能类似于其它编程语言子程序中的形式参数过程——流内过程的实例•本例中,RUN是一个流内过程,作业中名为STEP1的执行语句调用这个流内过程。•该流内过程在去掉PEND语句后也可以作为标准的过程放在用户库中,作为编目过程过程——过程的调用•过程的调用有如下两种方式://作业步名EXECPROC=过程名[符号参数]//作业步名EXEC过程名[符号参数]过程——过程的调用规则•当调用一个过程时,系统会以输入流、用户库、系统库的顺序来检索所要调用的过程。如果所调用的过程是流内过程,则必须把流内过程放在调用它的EXEC语句之前。•如果调用的编目过程被编目在用户库中,系统从JCLLIB语句确定的用户库中进行检索。因此,若调用的过程是用户库中的过程时,要用JCLLIB语句来指明过程所在的用户库。如果调用的编目过程被编目在系统库中,系统从JES2中的PROCLIB参数指定的系统库进行检索。过程——过程的修改(1)•由于不同用户的要求不同,所以当某一个作业调用标准过程时,系统应允许用户对过程进行修改,以满足自己的需要。过程修改的方式有如下三种:•置换过程中的符号参数;•对过程中的EXEC及DD语句参数进行覆盖和增加;•增加新的DD语句。过程——过程的修改(2)•符号参数由符号“&”和参数名组成,参数名可以是以字母或通配符开头的1~8位字母数字或通配符,关键字参数和关键字子参数不能作为符号参数的参数名。符号参数为修改过程提供了可选用的方法。•当过程中含有符号参数时,每一个符号参数必须指定一个值或赋空值,该值被称为符号参数的初值过程——过程的修改(3)•用EXEC语句调用过程时,该语句的所有关键字参数都会影响过程的执行,它将覆盖过程中定义的参数,对于过程中没有定义的参数,系统会把它加到过程中去。用EXEC语句修改过程的方式如下://stepnameEXEC过程名,参数.过程步=值•其中“参数.过程步=值”表示准备对过程中所希望的过程步的关键字参数进行修改过程——过程的修改(4)•例如有下述过程://RUNPROC//STEP1EXECPGM=P1··//STEP2EXECPGM=P2··//STEP3EXECPGM=P3,TIME=(2,30)若要求对STEP2增加COND参数并指定条件测试为(8,GT),对STEP3改变其时间限制为4秒。那么调用该过程时,EXEC语句为://GOEXECRUN,//COND.STEP2=(8,GT),//TIME.STEP3=4过程——过程的修改(5)•对于过程中DD语句参数的修改可以通过下列方式://过程步名.DD名DD…•“过程步名.DD名”用来确定要修改的DD语句,其中“DD名”指需要修改的DD句,“过程步名”指过程重要修改的DD语句所在的过程步的名字•例://RUNPROC···//S1EXEC…···//SYSUT2DDSYSOUT=*···//PEND···//TEST2EXECRUN,…···//S1.SYSUT2DDSYSOUT=S过程——过程的修改(6)•对于调用的过程,可能不包含用户需要的DD语句,这是可通过下列方法来增加新的DD语句://过程步名.需增加的DD语句•其中过程步名是确定新加的DD语句在过程中的位置实用程序•在z/OS系统中,IBM提供了种类繁多且十分有用的实用程序,来辅助用户对数据进行组织与维护。•实用程序分为三类:系统实用程序、数据集实用程序和独立实用程序。实用程序——系统实用程序•系统实用程序通常以IEH打头,它的主要功能是维护和管理系统、用户数据集合、整个盘卷。系统实用程序及其功能如下:•IEHNITT:为磁带卷写标号。•IEHLIST:系统控制数据信息列表。•IEHMOVE:移动或拷贝若干组数据、移动或拷贝整个卷、移动或拷贝编目目录等。•IEHPROGM:建立及维护系统控制数据、建立世代数据组索引、重命名带卷、删除数据集等。•IEHDASDR:初始化一个直接存取卷。实用程序——数据集实用程序•数据集实用程序通常以IEB打头。它的主要功能是对数据集或数据集纪录行组织、修改或比较。它可以作为单个作业来执行,也可以作为某个程序的子程序被调用。需要注意的是这些数据维护实用程序不能用于VSAM数据集。以下是数据集实用程序及其功能:•IEBCOMPR:比较顺序数据集、分区数据集或扩展分区数据集。•IEBCOPY:拷贝、压缩或合并分区数据集及扩展分区数据集。•IEBDG:创建含有模型数据的测试数据集。•IEBEDIT:有选择的拷贝作业步及其相关的作业语句。•IEBGENER:拷贝顺序数据集记录或将顺序数据集转换为分区数据集。•IEBIMAGE:修改、打印或连接模块。•IEBISAM:卸载、装载、拷贝或打印ISAM数据集。•IEBPTPCH:打印或穿卡输出一个数据集。•IEBUPDATE:对顺序、分区数据集或扩展分区数据集进行合并修改实用程序——独立实用程序•独立实用程序通常以IBC开头。它是一种特殊的实用程序,可独立于操作系统运行,通常被存放在磁带上。当系统出现重大故障而又无法恢复时,利用系统转储磁带,恢复系统盘卷。如:•IBCDASDI:用于初始化和分配一个直接存取卷上的可用道的实用程序。•IBCDUMPRS:是转储或再存储直接存取卷数据的实用程序。实用程序——实用程序的调用•实用程序的调用方法有两种,一种是在ISPF下用TSO的CALL命令调用,另种是通过JCL语句调用•JCL调用的一般格式为以下两种:(1)://UTLFMJOB…//STEPEXECPGM=utility调用公用程序//SYSPRINTDD…系统输出数据集(SYSOUT)//SYSUT1DD…输入数据集//SYSUT2DD…输出数据集//SYSINDD…定义实用程序使用的控制数据(2)://UTLFMJOB…//STEPEXECPGM=utility调用实用程序//SYSPRINTDD…系统输出数据集(SYSOUT)//ddnameDDUNIT=…,VOL=…,DISP=OLD存取所需数据集的有关信息//ddnameDDUNIT=…,VOL=…,DISP=OLD所存储数据集的有关信息//SYSINDD…定义实用程序使用的控制数据实用程序——控制语句的标准格式•标号用于表示控制语句,除实用程序IEHNITT外,其它实用程序都可以省略标号。标号必须放在控制语句开始的位置,后面留有一个以上的空格。标号是由1~8个字母或数字字符组成。•操作符用于标示控制语句的类型,其后至少跟有一个空格。操作数是由一个或多个关键字参数组成,参数之间以逗号相隔。操作数后至少跟一个空格。控制语句内可加注释,但它与操作数之间至少要有一个空格。•当控制语句有续行时,可在本行有逗号的地方断开,或在本行第72列处设置一个字符,或在下一行的16列开始。常用实用程序简介——IEBCOMPR•IEBCOMPR程序用于在两个数据集的逻辑记录间进行比较,这两个数据集可以是顺序数据集、分区数据集或扩展分区数据集。它能对数据集或数据集成员的定长、变长、组块、非组块或未定义记录进行比较。但它不能对加载模块进行比较•两个顺序数据集比较相同,是指它们含有相同数量的记录且相关记录和关键字完全相同。而两个分区数据集或两个扩展分区数据集比较相同,则是指:•相关成员含有相同的记录;•注释列表在相关成员的位置相同;•相关记录和关键字完全相同;•相关目录和用户数据区完全相同IEBCOMPR——分区数据集的比较•对于分区数据集和扩展分区数据集,只有其中一个数据集的所有目录项名字在另一个数据集的目录中都能找到相同的目录项名时,才能进行比较。否则是不能比较的IEBCOMPR——JCL语句列表语句功能JOB作业开始EXEC定义程序名PGM=IEBCOMPRSYSPRINTDD指定系统输出数据集SYSUT1DD定义需要比较的数据集SYSUT2DD定义需要比较的数据集SYSINDD定义控制数据集或DUMMY,控制语句可以是COMPARE、EXITS、LABELSIEBCOMPR——控制语句说明(1)•COMPARE:定义数据集的组织结构,在SYSINDD中设置控制语句时,它必须是第一个控制语句,当输入数据集是分区数据集或扩展分区数据集时,必须设置这个语句。语句格式如下:labelCOMPARETYPROG={PS/PO}•其中TYPROG={PS/PO}用于指定输入数据集的组织结构,PS表示输入数据集为顺序数据集,为缺省值;PO表示输入数据集是分区数据集或扩展分区数据•EXITS:定义用户所用的出口例程。当用户调用出口例程时,需要用该语句。当设置多个EXITS时,IEBCOMPR将只用最后一个。EXITS的语句格式为:labelEXITSINHDR=例程名,INTLR=例程名,ERROR=例程名,PRECOMP=例程名IEBCOMPR——控制语句说明(2)•LABELS:指定是否将用户标号作为数据来处理,当设置多个LABELS语句时,IEBCOMPR程序只用最后一个,LABELS语句的格式为:labelLABELSDATA={YES|NO|ALL|ONLY}•其中DATA={YES|NO|ALL|ONLY}指明是否将用户标号作为数据处理。DATA的取值如下:•YES:所有用户标号都作为数据处理,并依照返回码,将标号作为数据终止来处理,该值为缺省值。•NO:仅将用户标号作为数据处理。•ALL:所有用户标号作为数据处理,16种返回码将使IEBCOMPR程序完成剩余用户标号组的处理并终止作业步。•ONLY:只用用户头标作为数据处理,处理时不管是否有返回码IEBCOMPR——例1//DISKDISKJOB…//STEP1EXECPGM=IEBCOMPR//SYSPRINTDDSYSOUT=A//SYSUT1DDDSN=PDSSET1,UNIT=disk,DISP=SHR,//DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),//VOLUME=SER=111112//SYSUT2DDDSN=PDSSET2,UNIT=disk,DISP=SHR,//DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000)//SYS
本文标题:大型主机操作系统5
链接地址:https://www.777doc.com/doc-4098094 .html