We recently applied patches up through September 2020 to our Enterprise COBOL 
V6.2 compiler.  Prior to this we had patches through September 2019.  This 
appears to have changed how some code is generate, even though the compiler 
options have not changed.

Take the following example:

 01  ipt.
     05  as-char               pic xx.
         88  as-char-10        value '10'.
     05  as-nums               redefines as-char
                               pic 99.
         88  as-num-10         value 10.

Code checking the as-num-10 condition is generating the following code with the 
"current" patch level:

COBOL V6.2 NUMPROC(NOPFD) ZONEDATA(MIG)

000021:  002200         if as-num-10
   0001C8  F211 D138 9018     000021            PACK    312(2,R13),24(2,R9)   # 
                         AS-NUMS
   0001CE  F911 D138 31EC     000021            CP      312(2,R13),492(2,R3)  # 
                          +492
   0001D4  A764 0016          000021            JNE     L0006

This causes a situation where if "as-nums" is not a valid zoned-decimal field 
it's causing a data exception (S0C7) on the CP instruction.
While acknowledging that the code is "bad", or the data is bad (depending on 
how you look at it), we're still wondering what changed with the recent patches.

While I can't (easily) recover the compiler to the previous level, I did test 
with our COBOL V5.2 compiler, which is out of service and did not receive any 
recent patches.  The same code compiles to this:

COBOL V5.2 NUMPROC(NOPFD) ZONEDATA(MIG)

000021:  002200         if as-num-10
   00019E  E300 8028 0095     000021            LLH     R0,40(,R8)            # 
 AS-NUMS
   0001A4  C00D FFFF F0F0     000021            OILF    R0,X'FFFFF0F0'
   0001AA  A70E F1F0          000021            CHI     R0,0xf1f0
   0001AE  A764 000C          000021            JNE     L0007

My guess is that prior to the patches COBOL V6.2 would have done something 
similar.  As you can see, it's using a CHI instead of a CP, and thus no S0C7.
It seems like V6.2 should not have changed its behavior in this regard.
Thoughts?  Is this a new "bug" in COBOL V6.2?

Frank

----------------------------------------------------------------------
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