Il problema si è risolto semplicemente eliminando la seconda parentesi graffa da sinistra della strSql.
Ecco il codice che mi ha permesso la corretta funzionalità:
codice:
Public Function ControllaCFBrasile(cf As String, tipo As String, msgErr As String) As Integer
strSql = "{?=call sial_gestione_lav_esterni.ctrl_codice_fiscale(?,?,?)}"
Set Com = this.ISIALApplication_SIALDatabase.command
With Com
.CommandText = strSql
.CommandType = adCmdText
.Parameters.Append .CreateParameter("RetVal", adInteger, 1, adParamReturnValue)
.Parameters.Append .CreateParameter("i_codice_fiscale", adVarChar, adParamInput, 30, Trim(cf))
.Parameters.Append .CreateParameter("i_tipo", adVarChar, adParamInput, 3, tipo)
.Parameters.Append .CreateParameter("o_msg_err", adVarChar, adParamOutput, 1000, msgErr)
.Execute
End With
ControllaCFBrasile = Com("RetVal").Value
msgErr = Iif IsNull(Com("msgErr").Value, "", Com ("msgErr").Value)
End Function