The assembler has no problem with allowing relative branches outside a 
control section. Whether it works or not is a question for your operating 
system's binder and loader.
The z/OS binder and loader were enhanced many releases ago to accommodate 
this.

For example,
   EXTRN OTHER
   BRASL 14,OTHER

Or perhaps
   EXTRN OTHER
   LARL  15,OTHER
   BASR  14,15

This is not quite the same as allowing a relative branch to "low storage" 
but if the module in question is starting at 0, then isn't such a branch 
actually a branch within the same module (not necessarily the same CSECT)? 
In any case, you can't in general relative-branch to something in a DSECT 
that has a USING (unless perhaps that USING is on a label not via a 
register). 

A relative branch to a fixed location from a place that is not fixed (as 
would be the case for a module that is loaded "normally") is a 
contradiction in terms. 

Peter Relson
z/OS Core Technology Design

Reply via email to