Macro: DEFINE
#IFSAME !2 FOR
#IF (!Zs=0) // if not enum
#IFDEF !1 // ignore redefinition of symbols (only if not enum)
#ELSE
#IFSAME !1 $0 // ignore redefinition if already defined as FALSE
#ELSE
#IFSAME !1 $1 // ignore redefinition if already defined as TRUE
#ELSE
#CHECK !4 .
#REPLACE !1 !3
#ENDIF
#ENDIF
#ENDIF
#ELSE // else enum
#IFTYPE !3 "I"
#IFCLASS !3 "C"
#CHECK !4 .
#REPLACE !1 !3
#SET ZT$ (!3+1)
#ELSE
#ERROR 1001 ENUMERATION VALUE MUST BE A CONSTANT
#ENDIF
#ELSE
#ERROR 1001 ENUMERATION VALUE MUST BE A CONSTANT
#ENDIF
#ENDIF
#ELSE // not "FOR"
#IF (!Zs=0) // if not enum
#CHECK !2 .
#IFDEF !1 // define for |CI1 if they were previously undefined
#IFSAME !1 |CI1
#ELSE
#ERROR 1001 "ATTEMPT TO REDEFINE SYMBOL FOR DIFFERENT VALUE"
#ENDIF
#ELSE
#IFSUB '!1'
#ERROR 1001 "ATTEMPT TO REDEFINE SYMBOL FOR DIFFERENT VALUE"
#ELSE
#REPLACE !1 |CI1
#ENDIF
#ENDIF
#ELSE
#REPLACE !1 |CI!Zt
#SET ZT$ !ZT
#IF (!0>1)
DEFINE !2 !3 !4 !5 !6 !7 !8 !9
#ENDIF
#ENDIF
#ENDIF