在工作中,TSO可能会根据不同的工作性质来安装不同的模块,所以网上提到的有些操作,可能其他人在工作中并不能用。
JCL JOB:3.S打开SDSF面板;DA查看正在运行的JOB;ST查看当前所有JOB;在JOB对应的'NP'栏位输入'?',显示各STEP;在STEP对应的'NP'栏位输入'S',查看该作业步执行的内容。
如果是程序语法错误,一般都在编译结果的末尾,根据前面的“MESSAGE CODE”找到程序中相关语句,看具体原因;如果不是这种错误,则搜索“STEP”,查看那个STEP未执行,未执行原因一般列于此(如访问权限等)。
MAXCC = 0 或者 4 表示编译成功,可加载文件已经生成;很多原因可以导致MAXCC=4,譬如加了调试语句(enter tracenum)等。
转自:http://blog.csdn.net/luoke_li/archive/2007/08/16/1746776.aspx
该文作者常见的错误如下——
1:JCL ERROR,屏幕右上红色触目惊心的JCL ERROR,这个错误一般是JCL语句的格式错误,比如关键字写错了、数据集有重名等等
在报JCL ERROR以后,进入M.5 进入H,在最后一行(最后一行是最后执行的操作,如果任务没有阻塞的话,肯定是当前发生JCL ERROR的操作),在左边输入?(?号只是让系统把调试信息分门别类的显示出来)。进入第三个JESYSMSG(在左边输入s),错误提示信息一般都在里面啦,其实JCL ERROR的错误很好懂的,把里面的英文读一下就清楚的差不多了……
2:MAXCC=8或12,这里的错误一般是由蓝紫色的那些数据流里面的语句写错了或者根本是这些语句里面有逻辑错误引起的,在报这个错误以后,按照上述方法进入sdsf,但这次进入的是第三个以后的SYSPRINT等,错误信息一般在这个里面,比如MISSING PARENTHESIS什么的。
3:报ABENDED错误,如果报了这个错误的话,那么节哀吧,感觉这个错误不知道怎么调哈,乱七八糟的,而且原因总是很搞笑的原因,比如IEBCOPY写成了IEBCORY什么的。。
下面贴出来的是我总结的错误集锦,大家如果碰到相应的错误代码,可以按图索骥,应该能有点帮助的哈。。。。。
6 IEFC605I UNIDENTIFIED OPERATION FIELD
第六行漏了个逗号,因此就找不到操作区域了,看见了这个警告可以检查一下逗号
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)REQUESTED MODULE IEBCORY NOT FOUND
IEBCOPY写错了一个字母,出现挂起现象时问题一般很难解决,一般是很搞的问题,就比如,IEBCOPY写成了IEBCORY,多像哈。。
CONTROL STATEMENT ERROR
控制语句错误
3 IEFC618I OPERAND FIELD DOES NOT TERMINATE IN COMMA OR BLANK
前后行的衔接少了空格
在IEBCOMPARE中,如果两个比较的数据集相同则返回0,否则,则返回非0,我返回的都是12哈,所以比较的数据集不相同返回非零的话并没有错误。
5 IEFC006I POSITIONAL PARAMETERS MUST BE SPECIFIED BEFORE KEYWORD PARAME
DD语句中漏了“DD”字段
SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET
漏了DISP语句
关键字错误
IEB344I WARNING- INVALID STATEMENT LABEL
UTILITY的控制语句关键字不能顶格写
IEFC630I UNIDENTIFIED×××××
某些关键字或字段拼写错了,导致不认识
碰到过两次I/O ERROR,这个一般是语病错误,而不是语句的错误了,一次是在IEBPTPCH中数据集类型和里面的MEMBER指定错了,还有一次是指定数据集的RECFM类型出了问题。。
还有一个经常碰见的错误是提示关键字参数应该放在位置参数之前,这时候可以检查一下关键字参数里面有没有漏“=”号,或者“,”号
如果实在查不出什么地方错误的话,可以检查一下数据集的类型是不是定义错了,一般来说定义的是FB型的,有一次在做SORT功能的时候,因为类型定义成了VB,结果怎么都不能正常排序。
因此呢,推荐大家以后建DATASET的时候直接用JCL语句建,这样建出来的都是一摸一样的,而且多快好省,就不会出现定义错误数据集的类型的事情了。。。。
下面贴一下我用来建数据集的JCL:
建PDS:
//ST143P JOB NOTIFY=ST143
//NEWPDS 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,RECFM=FB,BLKSIZE=800,LRECL=80
转自:http://blog.csdn.net/miaoluzeng/archive/2010/02/24/5322132.aspx
JCL的调试经验是需要积累,但即使你有丰富的经验后,这也并不意味着你可以理所当然的犯错误!
1. 在对一个 pds 的 member 操作时,如果 disp=mod 那么系统会返回给你 ABEND 错误。
2. Job 名, exec 名, dd 名等,一般情况下只能是由 1 ~ 8 字符组成且只能包括数字、字母、 @# ¥。
3. 对于临时 DataSet 的几点总结
定义一个临时的 DATASET , disp 第一个参数上只能选择 MOD , NEW 否则就会报错,
第二个和第三个参数理论上可以任意搭配,但是一般书上会介绍 PASS 来保留该变量,但实际上除了 DELETE 意外的参数都可以来保留该变量
Step1 exec ….
DD1 DD DSN=&&TEMPA,DISP=(NEW,KEEP)
DD2 DD DSN=&&TEMPB,DISP=(MOD,PASS)
DD3 DD DSN=&&TEMPC,DISP=(,CATLG)
DD4 DD DSN=&&TEMPC,DISP=(,UNCATLG)
注:很多情况下系统会听过一些默认值,但这些默认值根据环境也有所不同,特别是 SMS 相关的内容,上述中也用到了默认值。 Ds 不存在时 DISP 第一个参数的默认值是‘ NEW ’。
通过 2 种方式引用
DSN=&TEMPA
DSN=*.STEP1.DD1
不论上面那种创建方式系统通过查看 JCLSYSMS 会发现系统做了下面几乎一样的事情:
1 . 创建一个临时的 DATASET ,如:
SYS07228.T083454.RA000.NAMETEST.TEMP.H01 PASSED
(其中 T 后面的是一个随机值)
2. 执行完结束的时候,通过下面的 JCLSYSMS 记录可以看到该临时的 DATASET 已经被删除:
SYS07228.T083454.RA000.NAMETEST.TEMP.H01 DELETED
也就是说如果作业步( STEP )中没有指明删除该临时变量,上述方法定义的临时 DATASET 会一直保留到 JOB 结束时删除。
转自:http://blog.sina.com.cn/s/blog_66961eee0100i6y9.html
1.当我们在写入文件或者读取文件记录时出现:ABEND: S4038,物理和逻辑文件的长度不一样。FILER用于格式控制和文件长度的匹配。
2.编译JCL时出现:ABENDED S013 U0000 CN,JCL语句有错误,仔细检查JCL代码。
3.编译JCL时出现:ABENDED S806 U0000 CN,S806 is the problem that system can't find the program you want to execute in the steplib. I think you made a mistake when specify the steplib.
4.编译JCL出现:ABENDED S0C7 U0000 CN,DATA EXCEPTION - DECIMAL DATA IS INCORRECT OR IMPROPERLY OVERLAPPED OR NOT VALIDLY INITIALIZED.