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