Is UPRX a full 256 bytes?
________________________________________
From: IBM Mainframe Discussion List <[email protected]> on behalf of
Robin Atwood <[email protected]>
Sent: Thursday, April 27, 2023 8:58 AM
To: [email protected]
Subject: Inexplicable 0C4!
I have had two of these during the course of two months, so it's getting
serious!
The abend happens in my implementation of a C strupr() function when the TRE
instruction is executed:
L R3,=X'7FFFFFFF' string maximum length
XR R0,R0 zero terminator byte
LA R1,UPRX translate table
TST TRE R2,R1 fold string
BC 1,TST resume translation
R0 R1 R2 R3
PSW
00000000 0009C5EC 1AA748F8 7FFFFFFF 078D04008009BD14
The memory pointed to by R1 and R2 is addressable and in Sp0, key 8, so bog
standard. I know R3
looks dodgy, but that is because the string to be upper-cased must be zero
byte terminated.
R2 points at X'D4C6C9E3E2E3404000', so the format is correct. Given all
this, why has the instruction caused an
abend? The code lives in a server that is running all day, every day. I
wondered if the target data had been
released by another task, but VSMDATA showed a DQE for the data's page and
no FQE for the data itself,
so the data should still be available (as I understand it). Notice R3 hasn't
changed, so the abend happened
on the very first byte.
Any suggestions gratefully received!
Robin
----------------------------------------------------------------------
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