Macro: DEFINE

Module location: FMACDD line 8358 (view source)

  #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