On Jan 1, 2012, at 10:15, Peter Relson wrote:
>> Does IBM guarantee that any macros it distributes will work
>> correctly regardless of customers' setting of these options,
> no. If a macro accepts KEY=PETER then it is your responsibility to get
> PETER to the macro. That could perhaps be by typing KEY=PETER, or by
> typing KEY=peter with COMPAT(MACROCASE) in effect, but not by typing
> KEY=peter with COMPAT(NOMACROCASE) in effect. So maybe the answer is "yes"
> rather than "no" -- the macro works correctly, but it's up to the user to
> get the operand correct.
>
I was thinking of the case where an IBM macro calls another
IBM macro. In this instance, the user has no control over
the case of the operand. I can imagine that macro A could
call macro B passing KEY=peter and B tests for AIF ('&KEY' eq 'peter' )
which will give the expected result only if COMPAT(NOMACROCASE)
is in effect, while macro X could call macro Y with KEY=peter
and Y tests with AIF( '&KEY' EQ 'PETER' ), which gives the
expected result only if COMPAT(MACROCASE) is in effect. So
no customer program could use all four macros successfuly
with any setting of MACROCASE. Granted I know of no such
situation in any IBM-supplied macros, but I believe you're
saying there's no guarantee that it will never occur in the
future.
>> some people suspect that IBM
>> itself tests largely the PL/S branch and leaves testing of
>> the assembler branch to customers.
> That suspicion has merit given the too large number of errors in our
> assembler macros but is incorrect.
>
I'm thinking of a recent case where IBM delivered a macro
with a syntax error so severe it could _never_ be assembled
successfully regardless of arguments or environmental
settings. It may be IBM's process to test all macros. If
so this leaked through via a process violation.
>> The misguided attempt to add case-insensitivity causes chaos
>> and instability.
> I think of pre-HLASM not as being "case sensitive" but as being "lower
> case intolerant". I think of "case sensitive" really applying to "I treat
> the characters Ab as different than aB". I believe that the assembler has
> this sort of case sensitivity only if aB is within quotes. In other
> situations it treats Ab the same as ab, aB, and AB.
>
No. Assembler H tolerated lower case in macro arguments, and treated
such arguments as-is. HLASM converts such arguments to upper case
given the misnamed COMPAT(MACROCASE). Compatibility with the Assembler
H behavior requires (the default) COMPAT(NOMACROCASE).
-- gil