Some more news, but unfortunately not good news.

The conviction I wrote in the second paragraph below does no longer hold true. 
IBM LE support told us that there are cases where LE's condition handling may 
lead to LE cancelling the ESTAE before issueing an ABEND. Since Smart/Restart 
registered its ESTAE after LE, it will be S/R's ESTAE that will be cancelled in 
those cases inadvertantly. LE manuals document that "you should not make use of 
MVS ESTAE and ESPIE.....since this might interfere with LE's condition 
handling".
So running S/R with ESPIE(OFF) is also not a fool proof solution. In fact, 
there currently is none.


--
Peter Hunkeler



Remember, I was posting a couple of times about the 00A program checks that 
started to cause us trouble late last year? For those interested here comes 
some insight I gained so far.




- We run Smart/Restart with the default options ESTAE(ON) and ESPIE(ON). This 
made us belive that the 00A program checks will be intercepted by S/R's ESPIE 
exit. Therefore we thought that exit needs to properly handle 00A's from Cobol, 
namely by retrying. After long, it turned out that S/R is actually RESETting 
the ESPIE when ESPIE(ON) is specified, and not registering its own exit. This 
in fact *cancelles* LE's ESPIE exit that was established by LE because we run 
with LE option TRAP(ON,SPIE). Umhh...




- We are currently convinced that we should run S/R with ESPIE(OFF); we cannot 
imagine why on earth S/R would need an ESPIE exit at all. But we're still in 
discussion if there is any drawback of this. With S/R ESPIE(OFF), LE's ESPIE 
exit will gain control for program checks and will properly handle the Cobol 
00As.






- Why are we seenig those 00As more often recently? It seems to turn out that 
Cobol V5.2 is generating a completely different instruction stream for certain 
MOVE instructions that involve moving numbers, especially fractions parts. 
Cobol up to V5.1 was generating instruciton streams that could not raise a 
decimal overflow; Cobol V5.2 is. It is making use of the SRP (shift and rund 
decimal) instruction, and this is where our applications are generating the 
00As.





- My modification of the IGZCFCC and IGZXFCA1 Cobol runtime module succeded 
(remember the "binder" questions I had). I was able to see that running job 
using the IBM debugger, the decimal overflow mask was not get turned on as long 
as only Cobol V4.2 code was running. But as soon as some Cobol V5.2 code was 
being called, the mask was set. However, strangely enough, the problem did not 
occur if the same Cobol V5.2 code was being called when *not* running under the 
debugger.


Also, I was able to trace a job where Cobol V4.2 and V5.2 modules were heavily 
being used intermixed. To my astonishment, the decimal overflow mask was seen 
to be turne ON after about 2000 CALLs to both Cobol V4.2 and V5.2 modules. 
Still investigating, but with lower priority, since I'm convinced the solution 
is runinng S/R with ESPIE(OFF), as explained above.



Not finished yet, but at least big steps forward.



--
Peter Hunkeler

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to