That has always been my understanding - %=ExitCode% and %=ExitCodeAscii% only report the return code for applications (external comands). It does not work with batch sub-routines (or called batch scripts for that matter). You can use either EXIT or EXIT /B with your CMD /C line to set the value.
%=ExitCode% is the return code in hex format
%=ExitCodeAscii% is the string value of the returned ASCII code. It only works with codes between 32 - 127 inclusive.
But, I hadn't thought of using the behavior as a way of returning two values
Good idea
Addendum: I believe that EXIT /B never sets the process return code directly. It sets the %ERRORLEVEL%, which is a CMD.EXE internal value. When the CMD.EXE process terminates, it passes on the current value of %ERRORLEVEL% as the process return code. That is my understanding anyway.
Dave Benham