One point about "phasing in" BASSM: it does not work in general. Sure, if 
you "phase in" by changing all the callers at the same time, that works.

That is because the target program, if it wants to protect some potential 
calling possibilities needs to capture the current AMODE so that the value 
saved on BAKR and then used on PR returns properly.

A typical protocol is this:
   BSM   14,0
   BAKR  14,0
...
   PR

This works if the call is via BASR/BALR/BRAS/BRASL. This does not work if 
call is via BASSM.

If your routine currently supports entry in AMODE 64 via BASR and uses 
BAKR/PR, you probably have something like this (because otherwise AMODE 64 
will not return properly).

The conclusion: you need to know whether the call is via BASSM (or BSM) or 
not. You can code for either. You cannot code for both (or perhaps you 
can, but it is not trivial).

Peter Relson
z/OS Core Technology Design

Reply via email to