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