BITPREF EQU X'80000000' is a symbol known to the ASSEMBLER, but &BITPREF SETA
... is a macro variable only known to the macro processor; at assembly time, the
&BITPREF macro variable is already replaced by its value.
These are different times of evaluation.
I prefer the SETA variable in this context, because the other distinction is
done at macro time using AIF, too.
As another poster said, there is a distinction between LCLA and GBLA macro
variables (local and global ones). I prefer locals, if global is not needed as
in this case.
I hope that SETA variables are capable to hold the value X'80000000'; if not, I
would use SETC variables ... this would be possible too, simple text replacement
Another issue: very old assemblers need SETA variables defined before first use
by issuing LCLA &BITPREF.
I've done ASSEMBLER classes in the last 25 years in Middle
Europe; if you need support regarding ASSEMBLER, macro language and related
topics, please contact me offline. Sorry about that.