Name

MacroIf() — Conditionally calls a previously defined macro

Synopsis

    MacroIf(condition?macroiftrue,args:macroiffalse,args)

Evaluates condition, then executes one of either macroiftrue or macroiffalse. Once beyond the condition, however, note that MacroIf() behaves identically to Macro().

    ; define a macro to count down from the specified value
    [macro-countdown]
    exten => s,1,Set(COUNT=${ARG1})
    exten => s,2,While($[ ${COUNT} > 0 ])
    exten => s,3,SayNumber(${COUNT})
    exten => s,4,Set(COUNT=$[ ${COUNT} - 1 ])
    exten => s,5,EndWhile()

    ; define a macro to count up to the specified value
    [macro-countup]
    exten => s,1,Set(COUNT=1)
    exten => s,2,While($[ ${COUNT} < ${ARG1} ])
    exten => s,3,SayNumber(${COUNT})
    exten => s,4,Set(COUNT=$[ ${COUNT} + 1 ])
    exten => s,5,EndWhile()

    ; call our macro with two different values
    [example]
    exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})

See Also

GotoIf(), GosubIf(), the IF() function, Chapter 6