We confirm that the value stored in TASKNUM is not in a valid arithmetic format by displaying its current value. That is, its value prior to the execution of the AP instruction that triggered the ASRA.
CA InterTest for CICS Release 9.1.00 ‑ PROTSYM FILE SOURCE LISTING BREAKPOINT COMMAND ===> Program= ASMDEMO Option # Stmt # Displacement= Margin= 01 Search= ‑‑‑‑‑‑‑‑‑+‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT _ 00016A 4050 D1B0 001B0 1355 STH R5,MSGLEN k 00016E FA20 D189 4AC0 00189 02AC0 ==> AP TASKNUM,=P'1' ==> ==> ASRA ABEND (0C7) detected and prevented. Caused by invalid decimal ==> arithmetic data format. ==> ==> Press PF1 for a detailed description. ==> _ 000174 F920 D189 4AC1 00189 02AC1 1357 CP TASKNUM,=P'2' _ 00017A 4720 2300 00300 1358 BH ENDMSG _ 00017E F920 D189 4AC0 00189 02AC0 1359 CP TASKNUM,=P'1' _ 000184 4780 2256 00256 1360 BE SENDSCR4 _ 000188 47F0 2300 00300 1361 B ENDMSG _ 00018C 1363 RETURN DS 0H 1364 * EXEC CICS SEND FROM(OUTMSG 1365 DFHECALL =X'04043000080000 00018C 4110 D068 00068 ),(FB_2,OUTLEN) 1381 * EXEC CICS SEND FROM(SCREE
The application displays the value of TASKNUM in a specially formatted Keep window, as shown in the following screen.
The application determines the base register from the generated object code of the AP instruction. In this case, it is register 13 (D).
CA InterTest for CICS Release 9.1.00 - PROTSYM FILE ABEND DETECTED BREAKPOINT COMMAND ===> Program= ASMDEMO Option # Stmt # Displacement= Margin= 01 Search= ------------------------------------------------------------------------------- _____ R13.TASKNUM | ?00000. ---------++-------------------------------------------------------------------- Loc Object Code Addr1 Addr2 Stmt Source Statement _ 000192 4050 D1B0 001B0 1456 STH R5,MSGLEN A 000196 FA20 D189 4AE8 00189 02AE8 ==> AP TASKNUM,=P'1' _ 00019C F920 D189 4AE9 00189 02AE9 1458 CP TASKNUM,=P'2' _ 0001A2 4720 2328 00328 1459 BH ENDMSG _ 0001A6 F920 D189 4AE8 00189 02AE8 1460 CP TASKNUM,=P'1' _ 0001AC 4780 227E 0027E 1461 BE SENDSCR4 _ 0001B0 47F0 2328 00328 1462 B ENDMSG _ 0001B4 1464 RETURN DS 0H 1465 * EXEC CICS SEND FROM(OUTMSG 1466 DFHECALL =X'04043000080000 0001B4 4110 D068 00068 ),(FB_2,OUTLEN) 1482 * EXEC CICS SEND FROM(SCREEN 1483 DFHECALL =X'04043000080000 0001DA 4110 D068 00068 2),(FB_2,MSGLEN) 1499 * EXEC CICS RETURN 1500 * TRANSID(EIBTRNID)
Any number of variables can be saved in a Keep window. However, only six variables display at a time. PF keys 19 and 20 are provided to scroll forward and backward through the Keep window when it contains more than six variables. This feature lets you see how the variable values change as your program executes. The Keep window remains until you remove all variables from it.
To display the value of a variable without keeping it in a Keep window, type d (display) rather than k (keep). This displays the value of the variable and all variables below it in the same Assembler DSECT. For more information, see Obtaining a Structured Storage Display.
Now take a look at the contents of TASKNUM. It does not contain a valid packed decimal value, we can see this because there is a "?" in the left most position of the field. Assembler does not allow you to add a value to a field without initializing it.
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|