1、JCL常见错误1:JCL ERROR,屏幕右上红色触目惊心的JCL ERROR,这个错误一般是JCL语句的格式错误,比如关键字写错了,数据集有重名等等在报JCL ERROR以后,进入M.5 进入H,在最后一行(最后一行是最后执行的操作,如果任务没有阻塞的话,肯定是当前发生JCL ERROR的操作),在左边输入?(?号只是让系统把调试信息分门别类的显示出来,感觉适用于我们这些菜鸟)。进入第三个JESYSMSG(在左边输入s),错误提示信息一般都在里面啦,其实JCL ERROR的错误很好懂的,把里面的英文读一下就清楚的差不多了。2:MAXCC=8或12,这里的错误一般是由蓝紫色的那些数据流里面的语
2、句写错了或者根本是这些语句里面有逻辑错误引起的,在报这个错误以后,按照上述方法进入sdsf,但这次进入的是第三个以后的SYSPRINT等,错误信息一般在这个里面,比如MISSING PARENTHESIS什么的。3:报ABENDED错误,如果报了这个错误的话,那么节哀吧,感觉这个错误不知道怎么调哈,乱七八糟的,而且原因总是很搞笑的原因,比如IEBCOPY写成了IEBCORY什么的。下面贴出来的是我总结的错误集锦,大家如果碰到相应的错误代码,可以按图索骥,应该能有点帮助的哈。 6 IEFC605I UNIDENTIFIED OPERATION FIELD第六行漏了个逗号,因此就找不到操作区域了,
3、看见了这个警告可以检查一下逗号 2 IEFC605I UNIDENTIFIED OPERATION FIELD 3 IEFC019I MISPLACED DD STATEMENT 第二行漏了PGM关键字,连“PGM”字段都漏了,肯定DD语句位置错误啦。 IGD17001I DUPLICATE DATA SET NAME ON VOLUME USER02数据集有重名,意思就是要创建的数据集已经存在,这个错误常常是因为自己的疏忽导致的。 01.49.36 JOB09455 HASP165 ST143P ENDED AT N1 - ABENDED S806 U0000 CN(INTERNAL) RE
4、QUESTED MODULE IEBCORY NOT FOUNDIEBCOPY写错了一个字母,出现挂起现象时问题一般很难解决,一般是很搞的问题,就比如,IEBCOPY写成了IEBCORY,多像哈。 CONTROL STATEMENT ERROR控制语句错误 3 IEFC618I OPERAND FIELD DOES NOT TERMINATE IN COMMA OR BLANK 前后行的衔接少了空格 在IEBCOMPARE中,如果两个比较的数据集相同则返回0,否则,则返回非0,我返回的都是12哈,所以比较的数据集不相同返回非零的话并没有错误哈。 5 IEFC006I POSITIONAL PA
5、RAMETERS MUST BE SPECIFIED BEFORE KEYWORD PARAMEDD语句中漏了“DD”字段 SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET漏了DISP语句关键字错误 IEB344I WARNING- INVALID STATEMENT LABELUTILITY的控制语句关键字不能顶格写 IEFC630I UNIDENTIFIED 某些关键字或字段拼写错了,导致不认识。 碰到过两次I/O ERROR,这个一般是语病错误,而不是语句的错误了,一次是在IEBPTPCH中数据集类型和里面的MEMBER指定错了,还有一次是指定
6、数据集的RECFM类型出了问题。 还有一个经常碰见的错误是提示关键字参数应该放在位置参数之前,这时候可以检查一下关键字参数里面有没有漏“”号,或者“,”号 如果实在查不出什么地方错误的话,可以检查一下数据集的类型是不是定义错了,一般来说定义的是FB型的,有一次在做SORT功能的时候,因为类型定义成了VB,结果怎么都不能正常排序。因此呢,推荐大家以后建DATASET的时候直接用JCL语句建,这样建出来的都是一摸一样的,而且多快好省,就不会出现定义错误数据集的类型的事情了。下面贴一下我用来建数据集的JCL,自我感觉满高效的。建PDS:/ST143P JOB NOTIFY=ST143 /NEWPDS
7、 EXEC PGM=IEFBR14 /DD1 DD DSN=ST143.PTOC.LIB,DISP=(NEW,CATLG,DELETE),/ SPACE=(TRK,(1,1,1),UNIT=SYSDA,VOL=SER=USER02, / RECFM=FB,LRECL=80,BLKSIZE=800 建SDS:/ST143P JOB NOTIFY=ST143 /NEWF EXEC PGM=IEFBR14 /DD1 DD DSN=ST143.SD.DGIPNL,DISP=(NEW,CATLG,DELETE),SPACE=(TRK,(1,1),/ UNIT=SYSDA,VOL=SER=USER02,R
8、ECFM=FB,BLKSIZE=800,LRECL=80 作为和大家一起学习一起进步的大菜鸟,看问题的角度应该更加贴近大家吧,因此希望写的这些东西能够有用。 21:34 添加评论 阅读评论 (3) 固定链接 引用通告 (1) 记录它 固定链接添加评论如何进入SDFII里面画那种丑丑的界面周六看了美女学姐老师演示的那个CICS读取时间的程序以后,心里一直痒痒的,然后就开始研究怎么把这个程序实现来,满怀憧憬的进入9.6 SDFII以后,发现怎么都进不去编辑界面的那个panel edit,也就是说连个MAP都画不了,在IDENTIFY PANEL中一直提示No library assigned,没有
9、library怎么办?没有的话就自己建呗,于是在尝试了无数失败以后,最后还是在高老师的帮助下把这个该死的LIBRARY搞定拉。这里的关键是需要自己建一个名字为“用户ID”.叉叉叉(任意). DGIPNL的PDS文件,该文件用来存放建好的map建好该文件以后,就可以输入9.6进入SDFII,选择8:SPECIFY LIBRARIES,在ID为1的library里输入自己建的那个文件“用户ID”.叉叉叉(任意). DGIPNL的中段,也就是那个叉叉叉,系统会自动给叉叉叉加前缀和后缀的,千万别把整个文件名都输入了。然后进入1 PANEL EDITOR,选择Create new panel from
10、scratch for CICS/BM,在library中输入1(我们建的library的ID为1),type选择3279-3B,就能进入编辑MAP界面了,2是编辑MAP,7是显示当前MAP的预览。建好MAP以后,退回SDFII,用6来GENERATE。于是,我们终于可以继续下去了。本文献给和我一样被这个倒霉的问题困扰了半个星期的兄弟姐妹们。上了三天的Z/OS操作系统课(很汗哈,第二天才搞清楚了课程的全名),对于主机操作系统,ISPF,JCL和CICS终于搞清楚了大概. 上个学期因为很是慌乱的陪浙大的人学了一天半的CICS,那一天半再加上晚上陪高老师调程序调到12点半,关于大机的知识如同头脑风
11、暴一样的灌进了脑袋,CICS,JCL,ISPF,DB2统统钻进了脑袋,在完全不能理解之后(估计我如果这样跟可爱姐姐说,她会给我气死),找了脑袋的某些部位潜伏下来了. 大机课的千户万唤的终于上起来了,开场白却是那次教刘璐的大机基本操作,这些潜伏起来的不清楚的东西渐渐变的明朗. 介于大家很多人还是有点晕晕的,所以把我这几天大机课的心得跟大机分享一下. CICS,ISPF,DB2,JCL的区别: ISPF相当于一个操作系统,可以回想一下DOS,都是通过命令行再加上一些菜单界面构成的,可以在ISPF上实现对文件的增删改查,提交作业,观看作业,等等. DB2和CICS相当于大机上的两个大型软件,前者可以
12、类比为微机上的DB2,只不过麻烦了许多,后者相当于微机上的WSAD,作为一个中间件,可以实现对程序的编译,运行,查看结果等等. JCL则是作业控制语句,其实开始在大机上我们对文件的增删改查也是一种作业控制,打个比方,这种作业控制相当于自己通过用户UI来建数据库,建表等,而JCL语言则相当于自己写脚本来建表,JCL并不属于编程,不过是批量处理作业的方式而已,其大部分语句可以用ISFP的一堆操作来实现 JCL主要有三种语句,JOB语句给出的是作业的总的参数,都是些很宏观的东西,比如提交的人,用到的class(A到E理论上可以有36个,但是可爱姐姐貌似只开了5个),提交到的地方等 EXEC则是相对于
13、每个作业步而言的, 标明作业或过程中的每一作业步的开始,并告知系统如何执行该作业步 DD语句用于定义数据集并描述它的输入输出资源,一个作业步能有很多DD语句,但是DD语句不能重名,重名了的话只会执行第一个语句,比如 000001 /ST143W JOB ACCT#,PANSA,CLASS=B,MSGLEVEL=(1,1),MSGCLASS=A,000002 / NOTIFY=ST143 000003 /NEWF EXEC PGM=IEFBR14 000004 /SYSPRINT DD SYSOUT=* 000005 /DD1 DD DSN=ST143.PDS.PS1, 000006 / DIS
14、P=(NEW,CATLG,DELETE), 000007 / DSORG=PS,LRECL=80,BLKSIZE=800,RECFM=FB, 000008 / UNIT=SYSDA,VOL=SER=USER02, 000009 / SPACE=(TRK,(1,1,2) 000010 / 000011 /DD1 DD DSN=ST143.TEST.PS1,000012 / DISP=(OLD,DELETE) 第二个DD语句就执行不起来的 然后是关于PDS数据集和SDS数据集,和我猜的一样,在唐老师的口头上证明了,PDS数据集想当于文件夹,SDS文件则相当于文件,每个PDS数据集的MEMBER其实
15、和SDS文件是一回事,但是在建立PDS文件的时候我犯了一个很天真的错误,以至于认为要创建PDS文件只需要在文件的中端写成PDS就行了,第一次手工创建的时候因为巧合,居然创成功了,后来用JCL来实现的时候就傻b了,其实创建PDS和SDS的不同点只在于一处,就是数据空间的大小,前者非零,而且是定义了多大,里面的member就最多有*5个,后者一定为零,用JCL来表现如下: PDS: SPACE=(TRK,(1,1,2) SDS: SPACE=(TRK,(1,1) 下面是我经过很多次失败发现的单作业步多DD的用法010000 /ST143W JOB ACCT#,PANSA,CLASS=B,MSGLE
16、VEL=(1,1),MSGCLASS=A, 020000 / NOTIFY=ST143030000 /STEP1 EXEC PGM=IEFBR14040000 /SYSPRINT DD SYSOUT=* 040001 /DD1 DD DSN=ST143.PDS.PS2, 040002 / DISP=(NEW,CATLG,DELETE), 040003 / DSORG=PS,LRECL=80,BLKSIZE=800,RECFM=FB, 040004 / UNIT=SYSDA,VOL=SER=USER02, 040005 / SPACE=(TRK,(1,1,2) 040011 /DD2 DD DS
17、N=ST143.PDS.PS1, 040020 / DISP=(OLD,DELETE) 046000 /DD3 DD DSN=ST143.SDS.PAN1, 060100 / DISP=(,CATLG), 060200 / DSORG=PS,LRECL=80,BLKSIZE=800,RECFM=FB,060300 / UNIT=SYSDA.VOL=SER=USER02, 060400 / SPACE=(TRK,(1,1) 与前面单作业步不同的是第三行,要执行多个DD,作业步的名字貌似非写不可,但是名字可以乱写,写STEP1,STEPA都没有关系的,然后就是NEWF一定得去掉其他就没什么了. 0
18、60100行的DISP是一个缩写语句,应该是建立一个新的CATLG数据集,失败则DELETE掉. 下面来总结一下用ISPF来运行,调试,debug JCL语句的一般操作 当然,首先我们要建立一个数据集,可以是SDS文件,也可以是PDS文件的一个MEMBER, 方法是进3点2,allocate 一个新数据集,然后我们进3点4对这个新的空数据集写东西,将JCL语句写好以后,用SUBMIT提交, SUBMIT提交完毕,这时候会出现提交结果,返回代码为0或4表示成功,8或12代表出错失败,返回JCL ERROR就表示JCL语句失败。这时候我们可以去M。5里面去查,进入M。5 选择H,找到相应的作业,在
19、上面输入s,则可以查看运行结果,仔细看里面的信息可以发现在运行失败的行后面直接会有相应的失败信息,而且很容易懂的,搞清楚了失败在什么地方以后可以在H的页面下面输入SJ直接修改原文件,修改好以后重复上述操作就OK了。关于写JCL语句的时候有一些可以注意的:写JCL语句的时候可以用SAVE指令来进行保存(直接F3相当于保存后退出),如果不小心改动很大需要复原改动前的文件则是CANCEL或者按F12。下面列一下上课时看见大家碰到的很搞的一些小问题和解决方法: 1) 按下INSERT以后固然操作可以很方便很符合习惯,但是在左边的数字序号栏里面输入诸如C ,D ,I等操作就不行了,因此建议在必要时候用一
20、用INSERT以外,其他时候还是照常吧。 2) 在PDS添加MEMBER的命令是:E *(名) 3) 在序列栏变成红色的提示信息的时候要执行C ,D ,I等操作需要把红色部分全部驱除再输,这时候建议用命令,全部提示信息就清空了。 4) 分屏如果不是在最底部分的也许会出两个栏。这时候在下面的那栏输入东西肯定是有问题的啦。 5) 从本机导入东西进主机,文件不会放在,上,而是在上,要回去一下 6) 在退出是狂按,也许会进入询问对本次大机操作的一些系统生成的文件如何处理的页面,选择,删除它们,在跳出,否则会一直跳不出的。作为大机大菜鸟,目前也就只能弄出这么点东西了,里面肯定存在诸多啼笑皆非的错误,但是还是希望能对兄弟姐妹们有点帮助
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1