1.08k likes | 1.24k Views
大型机高级系统管理技术. 第 3 章 作业控制语言. 第 3 章 内容提要. JCL 语句 JCL 相关实例 特殊的 DD 语句 过程 实用程序. JCL 语句 ——JCL 语句的分类. 作业控制语言 JCL 由九种语句组成: 作业语句( JOB ) 执行语句( EXEC ) 数据定义语句( DD )(以上三种为 JCL 基本语句) /* 语句:表示流内数据结束或调用 JES 控制语句 //* 语句:注释语句,由第 4 到第 80 列写出注释内容 // 语句:空语句,用以标记一个作业的结束
E N D
大型机高级系统管理技术 第3章 作业控制语言
第3章 内容提要 • JCL语句 • JCL相关实例 • 特殊的DD语句 • 过程 • 实用程序
JCL语句——JCL语句的分类 • 作业控制语言JCL由九种语句组成: 作业语句(JOB) 执行语句(EXEC) 数据定义语句(DD)(以上三种为JCL基本语句) /* 语句:表示流内数据结束或调用JES控制语句 //*语句:注释语句,由第4到第80列写出注释内容 //语句:空语句,用以标记一个作业的结束 PROC语句:流内过程(IN-STREAM PROCEDURE)或编目过程(CATALOGED PROCEDURE)的起始标记 PEND语句:标志一个流内过程的结束。 Command语句:操作员用这个语句在输入流中写入操作命令
JCL的语法规则 JCL的语法规则——JCL字符集 ——一般语句格式规范 ——参数的语法 —— JCL语句的位置 —— JCL语法实例 以上内容在《大型机系统概述》一书中都有详细讲解,不明 确者可以参照该书,作为一个系统管理员这些知识必需熟练 掌握。
通常使用的(JCL)作业 //SP99COPY JOB 1,'H.X.P',CLASS=A,MSGLEVEL=(1,1),MSGCLASS=X, // NOTIFY=SP99 //*********************************************************** //COPY1 EXEC PGM=ADRDSSU,REGION=3072K //SYSPRINT DD SYSOUT=* //DASD1 DD DISP=SHR,UNIT=3390,VOL=SER=Z5RES1 //DASD2 DD DISP=OLD,UNIT=3390,VOL=SER=VOLB80 //SYSIN DD * COPY INDDNAME(DASD1) - OUTDDNAME(DASD2) - PURGE - FULL - COPYVOLID /*
JOB语句 JCL语句——JOB语句 • JOB语句标志一个作业的开始 分配作业名并设置相关的位置参 数及关键字参数,每个作业的第 一个语句必须是JOB语句
JOB语句 JOB语句——作业名 • 作业名必须遵守前面所提到的 JCL语法规则 • 除此之外,建议用户采用“用户 标识USERID+数字或字符”的作业 名,例如用户标识为JACK,则作 业名可用JACKA。
JOB语句 JOB语句的位置参数——记账信息位和程序员
JOB语句 JOB语句关键字参数——ADDRSPC、BYTES、CLASS、MSGCLASS、MSGLEVEL、NOTIFY、PRTY、REGION、TIME、TYPRUN和其他参数
JOB语句关键字参数REGION • 作为一个优秀的系统管理员,对于JOB语句关键字参数一定要搞清弄懂。这里主要以REGION参数为例进行讲解。 • 首先看REGION参数的表现形式 //XP99A JOB 1,HXP,…,REGION=2M //S1 EXEC PGM=…,REGION=1024K
JOB语句关键字参数REGION • 它不会导致系统去获取任何有效的存储空间,如果在一个Job Card 上编写“REGION=0M”,该作业不GETMAIN 系统上的所有虚拟存储空间。 • 它仅仅会影响 Local DataArea 的Control Block 中的两个数据值。这是两个全字(二进制值),存放的是地址空间可GETMAIN 的虚拟存储的最大数量。 • 一个字段存放最大24 Bit(即在16 兆字节线以下) • 一个字段存放最大31 Bit(即在16 兆字节线以上) • REGION 的这个(双重)参数十分重要,可以同时限制24Bit 和31 Bit 存储。
JOB语句关键字参数REGION • REGION=OM /= OK • REGION值=0: • 这是个特殊的情况,它将限定对于地址空间可用的所有24 Bit 和31 Bit 虚拟存储的最高值。
参数缺省(默认)值 • 对24 Bit 存储:在8M _10M 之间 • 典型的线下存储的默认最大值<10M,即作业不能在该线以下获取更多的存储。 • 如果该值是一个Impossible REGION 值,作业将会出现S822 Abend。 • 对31 Bit 存储:在1600M_1900M 之间 • 注意: • 缺省值并不会获取任何内存。 • REGION 参数仅用于它对所在地址空间虚存的限制(包括作业、作业步、TSU等)。
JOB语句关键字参数REGION • 需要牢记的是: JCL 的REGION参数是较令人混淆的参数JCL其本质类似HTML,是所谓的“静态”语言 • JCL设计的目的仅仅是用来创建调用程序的框架,它不能主动采取措施。 • 它的所有关键词和参数,对现有或新创建的Run-Time 组件进行定义。一些JCL 参数可设置限制或者建立其他Run-Time 变量,但JCL 本身只能为程序建立一个Run-Time 环境,而不能进行存储获取和数值改动等活动。
JOB语句关键字参数REGION • 鉴于此,关于REGION 参数如何在z/OS JCL Stream 中影响虚存,要记住以下三个关键要素: 1. 它从不获取任何存储,它仅设置限定。 2. 在Job Card 上编写的REGION 值覆盖任何Step-coded 值。 3. 编写的值有一个范围,16M 以下,REGION 值限定24 Bit 存储;32M以上,REGION 值限制31 Bit 存储。
JOB管理中的若个问题 • 1. INIT启动程序 原系统的启动程序是12个。 进行教学或者培训时,管理员可以根据需要增加启动程序个数,比如有扩大到30个的,IPL后立即可用22个,另外8个通过命令来激活,采用作业提交方式,把一个CICS启动起来 • 2. 学生提交作业时,常见的几种现象 学生在练习时,由于大量作业的提交,会造成启动程序 (INIT)的短缺,致使后继的JOB处于等待状态。
JOB管理中的若个问题 在学生提交的作业中,因分配的资源(如VOL)出 错,该作业将等待处理,会使后继的作业排队等候。 注意:出现这种错误,是无法直接将作业删除的,必须按消息号回答:nnCANCEL 学生们若使用相同的作业名,也会使这些作业排队等待。 学生提交的作业中,如果在JOB语句中用了未定义的CLASS参数,会造成该作业处于HOLD状态。 其它种种问题(如新建数据集重名)等,都会导致作业产生异常终止。
作业状态信息 IN 作业正在执行(已交换入) IN* 作业正在进入(已交换入) OUT 作业未做任何工作(已交换出,准备好执行) OU* 作业正在退出(正在交换出) OWT 作业正在等待某事(已交换出,未准备好执行) NSW 正常状态。当作业在等待带机资源(如等装带,重绕 带)或等待口令,也会处于“NSW”状态,一旦条件满 足,即转为“IN”状态。 另外,当一个作业使用磁带完 毕后 ,也会从 “IN”转为“NSW”状态。 NF – Address is not dispatchable because of a failure in the Address. 常见的有:OUTNF,OWTNF,IN NF,IN NFJ 等。
作业消息 A :要求响应,操作员必须响应。 D :要求决策,操作员必须做出一种选择。 E :要求最终响应,若有时间,操作员要求员响应。 I :指示信息,不要求响应。 W:等待(处理暂行),直至决定并响应为止。
作业消息 nn aaa nnna text →消息摘要 nnn:为3个十进制数 | ↓ a = I :通知性消息 | 消息码=IEA:消息发自任务管理 A:需立即性动作 | IEC:消息发自数据管理 D:必须做出决定 | IEE:消息发自主调度程序 E:必须推迟性动作 | IEB:消息发自作业调度程序 W:等待纠正动作 | IEF:消息发自终止/恢复管理 | IGF:消息发自终止/恢复管理 ↓ $HASP :消息发自JES2管理 在reply中指定的ID号
作业控制命令 • 作业控制命令用于管理JES2控制下所运行的作业,作为一个系统管理员,基本命令应该熟练掌握。 • $C,$A :删除、释放作业。 • $D :显示各种队列中的作业,如$DN,$DQ, $DO等。 • $H,$E :用于对作业的挂起与重新排队。 • $L,$O :用于查看、输出排队队列中的作业。 • $P :用于删除输出队列中的作业。
作业控制命令 • $T :改变一个作业的运行级别(CLASS)和优先数(PRTY),也可以改变某个启动程序(INIT)为某类作业服务的类别等。 • $R :用于指定作业的输出,引导到指定的设备上去。 • D A,L /A – 显示有关活动的批作业、TSO终端用户、系统任务等概要/详细信息。 • D J,L/A – 仅显示活动批作业的概要/详细信息。 • D T,L/A –仅显示活动的TSO终端用户概要/详细信息。
EXEC语句 JCL语句——EXEC语句(1) • EXEC语句标明作业或过程中的每一作业步的开始,并告知系统如何执行该作业步。一个作业最多可以有255个作业步
EXEC语句 • JCL语句——EXEC语句(2) •EXEC语句中的位置参数有两个:PGM和PROC。 •EXEC语句的关键字参数是可选的,这些参数只作用于本作业步
EXEC语句 • EXEC语句——PGM参数(1)
EXEC语句 EXEC语句——PGM参数(2) • PGM参数用于指明所要执行的程序名。 • 程序名的调用方法分为直接调用和间接调用 • 格式: PGM ={program-name} {*.stepname.ddname} {*.stepname.procstepname.ddname}
EXEC语句 EXEC语句——PROC参数(1)
EXEC语句 EXEC语句——PROC参数(2) • 指明作业步所要运行的过程名 • 格式: {PROC=procedure-name} {procedure-name } • 在设定该参数时,可直接写出过程名
EXEC语句 EXEC语句——关键字参数 • EXEC语句的关键字参数是可选的, 这些参数只作用于本作业步。 • 书写形式: 关键字参数.过程步名=值
EXEC语句 EXEC语句的关键字参数——PARM(1) •用于向本作业步执行的程序传递变量信息。
EXEC语句 EXEC语句的关键字参数——COND(1) • 用于对先前作业步执行的返回 码(return code)进行测试,以 决定是否执行本作业步 • code:系统使用code(测码) 与先前作业步或某特作业步的返 回码进行比较。
EXEC语句 EXEC语句的关键字参数——COND(2) • code:系统使用code(测码) 与先前作业步或某特作业步的返 回码进行比较。 • operater:表示code与返码的 比较类型,这些比较操作符如右 图:
EXEC语句 COND的子参数——EVEN和ONLY • EVEN:表示无论即使先前作业 步异常终止,本作业步都要执行。 • ONLY:表示只有先前作业步异 常终止,本作业步才执行。
DD语句 JCL语句——DD语句 •数据定义语句(DD语句)用于定义 一个数据集以及该数据集所需的 输入输出
DD语句 DD语句的位置参数——* ——DATA ——DUMMY DD语句的关键字参数分为两大类,一类与设备相关,另一 类则与数据集或数据相关,与设备相关的参数有UNIT、 VOLUME、SPACE、LABEL等,与数据集、数据相关的参 数有DSNAME、DISP、DCB、RECORG、EXPDT、 RETPD、PROTECT、SYSOUT、HOLD等
DD语句 • DD语句通过这些参数完成下述任务: •定义顺序数据集(sequential data set)或分区数据集(partitioned data set)名; •描述数据集状态、属性及保留期限; •描述设备类型、数量; •设置数据集的记录格式、占用空间; •描述作业的处理方式。 下面介绍其中几个参数:
DD语句 • 通过DISP参数可以向系统描 述数据集的状态,并且可以设定 系统在作业步或作业结束如何处 理相应的数据集。实例如右图:
DD语句 • UNIT参数用于请求物理设备, 用户通过设置设备地址或设备类 或设备组名等子参数确定设通过 设置设备数或P等子参数确定设 备数量。具体如右图:
DD语句 • 通过VOLUME参数可以指定 所引用的数据集所在的卷或卷 组,也可以用来指定新建数据 集所在的卷或卷组。
DD语句 • SPACE参数用于为新建数据 集分配磁盘空间,对于磁带卷不 起作用。
DD语句 •使用DCB参数可以完善数据集 的数据控制块(DCB)中的信息 •格式:[ DCB=(子参数[,子参数]...)]
DD语句 • 通过SYSOUT参数可以将相 应的数据集标志为一个系统输 出数据集。
JCL实例 • 学习了上述JCL的基本知识后,下面通过一些JCL实例来掌握JCL的正确用法,这些对一个优秀的系统管理员是不可或缺的。 • 几个必要的JCL实例: 1.磁带卷初始化 //SP99INT 1,HXP,MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A, // NOTIFY=SP99 //TAPINT EXEC PGM=IEHINITT //SYSPRINT DD SYSOUT=* //LABEL1 DD UNIT=(580,1,DEFER) //SYSIN DD * LABEL1 INITT SER=AAAAAA(,NUMBTYPE=1)
JCL实例 // LABEL1 INITT SER=BBBBBB LABEL1 INITT SER=CCCCCC LABEL1 INITT SER=DDDDDD // LABEL1 INITT SER=050001,NUMBTAPE=9 //* 注:当给出 NUMBTSPE=X,其中X>1时,SER=nnnnnn,必须是数字。 2. Delete VSAM //SP99DEL JOB 1,HXP,CLASS=A, // MSGLEVEL=(1,1),MSGCLASS=X //DEL EXEC PGM=IDCAMS
JCL实例 //SYSPRINT DD SYSOUT=* //VOL1 DD UNIT=3390,DISP=OLD,VOL=SER=USER02 //SYSIN DD * DELETE (‘ST001.VASM.KSDS') - FILE(VOL1) /* // 3.盘卷初始化(JCL) //XP99IN JOB 1,'H.X.P',CLASS=A,MSGLEVEL=(1,1), // MSGCLASS=X,NOTIFY=&SYSUID //INVOL EXEC PGM=ICKDSF,REGION=6144K //SYSPRINT DD SYSOUT=*
JCL实例 //SYSIN DD * INIT UNITADDRESS(0A97),VERIFY(XX3017) PURGE - INDEX(99,1,2) VTOC(100,0,15) NOVALIDATE - VOLID(USER05) OWNER(CHUR) // 注意:用于不同目的的盘卷,VTOC的空间大小也不同: VTOC(100,0,15) VOLID(WORK01) VTOC(100,0,30) VOLID(TSO001) VTOC(100,0,45) VOLID(USER01) 上述盘卷的初始化还应注意几个问题
JCL实例 ① 本系统的盘卷资源没有用SMS来管理,所以在对盘卷进行初如化时,不能加入SMS参数 (SG)。 ② 盘卷VTOC的大小,视各种用途而定: • 一般15_30 TRKs就够了 • TSO、USER卷的VTOC可以大些,如 45 TRKs ③ INDEX部分可以不定义,但对I/O性能会有影响。 4. SYSLOG转储的过程(JCL) //SLGWRT PROC //IEFPROC EXEC PGM=IASXWR00,