Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1298254
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 其他UNIX

2013-03-19 10:49:55


在OS400下,有一套OS400对出错信息处理机制。
 
在CLP中,交给OS400系统执行的命令,OS400提供MONMSG指令对可能出现的出错信息(CPFXXXX)代码进行监控。对每一个命令的出错信息代码,可以查询CL reference redbook手册。CLP根据错误代码再进行相应的处理,即C语言中的exit(x),x不为0。

CLP程序中,通常采用MONMSG(CPF0000)对一个命令进行监控。这里的CPF0000是一个错误信息扑捉器,或一个错误信息陷阱。对一个命令执行过程中,比如命令处理所输入的运行参数有错误,或文件不存在等错误信息,CPF信息都是一个具体的非0值。
 
在RPGLE中,有两种做法对程序中出现的可能的非语法逻辑错误,比如除法中分母为0、数字上或下溢出等等,进行出错信息监控。
 
第一种方法在可能出错的语句范围设置mintor、on error和endmon。其中,minter和on error之间是程序代码和字段,程序出错时,就执行on error到endmon之间的出错处理程序代码。
 
第二种方法,用程序中定义错误处理例程,程序执行过程中,若出现非语法逻辑错误时,程序自动转到错误处理例程中执行处理。最普遍做法,就是在错误处理例程中用DUMP命令把出错信息发送到假脱机文件中,以方便查看。RPGLE中出错信息处理例程有两个形式:a)最常用的的*PSSR,即一个子程序(subroutine)来处理;b)程序员可以在LSD中规定字段PROC_NAME内容为*PROC后要执行错误处理例程的子程序名,用来取代*PSSR中的错误处理代码。
 
RPGLE中出错处理手段都可以达到C语言中的exit(x)后续处理的处理效果。

阅读(2284) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~