Ok, comenzando
Primero.. necesitamos una estructura que almacene los parámetros de conexión a la fuente de datos.  Para eso, utilizo una tabla donde guardo todas las configuraciones del sistema. Para el caso, en cualquier lugar seguro que se puedan guardar los parámetros de conexión funcionará.  Esta es la función  ConnectODBC.p:
DEFINE INPUT  PARAMETER ODBC-DSN AS CHARACTER  NO-UNDO.
DEFINE INPUT  PARAMETER ODBC-Server AS CHARACTER  NO-UNDO.
DEFINE INPUT  PARAMETER ODBC-UserID AS CHARACTER  NO-UNDO.
DEFINE INPUT  PARAMETER ODBC-password AS CHARACTER  NO-UNDO.
DEFINE INPUT-OUTPUT  PARAMETER  objConnection AS COM-HANDLE     NO-UNDO.   /*regresa ? si no se conectó */
DEFINE OUTPUT PARAMETER ODBC-status AS CHARACTER  NO-UNDO.
SESSION:SET-WAIT-STATE ( "GENERAL" ).
CREATE "ADODB.Connection" ObjConnection.
ObjConnection:OPEN ( "data source=" + ODBC-DSN + ";server=" + ODBC-Server, ODBC-UserID, ODBC-password, 0 ) NO-ERROR. 
SESSION:SET-WAIT-STATE ( "" ).
IF ERROR-STATUS:NUM-MESSAGES > 0 THEN
    ASSIGN ODBC-status = ERROR-STATUS:GET-MESSAGE(1).
ELSE
    ASSIGN ODBC-status = "".
En el procedimiento que llame a esta función, se puede utilizar el ODBC-status para mostrar el error generado.
La ventana para dar mantenimiento a las conexiones:
 
