Yes, for what you are doing it is unpredictable. I believe that MVCOS with a zero source length will do what you want,
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר ________________________________________ From: IBM Mainframe Discussion List <[email protected]> on behalf of Erik Janssen <[email protected]> Sent: Friday, July 26, 2024 2:44 PM To: [email protected] Subject: Does MVCDK move 'per byte' like MVC? Hello All, I had this code in a user SVC: MVI DATA,X'40' BLANK OUT DATA MVC DATA+1(254),DATA As far as I'm aware this is a well known principle to clear a data area, it is explained in the POP under MVC that you can propagate a byte this way. Since the DATA area is provided by the caller of the user SVC I implemented this code to do the same with MVCDK to make sure the protection key of the storage area matches the callers key (in R1). The 'spatie' field is defined as 'SPATIE DC CL1' ' LHI R0,L'SPATIE-1 MVCDK DATA,SPATIE BLANK OUT DATA LHI R0,L'DATA-2 MOVE 254 CHARS MVCDK DATA+1,DATA I had assumed that MVCDK would also propagate a byte this way and tested this on a ZD&T machine and that seemed to work ok. Now that we have this code on our test lpar on a z16 machine I see that it will shift the full contents of the DATA field one position to the right. This causes residual data from the previous call to appear. The POP says under MVCDK: Each of the operands is processed left to right. When the operands overlap destructively in real storage, the results in the first-operand location are unpredictable. Except for this unpredictability in the case of destructive overlap, the storage-operandconsistency rules are the same as for the MOVE (MVC) instruction Did I encounter that unpredictability the POP is talking about? Is it possible that on a ZD&T MVCDK works byte for byte like MVC, while on real hardware MVCDK works more like a MVCL moving all the bytes at once? And, if MVCDK does not work a byte at a time, what would be a correct solution for this? Copy a byte at a time with MVCDK in a loop, like the programming example in the POP with the MVCSK instruction? Kind regards, Erik Janssen. ---------------------------------------------------------------------- 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
