Ref: Your note of Wed, 4 Oct 2017 09:17:55 -0400
Yep, don't you hate it when that happens?
Making ISSYM and similar functions work as users might expect is
on our list as a priority requirement, but it has already proved
to be more difficult than expected and we obviously don't want to
risk breaking anything.
When ISSYM was first implemented, someone decided to make these
functions use the same logic as for arithmetic valued functions,
but only return a value 0 or 1, allowing these functions to be
use in arithmetic or logical expressions. Although this initially
seemed to work, some more complex cases caused nasty errors, and
it was soon realised that the existing code was not safe to use
in this context without a major redesign of a huge and complex
area (conditional expression parsing and interpretation) so the
quick "fix" (see APARs PK15306 and PK27577) was to ban the use of
these functions in logical expressions and "correct" the
documentation to indicate that they should all be used in SETA
expressions only.
That was of course supposed to be a "temporary solution", but as
it's easy (but irritating) to work around, there has not yet been
a strong enough justification to invest time and effort in trying
to find a better solution, especially given the risk of breaking
something.
I personally feel that built-in functions in the conditional
assembly language need to work just the way that people would
expect, with built-in functions being allowed everywhere that a
term of that type would be allowed. So I can't say whether it is
ever going to be fixed but I can say that I want it fixed sooner
rather than later!
Jonathan Scott
HLASM team, IBM Hursley
Steve Smith writes:
> I just got this... again:
>
> 24902 &B setb ISSYM('&S')
> ASMA021E Illegal SET statement - ISSYM('&S')
>
> (&B is not previously declared or referred to).
>
> The HLASM Language Reference clearly states that all IS* functions
> return a B, yet they all seem to fail. What works is using SETA
> instead, which is very non-obvious (the deja vu from years ago told me
> to try SETA).
>
> Is there a logical explanation for this, or is it ever going to be fixed?
>
> --
> sas