Obvious application-level solution: Make sure your program occupies whole pages by adding adjusted DC XLnnnn at the end to get to a 4096-byte boundary.
-----Original Message----- From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Charles Mills Sent: Monday, February 8, 2021 11:57 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: LINK vs LOAD/CALL. Storage protection is page by page. So ... design tradeoff decision: - Leave any part of the program that occupies a partial page unprotected. - "Waste" the remainder of the partially-occupied page. IBM obviously chose the former. Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Seymour J Metz Sent: Monday, February 8, 2021 8:51 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: LINK vs LOAD/CALL. > Therefore, any parts of the program that are on partial pages are not page-protected. Ouch! Why? -- Shmuel (Seymour J.) Metz https://urldefense.com/v3/__http://mason.gmu.edu/*smetz3__;fg!!Ebr-cpPeAnfNniQ8HSAI-g_K5b7VKg!apqdxr2kgy4OgUVhbDDDdXnsbRfElo2axM6Vn6NTRjbtS69vfcQNi7VAwPYOgk9z7iWnlA$ ________________________________________ From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Peter Relson [rel...@us.ibm.com] Sent: Monday, February 8, 2021 9:13 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: LINK vs LOAD/CALL. <snip> The effect of REFRPROT has long been enforced for modules loaded from APF libraries. </snip> Only for non-key-0 programs. Putting code into key 0 storage is not all that REFRPROT does. <snip> Does REFRPROT have a "warn" setting? </snip> No. What would it warn about? That you loaded a refreshable program? You can't know it won't work until it doesn't work. It is easy enough to scan your libraries for things that are marked refreshable. <snip> ... one of our interface routines to Adabas has done this for more than 40 years. </snip> But now there is an intrinsic penalty from mixing I-cache and D-cache but presumably not enough to merit changing. <snip> Any LMOD marked "RF" (REFR) will abend S0C4-4 if it modifies itself during execution. </snip> If not key 0, yes. If key 0, only if executing within one of the full pages of the load module. If the module storage occupies a partial page, that partial page is not protected: "Use the REFRPROT statement type to specify that REFR programs are protected from modification by placing them in key 0, non-fetch protected storage, and page protecting the full pages. Therefore, any parts of the program that are on partial pages are not page-protected." Peter Relson z/OS Core Technology Design -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN