Macro: MOVEVAR

Module location: FMAC line 11548 (view source)

#COMMAND MOVEVAR #L "TO" #GLEURC . #IFCLASS !1 "G" // MOVE INDICATOR // 12.0 note: this logic, which has been in fmac forever #CHECK !1 _VWFC // would never work. !A [] $4020 !1 |GB[0] !3 IN$GLALL |3 #ELSE // Type independent move as of 2.3 !A [] $086 !1 !3 #ENDIF #ENDCOMMAND changed for 12.0 to support moving indicators

  // The ability to move to and from indicators was added to 12.0 along with the #IFLOGICAL compiler command.
  // This allows developers to treat indicators just like booleans removing the need to create
  // indicate and indicator commands. The Move command can now and should be used for all assignments.
  #IFCLASS !1 "G"  // allowing this case through hangs the compiler .. error is reported already above in argument check
  #ELSE
    #IFLOGICAL !1
      #IFLOGICAL !3
        Indicate !3 as [!1]    // Move Indicator to Indicator   becomes: Indicate Indicator as [Indicator]
      #ELSE
        Movevar (!1) to !3     // Move Indicator to Var
      #ENDIF
    #ELSE
      #IFLOGICAL !3
        // if dest is indicator, check source to decide what kind of statement to build
        #IFSAME !1 true false dftrue dffalse
          Indicate !3 !1    // Move true|false to Indicator   becomes: Indicate Indicator true|false
        #ELSE
          #IFCLASS !1 _E
            Indicate !3 as !1 // Move (exp) to Indicator      becomes: Indicate Indicator as (exp)
          #ELSE
            Indicate !3 as (!1)  // Move var to Indicator     becomes: Indicate Indicator as (var)
          #ENDIF
        #ENDIF
      #ELSE
        // if source and dest are both not indicators use the standard Move logic
        //Type independent move as of 2.3
        !A  [] $086 !1 !3
      #ENDIF
    #ENDIF
  #ENDIF