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

Reply via email to