JCL与COBOL编程常遇到的错误
如果大家看了上面的介绍已经明白什么叫C OBOL了,那么JCL呢?范仲淹的名句
我从百度百科里查到它的定义:
JCL 又称作业控制语言。是用于描述MV S,OS/390和VSE操作系统上描述作业的语言。描述操作系统对全部作业分配计算机的运行时间和资源。作业是分步骤进行的,在编制程序时需要加入特殊语句使作业能够分步进行。作业是运行在后台的,不需要用户交互,用户的请求初始化作业。通常前台作业的优先级高于后台作业。
IBM曾经把一系列的JCL语句比作餐馆中的菜单。所有的菜对应作业,在厨房厨师将客户的需要分解为不同的菜,这可以看作是作业中的步骤。当所有作业的步骤完成时,饭也就是好了。
JCL语句主要指定必须访问的输入数据集(文件),输入文件被设置为创建或更新状态,JCL语言还需要指定运行所需要的资源。一个作业的JC L语句也作为数据集存储,并由用户开始它的执行。
言归正传,让我们重新进入m ainfra me吧
最有价值的经验就是------错误!开始做主机开发,最大的困惑就是遇到错误时,要花过偿的时间来调试,浪费了宝贵的时间,这是我做主机开发三周来,一些错误调试的心得,希望对初学都有所帮肋!
JCL的几种错误:
1:JCL ERROR,屏幕右上红色触目惊心的JC L ERROR,这个错误一般是J CL语句的语法,格式错误,如关键字错误,参数位置错误等
2:MAXCC=8或12,这里的错误一般是由蓝紫色的那些数据流里面的语句写错了或者根本是这些语句里面有逻辑错误引起的,在报这个错误以后,按照上述方法进入sdsf,但这次进入的是第三个以后的S YSPRI NT等,错误信息一般在这个里面,比如MISSI NG PARENTH ESIS什么的。
3:报ABENDE D错误,如果报了这个错误的话,错误的原因可能有多种,具体需要进入S D SF中查看,这大多是跟你写的程序逻辑错误有关,如程序里文件定义的记录长度和JCL中文件记录长度不一致;程序找不到输入,输出文件等IEFC605I UNIDENT IFIEDOPERATI ON FIELD
第六行漏了个逗号,因此就找不到操作区域了,看见了这个警告可以检查一下逗号 2 IEFC605I UNIDENT IFIEDOPERATI ON FIELD
3 IEFC019I MISPLAC ED DD STATEME NT
第二行漏了PG M关键字,连“PGM”字段都漏了,肯定DD语句位置错误啦。IGD17001I DUPLICA TE DATA SET NAME ON VOLUMEUSER02
数据集有重名,意思就是要创建的数据集已经存在,这个错误常常是因为
结婚的对联
自己的疏忽导致的。。。
01.49.36 JOB09455 \HASP165ST143PENDED AT N1 - ABENDED S806 U0000 CN(INTERNA L)
冯
REQUEST ED MODULEIEBCORY NOT FOUND
IEBCOPY写错了一个字母,出现挂起现象时问题一般很难解决,一般是很搞的问题,就比如,IEBCOPY写成了IEB CORY,多像哈。。
CONTROL STATEME NT ERROR
控制语句错误安吉哪里好玩
5 IEFC006I POSITIO NAL PARAMET ERS MUST BE SPECIFI ED BEFOREKEYWOR D PARAME
DD语句中漏了“DD”字段
SPACE NOT SPECIFI ED FOR ALLOCAT ION OF DATA SET
漏了DISP语句
关键字错误
IEB344I WARNING- INVALID STATEME NT LABEL
UTILITY的控制语句关键字不能顶格写
IEFC630I UNIDENT IFIED×××××
某些关键字或字段拼写错了,导致不认识。。
碰到过两次I/O ERROR,这个一般是语病错误,而不是语句的错误了,一次是在IEB PTPCH中数据集类型和里面的MEM BER指定错了,还有一次是指定数据集的RE CFM类型出了问题。。
还有一个经常碰见的错误是提示关键字参数应该放在位置参数之前,这
时候可以检查一下关键字参数里面有没有漏“=”号,或者“,”号如果实在查不出什么地方错误的话,可以检查一下数据集的类型是不是
定义错了,一般来说定义的是FB型的,有一次在做SO RT功能的时候,因为类型定义成了VB,结果怎么都不能正常排序。。。
因此呢,推荐大家以后建D ATASE T的时候直接用JCL语句建,这样建出来的都是一摸一样的,而且多快好省,就不会出现定义错误数据集的类型的事
情了。。。。
下面贴一下我用来建输入,输出文件
顺序文件:
//RUNJOBJOB ,,CLASS=A,MSGCLAS S=X,MSGLEVE L=(1,1),
我要搞b
// NOTIFY=&SYSUID
霸气独一无二的微信名
做泥最简单的方法//DEFINEEXEC PGM=IEFBR14愉快的寒假
//DEFFILE DD DSN=FNSAP13.ETQD304,DISP=(,CATLG),
// DCB=(RECFM=FB,LRECL=68,DSORG=PS),
// VOL=SER=BDMTS1,SPACE=(CYL,1)