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.
enjoy every minute of an appless, googless and oracless life