| ILOVEMAINFRAME 的个人资料I love mainframe日志列表 | 帮助 |
|
|
6月8日 IKJEFT01Original URL: http://bluemainframe.net/2007/06/08/ikjeft01/ IKJEFT01是一个TMP程序. (terminal monitor program). 可以执行clist,rexx,tso.e command命令等. 例1 SB01 EXEC PGM=IKJEFT01,DYNAMNBR=50 STEPLIB DD DISP=SHR,DSN=DSN.DSNLOAD SYSTSPRT DD SYSOUT=* SYSPRINT DD DSN=XXXX.XX.XXXX,DISP=(,CATLG), DCB=(RECFM=FBA,LRECL=133,BLKSIZE=133), SPACE=(CYL,(5,5)),UNIT=SPLD SYSIN DD DSN=&&CTL,DISP=(OLD,DELETE) SYSTSIN DD DSN=XXXX.IOCS.SQLLIB(DSNTEP2),DISP=SHR XXXX.IOCS.SQLLIB ********************************* Top of Data ********************************** DSN SYSTEM(DSN) RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2) LIB(’DSN.RUNLIB.LOAD’) ******************************** Bottom of Data ******************************** SYSTSIN sysin控制参数 这里是一段CLIST程序 例2 在DB2使用中,DSN用来获取DB2在OS/390的Subsystem identifier,用来对DBRM进行BIND PLAN或者 BIND PACKAGE的,也能PLAN和PACKGAE进行RUN。 在IKJEFT01中输入执行语句应该写在 SYSTSIN里 BIND的时候: //DBRMLIB DD DSN=XXX.XXX.XXX,DISP=SHR //SYSTSIN DD* DSN SYSTEM(Subsystem identifier) BIND PLAN(PLAN-name) MEMBER(DBRM-name) ACT(REP) ISO(CS) END /* RUN的时候 : //SYSTSIN DD * DSN SYSTEM(Subsystem identifier) RUN PROGRAM(DB2PGM-name) PLAN(PLAN-name) - LIBRARY(’DATASET-name of DB2PGM’) END /* 对于abend情况的处理,可以用IKJEFT1A,IKJEFT1B 6月5日 IEBUPDTEOriginal URL: http://bluemainframe.net/2007/06/05/iebupdte/ IEBUPDATE 这个 UTILITY 最常见的用法是用来在分区数据集中创建多个 member,或者更新这些 member 中的数据。虽然 IEBUPDATE 能够用来处理给中类型的数据,但是主要用途还是创建或者维护JCL的过程库或者汇编语言的宏程序库。今天,这个 UTILITY 大多用来做程序产品的发布和维护了。很少被普通 TSO 用户使用。 这里有一个很基本的例子用来往 MY.PROCLIB 中添加两个 JCL 的过程的 MEMBER。运用 ISPF 也许能够很方便的完成这些事情,但是如果我们假设这个 JOB 已经在磁带上了,那么很显然就会比 ISPF 操作更加有效。 //OGDEN10 JOB 1,BILL,MSGCLASS=X对这个例子进行一下说明:
另外,IEBUPDATE 这个 UTILITY 还能够根据控制语句中的序列号来添加或者替换相应的 MEMBER。这也是针对 JCL 语句或者源语句中那些数字序列的所剩不多的用法。 最后我们需要再次重申 IEBUPDATE 最有代表性的用法是用作程序的发布和维护。比方说,如果需要给客户的程序库中添加25个 JCL 过程,我们只需要将这25个过程作为一个程序包用 IEBUPDATE 导入。这样做的一个好处是由于所有的产品都使用一种源程序格式,客户就可以很方便的在使用之前进行审核。 6月3日 IDCAMSOriginal URL: http://bluemainframe.net/2007/06/03/idcams/ IDCAMS 其实算不上是一个记录在 z/OS UTILITY 手册中的常规组件。IDCAMS 更主要的用途是用来创建和使用 VSAM 数据集。它还有一些其他功能,比如更新 CATALOG。但是和它联系最紧密的还是 VSAM。IDCAMS 的复杂的功能还是留给大家自己看手册,我们还是讲些最基本的用法。 下面是一个很有代表性的 IDCAMS 的例子: //OGDEN12 JOB 1,BILL,MSGCLASS=X这个程序里面有两个 JOB STEP。第一步,删除在第二步将会创建的 DATASET。这是一个清除的功能。如果这个 DATASET 并不存在的话,这一步将会被忽略掉。 第二步中进行了执行了两个功能。用 DEFINE CLUSTER 命令创建一个VSAM 数据集;然后用 REPRO 命令将一个顺序数据集的内容导入。VSAM 数据集被创建在 WORK02 卷上,主空间为一个 CYLINDER,第二分配空间也是一个 CYLINDER。由于 VSAM 数据集大多使用变长的数据,所以该数据集被定义为平均 72 个字节,最大为 100字节。每个记录的 9 个自己的偏移量的首 8 个字节被设置为主键。ELIMIT 参数定义了 REPRO 操作中在终止运行之前允许忽略的错误次数。 很多 IDCAMS 的函数中中能够使用 TSO 命令,比方说 DEFINE CLUSTER 就是 TSO 命令。但是一般情况下我们不建议在 IDCMAS 中使用很复杂的命令,那样的话遇到的错误也会是很复杂的。一般我们查看和或者检查 IDCAMS 的命令和产生的消息都需要到 SDSF 中检查该 JOB 的输出结果。 6月2日 IEBDGOriginal URL: http://bluemainframe.net/2007/06/02/iebdg/ IEBDG 这个 UTILLITY 可以在指定的 DATASET 中在不同的区域生成不同样式的数据。IEBDG 是一个很具有代表性的生成测试数据的 UTILITY。能够生成各式各样的区块数据,并且还能够对其进行进行形状上的改动,比方说做成波浪形。另外,IEBDG 还支持输入式数据并覆盖制定区域的操作。 下面我们举一个最简单的例子: //OGDEN7 JOB 1,BILL,MSGCLASS=X这个JOB生成了一个叫做 OGDEN.TEST.DATA 的有90000条数据的DATASET。在 第一个 DD 里面的 DCB 参数中制定了每一条数据占80字节,控制声明段制定了一共有3个区域的数据占据了前50个字节的空间。剩下的空余位置,IEBDG 会默认将其设置为二进制的0,在 DATASET 中显示“.”。 我们指定的3个区域分别是: 字母字段,30个字节长,承叠进的波纹显示; 第二个区域放入的是固定的文字“TEST DATA ”,10个字节长; 第三个区域时随机产生10个字节长的的二进制数据。 这个例子是最简单的对 IEBDG 的用法的描述,IEBDG 还可以生成更加复杂的样式,这里就不再举例说明了。 5月31日 IEBGENEROriginal URL: http://bluemainframe.net/2007/05/31/iebgener/ IEBGENER 这个 utility 拷贝一个顺序数据集到另一个。(记住:分区数据集中的 member 可以被用作一个顺序数据集。)这个 utility 同样还能做一些数据的过滤,可以改变 LRECL 和 BLKSIZE,产生记录,以及几个其他的功能。然后,它被用的最多的是简单拷贝数据集,下面是一个典型的例子: IEBGENER 需要四个 DD 语句。SYSIN DD 语句是用来读取控制参数,用于简单情况,就不需要控制参数,这时候可以用 DD DUMMY 来代替。SYSPRINT 语句用于打印 IEBGENER 信息。SYSUT1 语句用于输入而SYSUT2 语句用于输出。这个例子读取一个现有的数据集然后把它拷贝到另一个新的数据集中。 如果输出的数据集是新的并且没有指定 DCB 参数,IEBGENER 就会赋予它和输入数据集一样的 DCB 的参数。(DCB 参数包括 LRECL,RECFM 和 BLKSIZE) 另一个常用的例子是: 这个例子假设 BILL.TEST.DATA 这个数据集已经被创建了,这个作业将会用 SYSUT1 输入流中的数据重写它,因为输出的数据集已经存在,IEBGENER 将使用它现有的 DCB 属性。 IEBGENER 是提供给 z/OS 的最基本拷贝或者 list 的程序,它在 OS/360 第一个发行版本就存在了。 5月30日 IEFBR14Original URL: http://bluemainframe.net/2007/05/30/iefbr14/ 这个程序的唯一功能是提供一个0的返回码,它被用作一个“执行 JCL ”的安全的媒介。执行 JCL 的书法并不是一个非常准确的术语,但是这里能够很好的传达想法。如下面的例子: 尽管被执行的程序(IEFBR14)并没有做任何事情,但是这还是一个非常有用的作业。当准备运行这个作业的时候,initiator 分配了数据集 OGDEN.LIB.CNTL 并保持到作业完成。它同时在作业完成时删除了数据集 OGDEN.OLD.DATA。在这个作业中 DD 的名字 A 和 B 其实没有任何意义,但是这里被使用是因为 DD 语句的语法要求每个 DD 都要有的名字。 你完全可以通过 ISPF 来完成新增一个数据集和删除另一个数据集。但是这些 JCL 代码可能会被作为一个很大顺序执行 batch 作业的一个部分。
IEFBR14 不是一个 utility,从这个意义上来说他不应该包含到 Utilities 的手册上。然后没有任何其他特别的分类可以包含这个有用的程序,所以我们专制地把它放到 Utility 的分类中。 下一个 utility:IEBGENER 什么是 JCLOriginal URL: http://bluemainframe.net/2007/05/30/what-is-jcl/ JCL(Job Control Language,作业控制语言)是描述运行在 IBM 大型机上的 z/OS 和 z/VM 操作系统中的作业(执行单元)的语言。大型机操作系统给以在电脑上启动的所有作业分配时间和空间资源。作业依次被分解为作业步。作业是无需用户交互的操作(例如,打印作业)的后台执行单元(有时称 Batch)。另外,操作系统管理着交互的(前台的,Online)用户请求,这些请求初始化了执行单元。一般来说,前台操作被赋予了比后台操作更高的优先级。 一本IBM的手册把整套JCL语言比作餐馆的点菜的订单。整个订单就像是作业。在后台厨房,厨师把订单分解开来,作出每一道菜(作业步)。当作业步都完成时,整顿饭就做好了(但每道菜必须按指定的顺序来做,就像某些作业步是依赖于其他一些已经执行了的作业步一样)。 JCL 语句主要描述了需要访问的输入数据集,将要被创建或修改的输出数据集,需要为这个作业分配哪些资源,以及要使用这些输入输出数据集来运行的程序。一个作业的 JCL 语句集将会以数据集的形式存储下来,并且能够通过交互启动它。z/OS 提供了一个交互式的像菜单一样的接口 ISPF,可以用它来初始化和管理作业。 JCL 语句主要分为三部分:
在 z/OS 中,操作系统中用来处理 JCL 的那部分被称作作业入口子系统(JES)。总共有两个版本,JES2 和后来的一个带有附加功能的版本 JES3。 JCL 的语法是比较简单,如果你有什么不明白的地方你可以给我们留言,我们会尽力回答你们的问题。 接下来的关于 JCL 文章,我们会主要介绍 JCL 的 Utilities,第一个我们会介绍的是 IEFBR104 |
|
|