>>Also, IEAARR is an 1887-line monstrosity that looks unmaintainable to 
me... but that's not my problem.
>
>Macro code looks "generated" to me - I doubt whether it is maintained in 
this specific source form.

Rob's "doubt" is confirmed. It is very easily maintainable.  Many macros 
are much much larger. 

>First, DYNSTORAGE=NOTAVAIL | AVAIL
>
>Two complete mutually-exclusive sets of keywords; and the ones used have 
to match the above (ridiculous) keyword.  No mixing of storage and 
register >operands is allowed.  All keywords are either required or 
forbidden.

I'm sorry that you don't like my choice of "DYNSTORAGE" or NOTAVAIL/AVAIL. 
 The point is that if you have dynamic storage available you have the 
flexibility to do things like putting operands into storage and having the 
expansion "L" the operand.  If you do not have dynamic storage available, 
you must live with "LA" (for which you need addressability to the thing 
for which the address is being taken).
Surely you are aware that macro syntax historically allows only two 
flavors -- specification surrounded by parens indicating "something is in 
a register" and specification not surrounded by parens. That does not give 
you the four choices that would be nicest-- get the value from the reg, 
get the value located by the address in the reg, use "LA" on the operand, 
use "L" (or perhaps "LG") on the operand. Very few macros give you all 4 
choices. In fact the original IEAARR only gave you the 2nd and 4th 
choices.

Why would anyone care when there are a lot of keywords? You use what 
applies to your need. The keywords (e.g., ARR vs ARRPTR) differ in what 
you can specify which is what provides the flexibility that most macros do 
not provide.  I would say that there *is* the capability of "mixing of 
storage and register operands" but I can see that there is not the 
capability of "give me all 4 choices for every keyword" on any given 
invocation. I don't recall why I went the route I did. I presume it was 
because I was trying to solve a need that I had, since no one had ever 
asked for that additional functionality, and it met my need and I found it 
easier to do it this way than the other. If there was a justified 
requirement for providing the flexibility of "all 4 for every" we could 
consider it. I'd imagine that it would be hard to justify (but not overly 
hard to implement).

>But, it specifically prevents the user from specifying register 1 (for 
example) with its operand. 
As is the case for 99% of macro keyword operands in z/OS. 

>(I can trick it by using 'ARR=R1', so it just generates LR 1,R1).
Sure you can "trick it". There are myriad ways to trick things across the 
set of interfaces that z/OS provides if you want your clients to have the 
risk that results from your not obeying the requirements of an interface. 
The fact that it works today does not mean that it is supported or will 
necessarily work tomorrow (although I doubt very much that this particular 
macro would change in a way that would make your "trick" stop working).

Peter Relson
z/OS Core Technology Design


----------------------------------------------------------------------
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