First input parameter goes missing when calling a stored procedure with ado

I was hoping some one can help with the following problem using Delphi
5, ADO 2.6 and Oracle 8.1:

I am trying to call a stored procedure with six parameters (three
input and three output) and the first input parameter never gets to
the stored procedure.

What happens is the NO_DATA_FOUND exception is thrown and the error
message is written to an error table with the input parameters:

param1=
param2=value2
param3=value3

I have have checked the command object parameters immediately prior to
executing the stored procedure and the value for param1 is there... it
just does not make it through to the stored proc. I have tired this
using both the Oracle ODBC Driver and the Microsoft ODBC for Oracle
driver.

Any help is greatly appreciated.

//snip-----------------------------------------
con := CoConect.Create();
con.Open('DSN='+DSN+';User Id='+UID+';PASSWORD='+PWD, UID, PWD, 0);

cmd := CoCommand.Create();
cmd.CommandType := adCmdStoredProc;
cmd.CommandText := 'PACKAGE_NAME.PROCEDURE_NAME';
cmd.Set_ActiveConnection(con);

cmd.Parameters.Append(cmd.CreateParameter('param1',adBSTR,adParamInput,100,'value1'));

cmd.Parameters.Append(cmd.CreateParameter('param2',adBSTR,adParamInput,100,'value2'));

cmd.Parameters.Append(cmd.CreateParameter('param3',adBSTR,adParamInput,100,'value3'));

cmd.Parameters.Append(cmd.CreateParameter('param4',adBSTR,adParamOutput,100,value));

cmd.Parameters.Append(cmd.CreateParameter('pOraNumber',adInteger,adParamOutput,100,value));

cmd.Parameters.Append(cmd.CreateParameter('pOraMessage',adBSTR,adParamOutput,100,value));

cmd.Execute(recAffected,param,adCmdStoredProc);
//snip-----------------------------------------

the corresponding stored procedure looks like this:

--SNIP-----------------------------------------
PROCEDURE PROCEDURE_NAME(
              param1 IN VARCHAR2,
              param2 IN VARCHAR2,
              param3 IN VARCHAR2,
              param4 OUT VARCHAR2,
              param5 OUT VARCHAR2,
              param6 OUT VARCHAR2) AS
BEGIN
    SELECT MY_COLUMN INTO param4
          FROM MY_TABLE
         WHERE COL_1=param1
           AND COL_2=param2
           AND COL_3=param3;

        EXCEPTION
            WHEN NO_DATA_FOUND THEN
                pOraNumber:=SQLCODE;
                pOraMessage:=SQLERRM;
                WriteLog('PROCEDURE_NAME couldn''t find matching row in MY_TABLE,
param1='||param1||', param2='||param2||',
param3='||param3,pOraMessage,pOraNumber);
                param4:='';
            WHEN OTHERS THEN
                pOraNumber:=SQLCODE;
                pOraMessage:=SQLERRM;
                WriteLog('Unhandled exception in PROCEDURE_NAME,
param1='||param1||', param2='||param2||',
param3,='||param3,pOraMessage,pOraNumber);
                param4:='';
END PROCEDURE_NAME;
--SNIP-----------------------------------------