anchor.diff:  :#                                                                            #
   :#  Arguments                                                                 #
   :#                                                                            #
  -:#  Notes 	    '*' '=' ':' cannot be replaced by %VAR:c=repl%            #
  +:#  Notes 	    Non ASCII CHAR arguments must be quoted. Ex: ","          #
  +:#                                                                            #
  +:#		    '*' '=' ':' cannot be replaced by %VAR:c=repl%            #
  +:#                                                                            #
  +:#                  Routines shared on dostips:                               #
  +:#                  https://www.dostips.com/forum/viewtopic.php?p=50132#p50132
   :#                                                                            #
   :#  History                                                                   #
   :#   2016-11-13 JFL Added routine ReplaceChars.                               #
  +:#   2021-12-06 JFL Use %FUNCTION%/%RETURN% to return correct results.        #
  +:#                  Updated the drawback comments about known limitations.    #
  +:#		    Added routine :ReplaceEquals.                             #
  +:#                  The RETVAR argument is now optional for all routines.     #
  +:#		    Fixed :ReplaceDelimSets support for ^ in input strings.   #
   :#                                                                            #
   :#----------------------------------------------------------------------------#
   
   :# Replace characters
  -:# Advantage: Works with CHAR '=' ':' '*' '~'
  +:# Advantage: Works with CHAR ':' '*' '~'
   :# Advantage: The string can contain LF and '"' characters
   :# Drawback: Does not work with '='.
  -:ReplaceChars STRVAR CHAR REPLACEMENT RETVAR 
  -setlocal EnableDelayedExpansion
  +:ReplaceChars %1=STRVAR  %2=CHAR  %3=REPLACEMENT  %4=RETVAR (Default: STRVAR)
  +%FUNCTION% EnableDelayedExpansion
   set "STRING=!%~1!"
   set "REPL=%~3"
  +set "RETVAR=%~4" & if not defined RETVAR set "RETVAR=%~1"
   set "RESULT="
   if defined STRING (
     call :strlen.q STRING SLEN	&:# SLEN = Full string length
  
positive.code: set "ECHOVARS.D=%LCALL% :EchoVars.Debug"
  set "ECHOSVARS.V=%LCALL% :EchoStringVars.Verbose"
  set "ECHOSVARS.D=%LCALL% :EchoStringVars.Debug"
  set "ECHOVALS=%LCALL% :EchoVals"
  set "ECHOVALS.V=%LCALL% :EchoVals.Verbose"
  set "ECHOVALS.D=%LCALL% :EchoVals.Debug"
  
negative.code:     )
    )
  )
  set "!RETVAR!=!RESULT!"
  %UPVAR% !RETVAR! & %RETURN% 0
  
  :# Replace delimiter sets
  :# Advantage: Simple and fast; Works with CHAR '=' ':'
  :# Drawback: Multiple consecutive CHARs are replaced by a single REPL string.
  :# Drawback: Does not work on strings with LF or '!' characters.
  :ReplaceDelimSets %1=STRVAR  %2=CHAR  %3=REPLACEMENT  %4=RETVAR (Default: STRVAR)
  %FUNCTION% EnableDelayedExpansion
  set "STRING=[!%~1:^=^^^^!]" &:# Make mure the string does not begin or end with delims
  set "REPL=%~3"
  set "RETVAR=%~4" & if not defined RETVAR set "RETVAR=%~1"
  set "RESULT="
  :ReplaceDelimSets.loop
  for /f "delims=%~2 tokens=1*" %%s in ("!STRING!") do (
  