When moving a numeric field with a value of low values to another numeric field CA Intertest for CICS does not capture the abend (issue an ABP). Instead CICS abends and the CA Intertest for CICS debugging session ends. The following messages are writeen in the CICS output.
In the CICS log the client may see message
DFHAC2236 11/29/2016 13:08:14 A11IC4S6 Transaction BILL abend 4038 in program BILLDEMO term U024. Updates to local recoverable resources will be backed out.
In the CEEMSG log you see
U024BILL 20161129130807 IGZ0063S An invalid sign was detected in a numeric edited sending field in BILLDEMO on line number 335.
U024BILL 20161129130807 From compile unit BILLDEMO at entry point BILLDEMO at compile unit offset +00000D98 at entry offse
U024BILL 20161129130807 3868CDB8.
LE gets control for this type of abend and does not pass control to CA Intertest for CICS with the LE options the client has specified.
When LE is set to TERMTHDACT ==> TRACE
CA Intertest for CICS is not intercepting the abend.
So the resolution is to set TERMTHDACT ==> UADUMP.
If TERMTHDAC is set using CLER then the change is lost after a CICS recycle.You can use the JCL below to create a custom CEEOPT module that you can point to in the CICS regions of your choice.
CEEROPT RMODE ANY
CEEXOPT TRAP=((OFF,SPIE),OVR), X
TERMTHDACT=((UADUMP,CESE,96),OVR)
END
Sample JCL below to relink LE module CEEOPT.
//ASM EXEC PGM=ASMA90,
// PARM='XREF(FULL),LIST,NODECK,ALIGN,NORENT,OBJ,SYSPARM(MVSXA)'
//SYSLIB DD DSN=CEE.SCEEMAC,DISP=SHR
// DD DSN=SYS1.MACLIB,DISP=SHR
//SYSLIN DD DSN=&&LOADSET,SPACE=(400,(100,100,1)),UNIT=SYSDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=400),DISP=(,PASS)
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,1))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(5,1))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(5,1))
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD DUMMY
//SYSIN DD *
CEEROPT CSECT
CEEROPT AMODE ANY
CEEROPT RMODE ANY
CEEXOPT TRAP=((OFF,SPIE),OVR), X
TERMTHDACT=((UADUMP,CESE,96),OVR)
END
/*
//STEP2 EXEC PGM=IEWL,
// PARM='NCAL,RENT,LIST,XREF,LET,MAP,SIZE=(9999K,96K)'
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(5,5))
//SYSLMOD DD DSN=YOUR.LOAD,DISP=SHR
//SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSIN DD *
ENTRY CEEROPT
ORDER CEEROPT
NAME CEEROPT(R)
/*
//