It ain't gonna happen, of course, but what would be really nice would be if 
every macro had a consistent way of specifying @Peter's "four [or more?] 
choices." The problem is often not so much the lack of a particular macro 
operand choice, but rather (just as one example) that one does not remember 
whether for this particular macro (R2) means that the value is in R2 or the 
value is in a fullword pointed to by R2. One has to go the manual and parse the 
description carefully to find out.

The VSAM macros support a variety of address formats like (*,scon). I'm not 
terribly fond of them, but at least it was an attempt at a universal, flexible 
syntax.

I certainly appreciate the "special" (I think that's the right name) register 
syntax. It's not a big deal, but it offends me when I carefully code L 
R1,MYFOOVAL/SOMEMAC FOO=(1) and see that the macro has generated LR 1,1.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Steve Smith
Sent: Friday, September 1, 2017 9:28 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: IEAARR

I didn't really intend to make a big deal about this particular macro, but I 
did step in it by casting aspersions on it.  Sorry for that...
but I'll explain a bit more since you provided such a complete background.

I think the DYNSTORAGE keyword is redundant, and the macro could select from 
either the direct (RX-type) or indirect (A-type) keywords for each of the four 
major address keywords individually, depending on what's specified.  And 
really, whether I have "dynamic storage"
available has nothing to do with how the parms should be passed.

I don't have a problem with the *PTR keywords as options, although I see no 
need for them.  If the address is in storage, then I can easily L/LG or 
whatever myself and pass it in a register.  But most of the time, it's easier 
and more efficient to LA/LAY/LARL the addresses, if not already in a register.

Now that's a problem if I'm prevented from using R14 R15, R0, and R1; it's 
common not to have a whole bunch of free registers.  And it's more efficient to 
put the addresses where they need to be once, instead of copying them.  For 
example, I know that the ARR address is going to wind up in general register 1; 
I have the entire instruction set available to get it in there, without needing 
help from the macro.
Many existing macros work that way, and I've never seen a problem with it.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to