anchor.diff:  %RETURN0% Returning from function #1
   
   :#----------------------------------------------------------------------------#
  +:# Test %EXEC% and errorlevels, on entry and exit
  +
  +:testErrorLevel
  +for /l %%n in (0,1,2) do (
  +  echo.
  +  call :Exec.SetErrorLevel %%n
  +  echo :# Calling with ERRORLEVEL=!ERRORLEVEL!
  +  %EXEC% call :testErrorLevelCallback
  +  echo :# Returned with ERRORLEVEL=!ERRORLEVEL!
  +)
  +exit /b 0
  +
  +:testErrorLevelCallback
  +set ERROR=%ERRORLEVEL%
  +%ECHOVARS% ERROR
  +exit /b %ERROR%
  +
  +:#----------------------------------------------------------------------------#
   :#                                                                            #
   :#  Function        Main                                                      #
   :#                                                                            #
  
positive.code: ver | find "Windows NT" >NUL && goto ErrNT
  
  setlocal EnableExtensions EnableDelayedExpansion
  set "VERSION=2016-11-05"
  set "SCRIPT=%~nx0"
  set "SPATH=%~dp0" & set "SPATH=!SPATH:~0,-1!"
  set "ARG0=%~f0"
  
negative.code: :# Version supporting input and output redirections, and pipes.
  :# Redirection operators MUST be surrounded by quotes. Ex: "<" or ">" or "2>>"
  :Exec
  set "Exec.RestoreErr=call :Exec.SetErrorLevel %ERRORLEVEL%" &:# Save the initial errorlevel: Build a command for restoring it later
  setlocal EnableExtensions DisableDelayedExpansion
  :Exec.Start
  set "NOREDIR0=%NOREDIR%"
  set "Exec.Redir=>>%LOGFILE%,2>&1"
  if .%NOREDIR%.==.1. set "Exec.Redir="
  