Today I learned that z/OS 2.5 upgrade breaks this code:

         CLC   0(R7),ECOMMA        IS THIS A COMMA
         BNE   PD07240             IF NOT, BRANCH
          :
ECOMMA   EQU   X'6B'               COMMA (,)

Which has worked since 1985.

Yes, I know that this is incorrect code. It worked because the input never has 
a comma there. The "correct" result is to branch. Now it doesn't.


(spoilers ahead if you want to figure out what's wrong for yourself...)


So what's wrong is they meant to code CLI. But they didn't, so this assembles 
as if it were:

         CLC   0(7,0),107(0)

But 0 isn't a base register, so it is comparing the 7 bytes at address x'0' to 
what's at address x'6B'. Right?

My question is: what is at those two addresses? Whatever it is, it must have 
never been the same before, but now it is always the same.

(Unless there's some z/OS 2.5 thing where storage reads at low core behave 
differently)




----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to