




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IBM APCB TeamJCL使用法基础前言相传很久以前,美国IBM门派修炼成mainframe之葵花宝典,掀起IT风云,江湖无人能及。21世纪初,全球IT再次风云变幻,江湖告急。掌握mainframe神功的武林同僚为数不多。特此,IBM门下ISSC-JPCOMM-APCB科研小组,书武学一本,旨在光大武林。Mainframe之神功确实高深莫测,APCB科研小组经过不懈的研讨与修炼,冒着走火入魔的危险,终于练成0.1/100的功力。本书未经授权人允许或未向撰稿人实施贿赂者,不得向银河系以外的人发布!授权与撰稿人主席:刘庆鑫副主席:田野APCB科研小组特此声明!V1.0版2008/01/31年出版本章说明此时,如果您老人家的word工具还没有打开左边的索引结构,请不要犹豫,看起来很方便。作者写这篇文章是希望,把JCL的一些基础知识介绍给大家,尽量简洁,用实例使大家尽快入门文章里引入了一些基本的,常用的,和应用程序关系比较大的一些内容,也希望对大家做应用开发的时候有用处,比如应用系统的batch处理功能以后有时间或需要再将内容丰富一些,或写些其他方面的文档。推荐学习大型机的学习书序ISPF/SDSF - JCL - 一门主机语言(COBOL易入门) -VSAM -数据库系统(DB2,IMS) - CICS如果您实践过程中发现本书没有介绍或不清楚的关键字或参数,请参考下面的书籍。多培养培养自己的学习能力Title: z/OS V1R9.0 MVS JCL ReferenceURL: /cgi-bin/bookmgr/FRAMESET/iea2b670/FIRST?DT=20070427231644&SHELF=&CASE=&SHELF=iea2bk80&CASE=1.JCL基本结构JCL程序一般说来主要由JOB HEAD, EXEC, DD语句组成,其功能请参照各个介绍章节。/JOB- JOB HEAD/EXEC1- STEP,实行的程序或utility/DD1- 上面程序相关的DataSet/EXECn- 一个job内可有多个step/DDn -一个source里可以有多个JOBSAMPLE: (以创建DS的Utility IEFBR14为例)/YEEX001 JOB CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID,MSGLEVEL=(1,1)/STEP1 EXEC PGM=IEFBR14/NEWDS DD DSN=yourid.TEST.CBL,DISP=(NEW,UNCATLG),/ SPACE=(TRK,(1,2,1),UNIT=3390,/ VOL=SER=XXXXXX,/ DCB=(DSORG=PO,LRECL=80,BLKSIZE=800,RECFM=FB)/解释:实行job name 为YEEX001, step name为step1 的JCL。该JCL在磁盘 XXXXXX上面创建一个名为自己的ID.TEST.CBL的DATASET, 它的DD Card为NEWDS11 JCL的编写与提交现在请利用PDS的一个MEMBER,书写上面SAMPLE介绍的JCL。像下面那样提交你的JCL。操作顺序ISPF 3 4 找到你的PDS 打开PDS内的MEMBER(JCL) 在COMMAND LINE = SUB 回车 12参看JCL结果操作顺序SDSF H 然后像下面一样用S 或者? 选择你想参看对对象更详细的操作请参照ISPF操作相关课程2.JOB Head介绍JOB头标志你要向系统提交一个JCL作业。它是JCL中必须的,必须放在JCL文件的第一行,或者第一个JOB结束之后。当然,一个JCL源文件可以有很多JOB。当多个JOB存在时以只有字符/的一行为结束标志,或者以下一个JOB头为结束标志。当只有一个JOB时/可以不写。=COLS -+-1-+-2-+-3-+-4-+-5-+-6-+-7-000001 /APL2467 JOB ,TIAN.Y,CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID, 000002 / MSGLEVEL=(1,1) 位数Job 语句语句解释其他1-2/标志该行为job 语句行所有的Job语句时必须3-10job nameJob name必须12-14JOB关键字必须 前后有空格account,TIAN.Y,组织和程序员情报可选CLASS=A批作业队列必须MSGCLASS=H作业LOG的输出队列必须NOTIFY=&SYSUID,返回码通知给&SYSUID:提交作业的人TSO-ID:其他人续行从16列以前开始MSGLEVEL=(1,1) 作业LOG的输出控制0,1,2组合可*本文章举出简单常用的用法,具体某参数解释请参照本章说明里的手册通常,使用上面那些参数的JOB头就可以了3.STEP 介绍STEP表示一个JOB中你要运行那一本程序,所以也是必须的,要不你能让系统帮你干什么呢一个JOB中可以有好多STEP,各个STEP中的 程序在逻辑上可以有联系,也可以没有联系=COLS -+-1-+-2-+-3-+-4-+-5-+-6-+-7000003 /* Creat dataset000004 /CHKSYS EXEC PGM=IEFBR14位数Job 语句语句解释其他/*注释3-10step namestep name必须12-14EXEC关键字必须 前后有空格PGM=IEFBR14PGM= 程序名31 PARM=参数我们有时候想在执行JCL的时候就把想要得参数传到程序里所以,格式如下/STEP1 EXEC PGM=MYPROG, PARM=(20080130)将上面的日期传到程序里汇编的场合R1寄存器 会指向存放20080130的内存地址,所以,只要知道R1的内容就能能找到此参数COBOL的场合LINK SECTION01 DATE PIC 9(8).PROCEDURE .USING DATE32 STEP返回码STEP的返回码,即实行程序的返回码,比如COBOL 的STOP RUN 返回码.参考第7.STEP条件控制4.DD CARD 介绍DD语句是用来为STEP准备一些资源的。它会告诉操作系统,它所在的STEP需要什么样的资源,比如哪个磁盘。一旦操作系统为程序准备好满足(各个参数)要求的资源,控制权就可以转交给程序了。上面就是传说中的,当然在大型机里我们不叫它进程,而叫TASK!DDCARD 与DATASET的区别与联系:DDCARD对于DATASET来说,就像给一个人起了一个名字或分配的一个身份证号码。程序只会识别DDCARD=COLS -+-1-+-2-+-3-+-4-+-5-+-6-+-7/NEWDS DD DSN=S206598.YE.TEST01,DISP=(NEW,UNCATLG),/ SPACE=(TRK,(1,2,1),UNIT=3390,/ VOL=SER=COMUSR,/ DCB=(DSORG=PO,LRECL=80,BLKSIZE=800,RECFM=FB)/位数Job 语句语句解释其他3-10DD card nameDD card name必须12-13DD关键字必须 前后有空格DSN=DSN= dataset可选DISP=DISP= 处理方式NEW,SHR,MOD,DELETE.SPACE=SPACE=分配空间UNIT=UNIT=磁盘类型VOL=SER=VOL=SER=卷标DCB=(DCB=文件控制块/(nothing else)JOB结束标志4.1 DISP= 文件处理通常,我们处理文件时,会有3种情况:A. 处理该文件之前的时候,它是什么样的文件?B. 处理文件正常的时候,把文件怎么样?C. 处理文件异常的时候,把文件怎么样?所以,文法为DISP=(A,B,C)上面是不同情况的处理,下面讲的是发生上述情况采取什么样的处理FOR A,1. NEW:不存在,新作2OLD:已存在 (排他)3SHR:存在,处理的同时,其他程序也处理(读的情况)4MOD:存在,可向文件末尾追加纪录(排他)FOR B,C,5. DELETE:删除6 KEEP:保留7CATLG:保留,并CATALOG8UNCATLG保留,不CATALOGFOR B(only),9 PASS:留给下一个STEP,不做处理(*各种处理方式组合,默认值等不做介绍,实践中总结)4.2 SPACE=分配空间用什么单位来给DATASET分配空间?第一次分配多少?第一次都用完了,我们应该怎么办?如果是PDS,为了管理所属MEMBER信息,需要额外的空间(登录薄),如何分配参照下面语句,和上面的疑问联系起来(SPACE=(TRK,(primary,secondary,for PDS登录薄),常用的分配单位有BYTES(byte) BLKS(block) TRKS(track) PROC内容/STEP2 EXEC PGM=REFER/DD1 DD DSN=*.STEP1.STEP1.DD156空DATASET比如一程序处理一DDCARD,通常是包含DATASET(数据)的。但是某些情况又不需要处理这些数据。可以用两种方法 使用5.5参照DATASET的方法/JOBNAME JOB ./STEP1 EXEC PGM=MYPROG/DD1 DD DSN=MY.DATASET.DISP=SHR,/DD2 DD DUMMY/DD3 DD DSN=*.DD2(DD3为程序所设计,识别) 使用JCL PROCEDURE的替代方法PROCedure在JCL过程的章节介绍/JOBNAME JOB ./STEP1 PROC MYPROC /DD1 DD DUMMY(其中DD1在MYPROC过程中已经声明)57程序调试用DATASET 当程序异常终了的时候,可以用一些特殊的方法进行调试。系统给我们提供了3个很特别的东西供我们参考。不过看起来有些专业,如果你对内存,16进制不敏感的话就不用尝试了SYSUDUMP只对程序,16进制格式SYSABEND对程序和系统,16进制格式SYSMDUMP对程序和系统,不清楚SAMPLE/JOBNAME JOB ./STEP1 EXEC PGM=MYPROG/DD1 DD DSN=MY.DATASET.DISP=SHR,/ SYSUDUMP DD SYSOUT=*(DD1为程序所设计,识别)6.关于程序库的说明Q: 文章开始并没有指定程序IEFBR14存放的位置,那么系统执行JCL时是如何知道去哪里找这本程序呢?A: 因为该程序是放在SYS1.LINKLIB,如果不在JCL里指定,系统就会从这里找到它其实很多系统有类似的LIB, 如SYS1.*.LINKLIB, 系统也可自己找到,其原因完全取决于系统管理员 JCL程序-/YEEX001 JOB CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID,MSGLEVEL=(1,1),/ COND=(0,NE)/JOBLIB DD DSN=MYLIB1/STEP1 EXEC PGM=MYPROG/STEPLIB DD DSN=MYLIB2/NEWDS DD DSN=S206598.YE.TEST01,DISP=(NEW,UNCATLG),/ SPACE=(TRK,(1,2,1),UNIT=3390,/ VOL=SER=COMUSR,/ DCB=(DSORG=PO,LRECL=80,BLKSIZE=800,RECFM=FB)/流程图STEPLIB=dataset指定JOBLIB=dataset指定Any managed dataset;SYS1.LINKLIBsearch program发现目标!发现目标!发现目标!OK!Action!7.STEP条件控制通常,后一个STEP的执行要基于前一个STEP是否被正常执行,比如只有创建DATASET的STEP正常,后面我们才能引用它。所以用COND=(n,比较符),开控制STEP是否执行格式:/JOBNAME JOB COND=(n,比较符)或/STENAME EXEC PGM=, COND=(n,比较符)说明:n- 14095的任意值,用程序设计者设计,比如cobol 的stop run 返回码比较符- GT大于LT小于EQ等于NE不等于GE大于等于LE小于等于例:EXEC PGM=,COND(10,GT)解释,当n大于上一个STEP的返回码时,就不执行这个STEP.。这正判断的方法看起来有点别扭,但是在这里劝大家不要试图反过来理解当返回码(?=?等)n时就执行该STEP,这样的话,出错可不奇怪了SAMPLE:/JOBNAME JOB ./STEP1 EXEC PGM= CREAT-DATASET/STEP2 EXEC PGM= REFER-DATASET,COND=(0,LT)0小于STEP1的返回码么?小于的话,创建DATASET不合格,STEP2不必参照这个DATASET,不执行!*更复杂的条件组合在这里部介绍了。8.JCL过程(PROC)介绍往往,为了方便为了减少出错的可能性为了降低重复开发的工作量我们自然而然的会想到是否我们可以写一个子程序那样的JCL,答案是肯定滴!先来看一个例子吧!(红色的为PROC的关键字)/APL2467 JOB ,TIAN.Y,CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID, / MSGLEVEL=(1,1)/* here is a proc named PROCA/PROCA PROC/STEPA EXEC PGM=MYPROG/DDA DD DSN=XXXXX.TEST.DATA,DISP=SHR/ PEND /* here the PROC ends/* here to call the PROC/STEP1 EXEC PROCA/STEP2 EXEC PROCA/JCL过程可以有3种作成方法 过程和调用它的JCL写在同一个文件里,上面的例子所示,称stream PROC此方法常为开发时所用,便于调试。成功以后再变成下面两种形式。 过程为系统管理员所管理的(你不用在乎它在哪里),称CATALOG PROC自己作练习的时候你用不上这种方法,你也没有权限。对leader有用。如果你想了解它是怎么写的,请查看SYS1.*.PROCLIB这样的PDS 过程是自己常常利用的,当然和JOB头放在同一文件里又失去了PROC的意义,可以叫它非CATALOG PROC用此方法时,因为不是CATALOG的,所以你需要在调用该PROC的JCL里指出它的位置,如下/JOBNAME JOB /MYLIB JCLLIB ORDER=(yourdataset1,yourdataset2,yourdatasetN)/STEPNAME PROC procname 81过程参数既然看起来像子程序,那么自然传参数也不是什么新鲜事了看一个例子,假设/APL2467 JOB ,TIAN.Y,CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID, / MSGLEVEL=(1,1)/*调用语句/STEP1 EXEC PROCA PROG=MYPROG,LANG=CBL/ job ends/*定义语句/PROCA PROC/ PROG= /*What name of the program */ TEAM= /*Which project?*/ LANG=PLI /*Create PLI library for deafalt*/*执行语句/STEP1 EXEC PGM=&PROG/DD1 EXEC DSN=PROJ&TEAM.TEST.&LANG上面的例子是较为简单常用的形式,一个名为APL2467的JOB调用了一个名为PROCA的过程,注意红色的文字,对照下面的文法说明 PROC名当然一定要一致啊 变量符号&:参数变量在调用语句和定义语句都不必加&符号,而只有在执行语句里面加此符号 LANG=PLI:在定义语句里给参数赋值则为默认值,如果在调用语句赋值,则覆盖默认值 注意上面DATASET的名字其实在JCL参数的作用就是简单的覆盖像MARCO宏一样PROJ&TEAM 是DATASET前缀修饰名,系统可以识别并替代&TEAM,因为前有&,后有.TEST.&LANG 中间的点来划分两个修饰词,和正常的DATASET划分一样&TEAM.TE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安丘市2025-2026学年七年级上学期语文期中测试试卷
- 安徽省池州市石台县2024-2025学年高三上学期第一次月考语文考点及答案
- DB21-T 2567-2025 工业锅炉 效率测试技术
- 2024-2025学年河南省新乡市高新区人教PEP版(2024)三年级下册期末测试英语试卷(含答案)
- 宾馆转让合同范本
- 缠绕膜合同范本
- 社区政治基础知识培训课件
- 私人聘请员工合同范本
- 承包田亩合同范本
- 网围栏采购合同范本
- 学校食堂及校内小卖部食品安全专项检查表
- DBJ∕T15-232-2021 混凝土氯离子控制标准
- 刑事报案材料模板(涉嫌诈骗罪)
- 乳制品配送服务质量保障方案
- 高血压防治指南解读课件
- 2024在役立式圆筒形钢制焊接储罐安全附件检验技术规范
- 托管老师培训课件
- 大客户营销管理策略下的客户激励与忠诚度提升
- 管道改造管道吹扫安全方案
- 非营利组织战略管理机制的构建-以上海市青少年发展基金会为例的中期报告
- 煤矿与环境保护
评论
0/150
提交评论