anchor.diff:  :#                  inside.                                                   #
   :#   2016-11-23 JFL Factored out routine :Prep2ExpandVars, and use it before  #
   :#                  displaying any name or value. Fixes issues with ! and ^.  #
  -:#   2016-12-08 JFL Updated the library framework. Features unchanged.        #
  +:#   2016-12-12 JFL Updated the library framework. Features unchanged.        #
   :#                                                                            #
   :#          Copyright 2016 Hewlett Packard Enterprise Development LP         #
   :# Licensed under the Apache 2.0 license  www.apache.org/licenses/LICENSE-2.0 #
   :##############################################################################
   
   setlocal EnableExtensions EnableDelayedExpansion
  -set "VERSION=2016-12-08"
  +set "VERSION=2016-12-12"
   set "SCRIPT=%~nx0"				&:# Script name
   set "SPATH=%~dp0" & set "SPATH=!SPATH:~0,-1!"	&:# Script path, without the trailing \
   set  "ARG0=%~f0"				&:# Script full pathname
  
positive.code: set "DEBUG=1"
  set "DEBUG.ENTRY=:Debug.Entry"
  set "IF_DEBUG=if .%DEBUG%.==.1."
  set "FUNCTION0=%LCALL% call :Debug.Entry0 %%0 %%*"
  set FUNCTION=%MACRO.GETEXP% %&% %MACRO% ( %\n%
    call set "FUNCTION.NAME=%%0" %\n%
    call set ARGS=%%*%# Do not quote this, to keep string/non string aternance #%%\n%
    if defined ARGS set ARGS=%!%ARGS:^^^^^^^^^^^^^^^^=^^^^^^^^%!%%# ^carets are doubled in quoted strings, halved outside. => Quadruple them if using unquoted ones #%%\n%
    if %!%DEBUG%!%==1 ( %# Build the debug message and display it #% %\n%
      if defined ^^%>%DEBUGOUT ( %# If we use a debugging stream distinct from stdout #% %\n%
        call :Echo.2DebugOut call %!%FUNCTION.NAME%!% %!%ARGS:%%=%%%%%!%%# Use a helper routine, as delayed redirection does not work #%%\n%
      ) else ( %# Output directly here, which is faster #% %\n%
        echo%!%INDENT%!% call %!%FUNCTION.NAME%!% %!%ARGS%!%%\n%
      ) %\n%
      if defined LOGFILE ( %# If we have to send a copy to a log file #% %\n%
        call :Echo.2LogFile call %!%FUNCTION.NAME%!% %!%ARGS:%%=%%%%%!%%# Use a helper routine, as delayed redirection does not work #%%\n%
      ) %\n%
      call set "INDENT=%'!%INDENT%'!%  " %\n%
    ) %\n%
  
negative.code:       ) %\n%
        call set "DEBUG.MSG=%'!%DEBUG.MSG:%%=%%DEBUG.excl%%%'!%" %# Change all percent to ! #%  %\n%
        if defined ^^%>%DEBUGOUT ( %# If we use a debugging stream distinct from stdout #% %\n%
  	%!%LCALL%!% :Echo.Eval2DebugOut DEBUG.MSG %# Use a helper routine, as delayed redirection does not work #% %\n%
        ) else ( %# Output directly here, which is faster #% %\n%
  	for /f "delims=" %%c in ("%'!%INDENT%'!%%'!%DEBUG.MSG%'!%") do echo %%c%# Use a for loop to do a double !variable! expansion #%%\n%
        ) %\n%
        if defined LOGFILE ( %# If we have to send a copy to a log file #% %\n%
  	%!%LCALL%!% :Echo.Eval2LogFile DEBUG.MSG %# Use a helper routine, as delayed redirection does not work #% %\n%
        ) %\n%
      ) %\n%
      for %%r in (%!%DEBUG.EXITCODE%!%) do ( %# Carry the return values through the endlocal barriers #% %\n%
  