I view "baseless" as a poor choice to teach. Many macros require static data and assume that there is addressability to same. Many programs require static data and it can be challenging (or at least inconvenient) to establish addressability on demand. This all plays into why over time assembler programs that see continued development typically perform worse (difficult choices to make in register optimization) while HLL programs typically perform better (availing of better register optimization that comes into existence).
I think that you should teach use of "no codereg". But, with that, you should start with "addressability to static data". You then add in that, if conditions are right, you can do away with that if you have no need to address static data or if you are willing to establish it only when needed. This is a tiny delta. Yes, it's of course true that if you can achieve "baseless" you have an extra register to play with. You have to decide if the nuisance of establishing static data addressability only in the places where it happens to be needed is worth it. This approach is little different then teaching "coding" and then teaching the differences between reentrant and non-reentrant (which is a small thing). For both of these cases, you are giving the students the knowledge they need to make informed choices. Peter Relson z/OS Core Technology Design
