全部博文(287)
分类: 其他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)后续处理的处理效果。