In zOS2.4 is was 000A0000 000130E1, a bad restart new PSW.

In zOS2.5, zeroes.

This has caused issues with code that fetched from zero (where a previous
instruction did not verify that a non-null address being loaded) .

On Tue, 2 Jul 2024 21:54:24 +0000 "Schmitt, Michael" <[email protected]>
wrote:

:>The REXX code displays:
:>
:>0000000000000000
:>0000000000000000
:>
:>Which would explain why it isn't branching.
:>
:>We were on z/OS 2.4 before.
:>
:>-----Original Message-----
:>From: IBM Mainframe Discussion List <[email protected]> On Behalf Of 
Phil Smith III
:>Sent: Tuesday, July 2, 2024 4:46 PM
:>To: [email protected]
:>Subject: Re: What's at a comma?
:>
:>I don't think "breaks this code" is fair. More like "This code is now equally 
broken but no longer randomly 'works' quite as often".
:>
:>In any case, x'6B' is in the middle of:
:>FLCER018 DS    CL104     FLCE 18x: reserved
:>...which starts at location x'18'.
:>
:>On my 2.4 system, that's all zeroes. Location 0 sure isn't all zeroes; it is, 
of course, the IPL PSW.
:>
:>/* REXX */say c2x(storage(x2d(00), 8)); say c2x(storage(x2d(6b), 8))
:>displays both. I'd be astonished if those were ever the same. Unless there's 
some prefixing majick getting in here. What do you see when you run that Rexx 
snippet?
:>
:>And what z/OS version did you come from?
:>
:>-----Original Message-----
:>From: IBM Mainframe Discussion List <[email protected]> On Behalf Of 
Schmitt, Michael
:>Sent: Tuesday, July 2, 2024 5:10 PM
:>To: [email protected]
:>Subject: What's at a comma?
:>
:>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
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to [email protected] with the message: INFO IBM-MAIN
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to [email protected] with the message: INFO IBM-MAIN

--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

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

Reply via email to