Rather than DC  S(256-work-area-len) to see if work_area_len <= 256 we 
sometimes use:

DC    0AL4(256-work_area_len+X'7FFFFFFF') Overflow if high 

As that covers a 31-bit value range. It also doesn't cost 2 bytes (though 
I expect that Binyamin really uses DC 0S(...) _/

I'm sure there are many variants of this.

An interesting one if you are looking for "make sure that expected = 
actual" that takes advantage that to the assembler 0/0 = 0 is
0AL4((expected-actual)/(expected-actual)+X'7FFFFFFF') Overflow if not 
equal 

What is surprising to me in this discussion is that I have seen no one 
mention that unless you have full control over the invocations, in all 
likelihood there will be cases that cannot be evaluated at macro time no 
matter what technique you choose; they have to be evaluated at run time.

And in some cases it may be unimportant to assign something to a "macro 
variable" if you can use an expression (whether it be an S-Con or an A-Con 
to do an evaluation that is not possible at macro time).

Peter Relson
z/OS Core Technology Design

Reply via email to