CICS-COBOL的异常系统

异常条件错误(Exceptional Condition ABEND)

这类错误发生在CICS命令(CICS EXEC)执行遇到问题但RESP没有在命令中指定的情况

异常条件错误码,下表中码的规律是AEI或AEY起始,最后一个字母是字母或数字,多数条件名称都比较直观。

Code Condition Code Condition Code Condition
AEIA ERROR AEIV LENGERR AEYL FUNCERR
AEID EOF AEIW QZERO AEYM UNEXPIN
AEIE EIDS AEIZ ITEMERR AEYN NOPASSBKRD
AEIG INBFMH AEI0 PGMIDERR AEYO NOPASSBKWR
AEIH NONVAL AEI1 TRANSIDERR AEYP SEQIDERR
AEII NOSTART AEI2 ENDDATA AEYQ SYSIDERR
AEIJ TERMIDERR AEI3 INVTSREQ AEYR ISINVREQ
AEIK DSIERR AEI8 TSIOERR AEYT ENVDEFERR
AEIL NOTFND AEI9 MAPFAIL AEYU IGREQCD
AEIM DUPREC AEYA INVERRTERM AEYV SESSERR
AEIN DUPKEY AEYB INVMPSZ AEYY NOTALLOC
AEIO INVREQ AEYC IGREQID AEYZ CBIDERR
AEIP IOERR AEYE INVLDC AEY0 INVEXITREQ
AEIQ NOSPACE AEYG JIDERR AEY1 INVPARTNSET
AEIR NOSPACE AEYH QIDERR AEY2 INVPARTN
AEIS NOTOPEN AEYJ DSSTAT AEY3 PARTNFAIL
AEIT ENDFILE AEYK SELNERR AEY7 NOTAUTH
AEIU ILLOGIC        

程序检查错误(Program Check ABEND)

这类错误发生在程序尝试执行一个不被硬件允许的操作。这类错误导致的异常总称ASRA异常码(ABEND CODE)。

程序检查错误(ASRA异常码)类型

Operation exception Specification exception Decimal-divide exception
Privileged exception Data exception Exponent overflow
Execute exception Fixed-point overflow Exponent underflow
Protection exception Fixed-point divide exception Signifcance exception
Addressing exception Decimal overflow Floating-point divide exception

其他CICS相关ABEND

Code Explanation
ABMB 使用绝对光标定位(Absolute Cursor Position)方式,但指定光标超越输出设备界限
ABM0 指定的映射表(map)不在映射集中(mapset)
AFCV 对一个文件的请求无法获得一个记录级的锁
AICA 一个任务执行的时间超出失控任务(runaway tasks)的时限
AKCS 一个任务因为超出对事务定义的死锁超时而终止
AKCT 一个任务因为等待终端输入超出对事务定义的终端读入等待超时而终止
AKC3 任务被杀死,通常因为主终端操作者(master terminal operator)执行CEMT TASK PURGE命令
APCT 程序无法找到或已经终止
ASRB 操作系统ABEND发生;CICS能够终止这个事务并自身继续运行
ATCH 事务终止,通常因为死锁情形

使用EDF调试程序

EDF是以名为CEDF的CICS事务启动,一般以但屏幕方式运行,即调试和程序界面交替出现,这也是最常见的调试模式。

对于远程调试,可以用形如:CEDF H400, ON,这样就在H400的远程终端上启动EDF进行调试。

也能调试任何一个已经在任一终端运行的事务,CEDX MNTB, ON,其中MNTB是事务名称。

EDF启动以后以EXEC CICS的命令为单元暂停执行,通常先显示将调用的命令和一些状态,然后是可能的显示,最后是命令的执行结果。在程序最后退出后对CONTINUE EDF作出选择可决定是否继续EDF调试模式。PF5可以进入WORKING STORAGE的内存16进制检视。


COBOL的共享工作区(COMMON WORK AREA

共享区在变量去定义好并加上寻址性(Addressing)后,就能被这个程序访问,并在程序间共享。一个详细说明见[1]

LINKAGE SECTION.
01  COMMON-WORK-AREA
    05  CWA-CURRENT-DATE    PIC X(8).
    05  CWA-COMPANY-NAME    PIC X(30).
... 其他代码
EXEC CICS      
    //CWA所有CICS程序共享;TWA事务内共享;TCTUA终端内共享
    ADDRESS {CWA|TWA|TCTUA}(ADDRESS OF COMMON-WORK-AREA)
    //此后COMMON-WORK-AREA中内容就映射到了共享区域了
END-EXEC.

【参考资料】
[1] http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=%2Fcom.ibm.cics.ts31.doc%2Fdfhp3%2Fdfhp36q.htm


posted @ 2011-11-21 22:01  quanben  阅读(3208)  评论(0编辑  收藏  举报