Why not use an "Action" parameter to the UDF that determines what process to follow?

The point of a UDF is to have one block of code that can be called repeatedly. If you create many UDFs, you might as well just write inline code and dispense with the UDFs entirely!
 Code:
Function Example(source, dest, action)

  ; special actions
  If $Action & 1   ; delete/create dest
    RD /s $Dest
  EndIf
  If $Action & 2   ; special action
    ; some stuff
  EndIf
  If $Action & 4
    ; some other stuff
  EndIf
  If $Action & 8
    ; set special parameters..
  EndIf
  ; now do all the standard stuff...

EndFunction
just to provide some ideas..

With bitwise values like this, one Action value can represent 256 combinations 8 unique settings - a value of 5 would del/create AND do "some other stuff". You can also have the UDF exit without doing anything, so all of the conditional logic is in the UDF and you don't have to write logic to determine if you should call the function.

EG. Call the function with the developed arguments. If the args are not validated (present, in scope, etc), the UDF just exits.

Glenn
_________________________
Actually I am a Rocket Scientist! \:D