Index: tol/btol/bdb/bdspool.cpp
===================================================================
--- tol/btol/bdb/bdspool.cpp	(revision e4e21ee46b40e804c311a693a54fc837307dd463)
+++ tol/btol/bdb/bdspool.cpp	(revision 2c813bc8f6bf3dd9035aee3113f6c6a635bda476)
@@ -332,4 +332,61 @@
 
   contens_ = dbClose(alias);
+}
+
+//--------------------------------------------------------------------
+DeclareContensClass(BText, BTxtTemporary, BTxtGetDBMSName);
+DefExtOpr(1, BTxtGetDBMSName, "GetDBMSName", 1, 1, "Real", "(Real void)",
+          I2("Return the name of the DBMS for the active connection",
+             "Retorna el nombre del gestor para la conexión activa"),
+          BOperClassify::BayesDataBase_);
+//--------------------------------------------------------------------
+void BTxtGetDBMSName::CalcContens()
+//--------------------------------------------------------------------
+{
+  char buffer[256];
+
+  if (!dbGetDBMSName(buffer, 255))
+    {
+    buffer[0] = '\0';
+    }
+  contens_ = buffer;
+}
+
+//--------------------------------------------------------------------
+DeclareContensClass(BText, BTxtTemporary, BTxtGetDBMSVersion);
+DefExtOpr(1, BTxtGetDBMSVersion, "GetDBMSVersion", 1, 1, "Real", "(Real void)",
+          I2("Return the version of the DBMS for the active connection",
+             "Retorna la versión del gestor para la conexión activa"),
+          BOperClassify::BayesDataBase_);
+//--------------------------------------------------------------------
+void BTxtGetDBMSVersion::CalcContens()
+//--------------------------------------------------------------------
+{
+  char buffer[256];
+
+  if (!dbGetDBMSVersion(buffer, 255))
+    {
+    buffer[0] = '\0';
+    }
+  contens_ = buffer;
+}
+
+//--------------------------------------------------------------------
+DeclareContensClass(BText, BTxtTemporary, BTxtGetDataBaseName);
+DefExtOpr(1, BTxtGetDataBaseName, "GetDataBaseName", 1, 1, "Real", "(Real void)",
+          I2("Return name of the data base for the active connection",
+             "Retorna el nombre de la base de datos para la conexión activa"),
+          BOperClassify::BayesDataBase_);
+//--------------------------------------------------------------------
+void BTxtGetDataBaseName::CalcContens()
+//--------------------------------------------------------------------
+{
+  char buffer[256];
+
+  if (!dbGetDataBaseName(buffer, 255))
+    {
+    buffer[0] = '\0';
+    }
+  contens_ = buffer;
 }
 
Index: tol/btol/bdb/dbtol.cpp
===================================================================
--- tol/btol/bdb/dbtol.cpp	(revision e4e21ee46b40e804c311a693a54fc837307dd463)
+++ tol/btol/bdb/dbtol.cpp	(revision 2c813bc8f6bf3dd9035aee3113f6c6a635bda476)
@@ -85,4 +85,7 @@
 typedef void* (*dbOpen_fpt)(void**);
 typedef int (*dbClose_fpt)(void*);
+typedef int (*dbGetDBMSName_fpt)(void*, char *, size_t);
+typedef int (*dbGetDBMSVersion_fpt)(void*, char *, size_t);
+typedef int (*dbGetDataBaseName_fpt)(void*, char *, size_t);
 typedef int (*dbOpenQuery_fpt)(void *, const char *);
 typedef int (*dbExecQuery_fpt)(void *, const char *);
@@ -108,4 +111,7 @@
   dbOpen_fpt dbOpen_fp;
   dbClose_fpt dbClose_fp;
+  dbGetDBMSName_fpt dbGetDBMSName_fp;
+  dbGetDBMSVersion_fpt dbGetDBMSVersion_fp;
+  dbGetDataBaseName_fpt dbGetDataBaseName_fp;
   dbOpenQuery_fpt dbOpenQuery_fp;
   dbExecQuery_fpt dbExecQuery_fp;
@@ -189,4 +195,7 @@
   FUNCTION_LOAD_DECLARATION(Open);
   FUNCTION_LOAD_DECLARATION(Close);
+  FUNCTION_LOAD_DECLARATION(GetDBMSName);
+  FUNCTION_LOAD_DECLARATION(GetDBMSVersion);
+  FUNCTION_LOAD_DECLARATION(GetDataBaseName);
   FUNCTION_LOAD_DECLARATION(OpenQuery);
   FUNCTION_LOAD_DECLARATION(ExecQuery);
@@ -461,4 +470,43 @@
 #endif
   return rc;
+}
+
+int dbGetDBMSName(char *dbms, size_t size)
+{
+  if(!active_db_) {
+    Error(I2("There is no database connection.\n",
+	     "No existe una conexión activa a BB.DD.\n"));
+    return 0;
+  }
+  DBM_hdl *dbm_hdl = NULL;
+
+  dbm_hdl = dbm_handlers_[active_db_->hdl_idx];
+  return dbm_hdl->dbGetDBMSName_fp(active_db_->dbd, dbms, size);
+}
+
+int dbGetDBMSVersion(char *version, size_t size)
+{
+  if(!active_db_) {
+    Error(I2("There is no database connection.\n",
+	     "No existe una conexión activa a BB.DD.\n"));
+    return 0;
+  }
+  DBM_hdl *dbm_hdl = NULL;
+
+  dbm_hdl = dbm_handlers_[active_db_->hdl_idx];
+  return dbm_hdl->dbGetDBMSVersion_fp(active_db_->dbd, version, size);
+}
+
+int dbGetDataBaseName(char *database, size_t size)
+{
+  if(!active_db_) {
+    Error(I2("There is no database connection.\n",
+	     "No existe una conexión activa a BB.DD.\n"));
+    return 0;
+  }
+  DBM_hdl *dbm_hdl = NULL;
+
+  dbm_hdl = dbm_handlers_[active_db_->hdl_idx];
+  return dbm_hdl->dbGetDataBaseName_fp(active_db_->dbd, database, size);
 }
 
Index: tol/btol/bdb/tol_bdspool.h
===================================================================
--- tol/btol/bdb/tol_bdspool.h	(revision e4e21ee46b40e804c311a693a54fc837307dd463)
+++ tol/btol/bdb/tol_bdspool.h	(revision 2c813bc8f6bf3dd9035aee3113f6c6a635bda476)
@@ -23,4 +23,6 @@
 #define TOL_BDSPOOL_H 1
 
+#include <stdlib.h>
+
 class BSet;
 class BList;
@@ -41,4 +43,7 @@
 extern int dbOpenDirect(const char* alias, const char *user, const char *pwd, BSet * dbset=0);
 extern int dbClose(const char *alias);
+extern int dbGetDBMSName(char *dbms, size_t size);
+extern int dbGetDBMSVersion(char *version, size_t size);
+extern int dbGetDataBaseName(char *database, size_t size);
 extern int dbActivate(const char *alias);
 extern BList *dbGetOpened(const char *dbtype);
@@ -62,4 +67,7 @@
 		       unsigned short& second,
 		       unsigned short& msecond);
+extern int dbGetDBMSName(char *dbmsName, size_t size);
+extern int dbGetDBMSVersion(char *dbmsVersion, size_t size);
+extern int dbGetDataBaseName(char *database, size_t size);
 
 #endif // TOL_BDSPOOL_H
