It looks like the execution is happening at the end of the script. Try changing the last 3 lines to:
SProc.ExecProc();
var test = SProc.Parameters.ParamByName("OnHand").value;
Log.Message(test);
Change:
SProc.Parameters.CreateParameter("OnHand", adInteger, adParamReturnValue, 6, null);
and instead use something more like:
SProc.Parameters.AddParameter();
SProc.Parameters.Items(6).name = "OnHand";
SProc.Parameters.Items(6).DataType = adInteger;
SProc.Parameters.Items(6).Direction = pdParamReturnValue;
SProc.Parameters.Items(6).Value = null;