OK, here is a tailored example, with a small modification of the macro:
include \masm32\include\masm32rt.inc
ifndef @Defined
@Defined MACRO arg
ifdef arg
DefResult equ <arg>
EXITM <arg>
else
DefResult equ <0>
EXITM <0>
endif
ENDM
endif
.code
start:
_MSC_VER equ <1020>
if @Defined(_MSC_VER) ge 1020
print str$(DefResult), 9
print " = _MSC_VER, defined as equal or above 1020", 13, 10, 10
else
print str$(DefResult), 9
print " = _MSC_VER (UNDEFINED or less than 1020)", 13, 10, 10
endif
_MSC_VER equ <1000>
if @Defined(_MSC_VER) ge 1020
print str$(DefResult), 9
print " = _MSC_VER, defined as equal or above 1020", 13, 10, 10
else
print str$(DefResult), 9
print " = _MSC_VER (UNDEFINED or less than 1020)", 13, 10, 10
endif
if @Defined(_MSC_NOSUCHVER) ge 1020
print str$(DefResult), 9
print " = _MSC_NOSUCHVER, defined as equal or above 1020", 13, 10, 10
else
print str$(DefResult), 9
print " = _MSC_NOSUCHVER (UNDEFINED or less than 1020)", 13, 10, 10
endif
inkey " "
exit
end start
Output (identical for UAsm and ML 6.15):
1020 = _MSC_VER, defined as equal or above 1020
1000 = _MSC_VER (UNDEFINED or less than 1020)
0 = _MSC_NOSUCHVER (UNDEFINED or less than 1020)