A refreshable program cannot modify itself (or if it can, it would be a very interesting and perhaps self-limiting testcase). A reentrant program can, if written carefully, modify itself, although it is rarely a good idea. LPA modules are generally, in effect, refreshable.
As to "why", think about it. Page protection did not even exist at the time RENT and REFR were defined. And over those 20-30 years, many many programs were incorrectly bound with "RENT,REFR" when in fact they were RENT but not REFR. But they worked fine given the way the system processed. The combination was used indiscriminately, and often thought of as a pair. Making it the default would be horribly incompatible. Thus we made it an option and encouraged IBM code and ISV code to fix their binder attributes so that REFR could be used in this way, with the new processing enabled by use of REFRPROT. And, yes, it is a performance consideration. Not a huge one, but one nevertheless. Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
