For an example of using relative addressing of data using z/OS macros, consider: PUT DCB,RECORD which can also be coded as: LARL R1,DCB LARL R0,RECORD PUT (1),(0) The macro does not need to somehow determine DCB and RECORD need to be addressed via LARL instead of LA because the programmer can simply do it.
Some of the VSAM macros allow field addresses normally specified as ACB=symbol or ACB=(register) to be specified as ACB=(*,adcon) where the "adcon" is a 4-byte field containing the address of the desired field. It can even be used with literals: ACB=(*,=A(symbol)). I can see extending this to tell the macro that 8-byte address constants should be used [ KEYWORD=(@,adcon) or KEYWORD=(LG,adcon) ] or that relative addressing should be used [ KEYWORD=(+,field) or KEYWORD=(LARL,field) ]. But rather than a change to the assembler, this would be a change to the macros and the requirement would be against each macro supplier. The current scheme works fine for me because I can always use the register notation where I need to. But there have been times I have wished more z/OS-supplied macros used the KEYWORD=(*,adcon) notation. David