For non-executable, RMODE is what you want, not AMODE. AMODE applies only
to code running in the module that identifies the AMODE. And of course
there is no such code in a non-executable module. So RMODE 64 would be the
"right thing".
But the binder does not support RMODE 64 at this point. It will some day.
I get
IEW2618I 4B40 RMODE 64 ESD ATTRIBUTES HAVE BEEN CHANGED TO RMODE ANY.
I don't know the reason that the assembler (and binder) have historically
chosen not to flag "short" adcon's.
This is demonstrable with a module that is "RMODE 31" but has DC
AL3(theMod).
TEST CSECT
TEST RMODE 31
DC AL3(TEST)
END
Certainly an option could be added to do this sort of validation. A
customer requirement for such a thing would always be helpful (perhaps
this is one already, I have no idea).
And I will re-iterate: LOAD with ADDR (or ADDR64) ignores the RMODE and
assumes the user knows what they're doing.
That is where my caution came from. The module would be RMODE 31 (so a
4-byte relocatable adcon is nominally fine) but would not survive if
placed above 2G it relied upon that adcon.
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