雅昌艺术品鉴定中心:大型机学习之具体技术之-JCL练习(四)-特殊的DD语句 -的专栏 - C...

来源:百度文库 编辑:九乡新闻网 时间:2024/07/02 19:41:16
公告: 2011年4月微软MVP申请开始啦!有兴趣的抓紧时间哦! [意见反馈][官方博客]   大型机学习之具体技术之-JCL练习(四)-特殊的DD语句 收藏
《大型机学习之具体技术之- JCL 练习四-特殊的 DD 语句》   从前面的学习中我明白了我可以通过 JCL 调用系统实用程序来完成许多常见的功能,但是,我并不知道系统中这些实用程序倒底在什么位置,还有如果我想调用的是自己写的 PL/I 或者 COBOL 程序 或者甚至是另一个 JCL 作业(这样不知道可以不?) ,又该如何处理呢?所以,还得接着学习 JCL 。 原来,当一个作业步需要调用一个程序的时候,系统会在一个名叫 SYS1.LINKLIB 的系统库中去找你要调用的那个程序,或者去一个由你在安装时用 LINKLIST 这个参数成员指定的列表库中去寻找。 当你需要调用一个自己写的程序时,你就需要自己指定位置,那么,就要用到一个特殊的 DD 语句- JOBLIB : JOBLIB 通过 JOBLIB DD 语句用户可以创建一个私有库或为作业指定一个私有库。系统将会首 先搜索所指定的私有库去查找那些在 EXEC 语句的 PGM 参数中使用的程序,只有在私有库中没发现相匹配的程序时系统才会去搜索系统库。 一个私有库实际上是一个位于一个直接访问设备上的分区数据集 (PDS) 或分区数据集扩 展 (PDSE) ,其中的每一个成员都是一个用户的可执行程序。 格式: //JOBLIB   DD   参数,[参数,参数。。。]   定义已编目的库: 指定 DSNAME 参数。     指定 DISP 参数,其中的状态子参数必须为 OLD 或 SHR 。     不需要指定 VOLUME 或 UNIT 参数。   定义未编目的库:     指定 DSNAME 参数。             指定 DISP 参数,参数值必须为 DISP=(OLD,PASS) 或 DISP=(SHR,PASS) 。其中 SHR 表示这个数据集是已经存在的并允许其它作业使用这个库。             指定 UNIT 参数。             指定 VOLUME 参数。   创建一个库:             指定 DSNAME 参数,作为库的名字。             指定 UNIT 参数,注意一个库必须建立在一个直接访问设备上。             指定 VOLUME 参数,非特定卷的情况例外。             指定 SPACE 参数,为整个库分配足够的空间,并为 PDS 的目录分配空间。             指定 DISP 参数,其中的状态子参数必须为 NEW 。   向库中添加成员:             在 DSNAME 参数包含相应的成员名,例如, DSNAME=LIBRARY(PROGRAM)             将 DISP 参数中的状态子参数指定为 MOD 。如果在创建库时已经编目则不需要其 它子参数,否则指定为 PASS 或 CATLG 。             不要指定 SPACE 参数。   其它参数: 如果在数据集标签中不包含数据控制块信息则需要指定相应的 DCB 参数,但不要指定 FREE=CLOSE.   例一: //PAYROLL   JOB   JONES,CLASS=C //JOBLIB    DD   DSNAME=PRIVATE.LIB4,DISP=(OLD,PASS) //STEP1   EXEC   PGM=SCAN //STEP2   EXEC   PGM=UPDATE //DD1   DD   DSNAME=*.JOBLIB,DISP=(OLD,PASS)   在本例中, JOBLIB 指定的私有库已经被编目,所以无需指定 UNIT 和 VOLUME 参数。系统首先搜索 PRIVATE.LIB4 私有库去查找程序 SCAN,UPDATE ,然后才查找系统库 SYS1.LINKLIB, 在 DD1 语句中引用了 JOBLIB 语句所指定的私有库。   例二: //PAYROLL   JOB   FOWLER,CLASS=L //JOBLIB   DD   DSNAME=PRIV.DEPT58,DISP=(OLD,PASS), //   UNIT=3350,VOLUME=SER=D58PVL //STEP1   EXEC   PGM=DAY //STEP2   EXEC   PGM=BENEFITS //DD1   DD   DSNAME=*.JOBLIB,VOLUME=REF=*.JOBLIB,DISP=(OLD,PASS)   因为在本例中, JOBLIB 语句所指定的私有库没有被编目,所以要指定 UNIT 和 VOLUME 参数,系统首先查找所指定的 PRIV.DEPT58, 如果找不到,才去找 SYS1.LINKLIB 系统库,在 DD1 语句中引用了 JOBLIB 语句中指定的私有库。   例三: //TYPE   JOB   MSGLEVEL=(1,1) //JOBLIB   DD   DSNAME=GROUP8.LEVEL5,DISP=(NEW,CATLG), //   UNIT=3350,VOLUME=SER=148562,SPACE=(CYL,(50,3,4)) //STEP1   EXEC   PGM=DISC //DDA   DD   DSNAME=GROUP8.LEVEL5(RATE) , DISP=MOD, //   VOLUME=REF=*.JOBLIB //STEP2   EXEC   PGM=RATE   由于在本例的 JOBLIB DD 语句中指定的私有库还不存在,因此必须在 JOBLIB DD 语句中包含所有用于定义这个库的必要的参数。这个库将在 STEP1 中被建立,并且由 DD 语句 DDA 为这个库添加了一个新的成员 RATE 。明显可知,系统将在系统库 SYS1.LINKLIB 中查找程序 DISC ,在作业步 STEP2 中系统将首先在新创建的私有库中查找程序 RATE 。     例 四:     //PAYROLL JOB  BIRDSALL,TIME=1440    //JOBLIB  DD   DSNAME=KRG.LIB12,DISP=(OLD,PASS)    //        DD   DSNAME=GROUP31.TEST,DISP=(OLD,PASS)    //        DD   DSNAME=PGMSLIB,UNIT=3350,    //           DISP=(OLD,PASS),VOLUME=SER=34568       通过三个 DD 语句为作业定义了三个相连接的私有库 ,系统将按照下面的顺序查找每一个程序:            KRG.LIB12           GROUP31.TEST           PGMSLIB           SYS1.LINKLIB 当然,有特殊用途的 DD 语句不止 JOBLIB 一条,还有如 JOBCAT,STEPCAT,STEPLIB 以及我们前面已经用过的 SYSIN 。下面逐条进行: JOBCAT 通过 DD 语句 JOBCAT 可以为作业定义一个私有的 VSAM 用户编目或完整的编目功能 。系统可以在搜索主编目或搜索与数据集名的第一部分相关联的私有编目 ( 不明白这儿的搜索编目指的是什么。。。 ) 前先搜索本语句中定义的私有编目。 当作业中引用了一个 SMS ( STORAGE MAMAGEMENT SUBSYSTEM )数据集时不要使用 JOBCAT 语句,因为 SMS 仅仅访问那些在系统编目中进行编目的 SMS 数据集。 格式:      //JOBCAT DD DISP={OLD},DSNAME= 私有编目名 [, 参数 ]... [ 说明 ]                        {SHR}                                           不要指定任何 UNIT 和 VOLUME 参数,系统将会从主编目中获取私有编目的位置。 可以通过在 JOBCAT  语句后立即跟有省略了语句名的 DD  语句的方法为作业指定多个这样的私有编目。 应当将 JOBCAT 语句放置在 JOB 语句之后,并且位于第一个 EXEC 语句之前。 如果作业中包含了 JOBLIB 语句,应当放置在 JOBCAT 语句之前。      例 1        //EXAMPLE  JOB  WILLIAMS,MSGLEVEL=1         //JOBLIB   DD   DSNAME=USER.LIB,DISP=SHR         //JOBCAT   DD   DSNAME=LYLE,DISP=SHR         //         EXEC PGM=SCAN    在这个例子中, JOBCAT 语句指定了一个私有编目 LYLE ,并且 JOBCAT 语句位于 JOBLIB 语句之后。   STEPCAT   通过 DD 语句 JOBCAT 可以为作业步定义一个私有的 VSAM 用户编目或完整的编目功 能。系统可以在搜索主编目或搜索与数据集名的第一部分相关联的私有编目前先搜索本语句中定义的私有编目。 当作业步中引用了一个 SMS 数据集时不要使用 JOBCAT 语句,因为 SMS 仅仅访问那 些在系统编目中进行编目的 SMS 数据集。 格式:      //STEPCAT DD DISP={OLD},DSNAME= 私有编目名 [, 参数 ]... [ 说明 ]                         {SHR}                              不要指定任何 UNIT 和 VOLUME 参数,系统将会从主编目中获取私有编目的位置。 可以通过在 STEPCAT 语句后立即跟有省略了语句名的 DD 语句的方法为作业指定多个 这样的私有编目。 通过下面的语句可以在一个特定的作业步中用主编目覆盖 JOBCAT 中定义的私有编目: //STEPCAT    DD    DISP=OLD,DSNAME= 主编目名。 在一个作业步中可以将 STEPCAT 语句放在 DD 语句中的任何一个位置。        例 1.         //         EXEC PROC=SNZ12          //STEPCAT  DD   DSNAME=BETTGER,DISP=SHR          STEPCAT 语句为这个作业步定义了一个私有编目 BETTGER 。 STEPLIB STEPLIB 语句的作用与 JOBLIB 相似,主要区别在于作用的范围分别是作业步和作业。 这里我们不再对 STEPLIB 进行详细的说明,仅仅给出一些例子共大家参考。同一个作业中 后续作业步可以引用在 STEPLIB DD 语句中定义的私有库,同样,可以将一个 STEPLIB DD 语句放在内部流或编目过程中,但不能将 JOBLIB DD 语句放在内部流或编目过程中。      . 格式:      //STEPLIB DD    参数 [, 参数 ]... [ 说明 ]      例 1         //PAYROLL JOB  BROWN,MSGLEVEL=1         //STEP1   EXEC PROC=LAB14         //STEP2   EXEC PGM=SPKCH         //STEPLIB DD   DSNAME=PRIV.LIB5,DISP=(OLD,KEEP)          //STEP3   EXEC PGM=TIL80         //STEPLIB DD   DSNAME=PRIV.LIB12,DISP=(OLD,KEEP)  在本例中系统首先在私有库 PRIV.LIB5 中搜索程序 SPKCH ,在私有库 PRIV.LIB12 中搜 索程序 TIL80 。          例 2         //PAYROLL JOB  BAKER,MSGLEVEL=1         //JOBLIB  DD   DSNAME=LIB5.GROUP4,DISP=(OLD,PASS)         //STEP1   EXEC PROC=SNZ12         //STEP2   EXEC PGM=SNAP10         //STEPLIB DD   DSNAME=LIBRARYP,DISP=(OLD,PASS),         //           UNIT=3350,VOLUME=SER=55566         //STEP3   EXEC PGM=A1530         //STEP4   EXEC PGM=SNAP11         //STEPLIB DD   DSNAME=*.STEP2.STEPLIB,         //           DISP=(OLD,KEEP)  系统首先在私有库 LIBPARYP 中搜索程序 SNAP10 ;库 LIBRARYP 将被传递到后续的作业步。在作业步 STEP4 中的 STEPLIB DD 语句引用了 LIBRARYP 库,因此系统将会在 LIBRARYP 中搜索程序 SNAP11 。由于在这个作业中包含了 JOBLIB DD 语句,系统将会首先在库 LIB5.GROUP4 中搜索程序 SNZ12 和 A1530 。          例 3         //PAYROLL JOB  THORNTON,MSGLEVEL=1         //JOBLIB  DD   DSNAME=LIB5.GROUP4,DISP=(OLD,PASS)         //STEP1   EXEC PGM=SUM         //STEPLIB DD   DSNAME=SYS1.LINKLIB,DISP=OLD         //STEP2   EXEC PGM=VARY         //STEP3   EXEC PGM=CALC         //STEPLIB DD   DSNAME=PRIV.WORK,DISP=(OLD,PASS)         //        DD   DSNAME=LIBRARYA,DISP=(OLD,KEEP),         //           UNIT=3350,VOLUME=SER=44455          //        DD   DSNAME=LIB.DEPT88,DISP=(OLD,KEEP)          //STEP4   EXEC PGM=SHORE  对于作业步 STEP2 和 STEP4 来说系统首先会在私有库 LIB5.GROUP4 中搜索程序 VARY 和 SHORE 。但对于 STEP1 来说,系统或首先搜索库 SYS1.LINKLIB 来查找程序 SUM 。   在 STEP3 中定义了一组私有库,系统按照下面的顺序搜索程序 CALC : PRIV.WORK 、   LIBRARYA 、 LIB.DEPT88 、 SYS1.LINKLIB 。如果有后续的作业步引用在 STEP3 中定义的 STEPLIB 语句,所引用的仅仅是库 PRIV.WORK ,其它的库将不会被引用。     SYSIN 通常,我们使用 SYSIN DD 语句作为一个内部流数据集的开始。内部流数据集以 DD * 或 DD DATA 语句开头,这样的 DD 语句可以有任何一个有效的名字,包括 SYSIN 。如果在 内部流数据之前省略这样的 DD 语句,系统会自动提供一个名为 SYSIN 的 DD * 语句。 格式:      //SYSIN DD 参数 [, 参数 ]...  [ 说明 ]                            第一个参数为 * 或 DATA ,用以指出后面紧跟的时内部流数据。这条语句必须且只能够 位于内部流数据前。         例 1        //STEP1  EXEC  PGM=READ         //SYSIN  DD    *                    .                    .                    数据     其实从前面在学习系统实用程序的时候也看到了,那种情况下 SYSIN DD 语句也常常用来标示控制语句。 发表于 @ 2009年10月10日 16:57:00 | 评论( 0 ) | 编辑| 举报| 收藏 旧一篇:sleep in rexx
查看最新精华文章 请访问博客首页相关文章
大型机学习之具体技术之-z/OS中的作业管理系统,SDSF工具及JCL大型机学习之具体技术之-JCL练习(一)大型机学习之具体技术之-JCL练习(四)-特殊的DD语句大型机学习之具体技术之-JCL练习(五)-过程的定义与使用大型机学习之具体技术之-JCL练习(六)-如何分析作业的输出信息大型机学习之具体技术之-JCL练习(五)-过程的定义与使用大型机学习之具体技术之-JCL练习(三)大型机学习之具体-z/OS中的作业管理系统,SDSF工具及JCL(二)发表评论 表 情:           评论内容:  用 户 名: 登录 注册 匿名评论 匿名用户验 证 码:   重新获得验证码    热门招聘职位【Zynga Beijing】热招各类游戏人才,与我们共建属于你的虚拟帝国【开心网】高薪诚聘各类技术人才千万美元风投网站高薪诚聘PHP工程师【EF 全球研发中心】赴美工作机会 诚招IT精英【鸿联九五】高薪诚聘手机游戏服务器程序 期待热爱游戏的你加盟【MediaV】技术类职位热招,欢迎应届毕业生【北京天健科技】诚聘.net架构师,高级软件开发工程师(.net , Powerbuilder)【叠拓】北欧领先IT服务公司诚聘英才 北京+成都+杭州【瀚信科技】诚聘 WINDOWS C++ WINDOWS C#中高级开发工程师【酷我音乐盒】高薪诚聘 激情爱好工作融为一体【达内集团】高薪诚聘JAVA讲师.嵌入式讲师.3G讲师.技术总监.分公司总经理【天际网】急聘Java应用架构师、高级Java工程师、网页设计师 【Zynga Beijing】热招各类游戏人才,与我们共建属于你的虚拟帝国【开心网】高薪诚聘各类技术人才千万美元风投网站高薪诚聘PHP工程师【EF 全球研发中心】赴美工作机会 诚招IT精英【鸿联九五】高薪诚聘手机游戏服务器程序 期待热爱游戏的你加盟【MediaV】技术类职位热招,欢迎应届毕业生【北京天健科技】诚聘.net架构师,高级软件开发工程师(.net , Powerbuilder)【叠拓】北欧领先IT服务公司诚聘英才 北京+成都+杭州【瀚信科技】诚聘 WINDOWS C++ WINDOWS C#中高级开发工程师【酷我音乐盒】高薪诚聘 激情爱好工作融为一体【达内集团】高薪诚聘JAVA讲师.嵌入式讲师.3G讲师.技术总监.分公司总经理【天际网】急聘Java应用架构师、高级Java工程师、网页设计师  公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
 Email:webmaster@csdn.net
Copyright © 1999-2010, CSDN.NET, All Rights Reserved  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wang_pc/archive/2009/10/11/4651135.aspx