MultiBase

Notas a la versión 3.0 release 2.0

Año 2000

Uno de los problemas que origina la entrada en el año 2000 tiene que ver con los programas que solicitan la fecha usando 2 dígitos para expresar el año.

Hasta ahora, al valor del año introducido se le sumaba siempre 1900. Así, 01/01/98 significaba 01/01/1998, mientras que 01/01/00 significaba 01/01/1900.

El problema radica en que, a partir de ahora, va a ser más habitual que una fecha como 01/01/00 ó 01/01/05 se refieran a los años 2000 y 2005, respectivamente, en lugar de a los años 1900 y 1905, como hasta ahora venía sucediendo.

A partir de esta versión, MultiBase incorpora un mecanismo diferente para determinar el año a partir de dos dígitos.

En lugar de considerar el siglo (1900 a 1999) como rango en el que se movían los años de dos dígitos, se tomará el siglo en el que el año actual sea su mitad (por ejemplo, 1948 a 2047). De este modo, las fechas desde el 48 al 99 se consideran 1948 a 1999, y las del 00 al 47 serán fechas del 2000 al 2047. Este rango irá variando automáticamente de año en año, de forma que el año en curso sea siempre el centro del rango anual.

Es posible que para alguna aplicación en concreto este rango de años que ahora se va a tomar automáticamente (50 atrás y 50 adelante) no sea conveniente, y que se prefiera que se asuman rangos de fechas del tipo "70 atrás" y "30 adelante", u otra combinación. Para este caso se ha definido una nueva variable de entorno, denominada DBDATERANGE, que permite definir este rango. Como valor de la variable DBDATERANGE se define el número de años atrás respecto del actual en el que empieza el rango de fechas. Así, si "DBDATERANGE=10" y el año actual es 1999, estaremos considerando un rango de años que va desde el 1989 (1999-10) al 2088.

Nuevas funcionalidades

Modo "trusted" en sistemas Unix de Hewlett-Packard

Se modifica la validación de usuario y la password para posibilitar configuraciones con sistemas HP-UX en modo "trusted" en conexiones cliente-servidor.

Fichero de entorno en cliente-servidor

Existe la posibilidad de indicar en instalaciones cliente-servidor un archivo de configuración en el que se podrán definir variables de entorno para el servicio "ctsql". Este archivo de configuración se indicará con el path completo en la línea del fichero "/etc/inetd.conf" del siguiente modo (una sola línea):

ctsql stream tcp nowait root $TRANSDIR/lib/ctsql ctsql system 3.0 $TRANSDIR/etc/ctsql.env NET

NOTAS:

Identificación del cliente en conexiones cliente-servidor

En los servidores Unix es posible indicar al CTSQL que "identifique" el cliente que solicita la conexión al servicio, esto es, al activar este mecanismo los procesos CTSQL que aparecen en el servidor al ejecutar el comando "ps" aparecen con la dirección IP o el nombre del host del cliente que solicitó la conexión; este mecanismo permitirá a los administradores saber a qué clientes están atendiendo los distintos CTSQL.

Para activar este mecanismo hay que definir obligatoriamente una entrada en el archivo "inetd.conf" con el siguiente formato (una sola línea):

ctsql stream tcp nowait root $TRANSDIR/lib/ctsql ctsql -dm 3.0 $TRANSDIR/etc/ctsql.env NET

Además, en el archivo "$TRANSDIR/etc/ctsql.env" habrá de indicarse obligatoriamente una entrada del tipo:

TRANSDIR=<Directorio de instalación de MultiBase>

También, mediante la variable "SQL_HOST" se podrá indicar el path de un archivo en el que se podrán definir las direcciones IP de los clientes y los nombres que se quiere asignar a los mismos (ver "/etc/hosts"). De esta manera, si al arrancar la conexión en cliente-servidor el servicio "ctsql" localiza esta dirección en el archivo apuntado por esta variable de entorno no aparecerá la dirección IP del cliente, sino el nombre asignado dentro de este archivo.

Activación del modo "keepalive" en cliente-servidor

En esta versión el servicio "ctsql" tiene activado también el modo "keepalive" para las conexiones en cliente-servidor, de tal forma que al romperse la comunicación de una forma inesperada el servicio "ctsql" se termina de una forma ordenada, cerrando los ficheros y evitando la corrupción de índices.

Para más información consulte los manuales de TCP/IP correspondientes a su plataforma.

Editor Wedit

Se han incluido dos nuevas funciones:

Fichero "$TRANSDIR/etc/termcap"

Se ha implementado un nuevo set de teclas de función mediante [Shift-tecla] y [Alt-tecla].

Gestión de bloqueos en CTSQL

En esta versión del gestor de base de datos se puede determinar si los procesos que esperan por un bloqueo sobre una fila de una tabla efectúan una espera "activa" o "pasiva".

Una espera "activa" se define como un estado en el que el proceso que ha solicitado el bloqueo y no lo ha conseguido está "permanentemente a la escucha" para conseguir el bloqueo en cuanto el sistema lo permita.

Una espera "pasiva" se define como un estado en el que el proceso que ha solicitado el bloqueo y no lo ha conseguido pasa a un estado "durmiente" hasta que el sistema lo "despierta" para solicitar de nuevo el bloqueo.

La diferencia radica en que para las esperas "activas" si un proceso no consigue el bloqueo en mucho tiempo puede "sobrecargar" el sistema, mientras que en las esperas "pasivas" esto no ocurre.

Por defecto, CTSQL utiliza el mecanismo de esperas "activas". Tras las diferentes pruebas realizadas se ha comprobado que en la mayoría de las instalaciones éste es el mejor mecanismo.

Para activar el mecanismo de esperas "pasivas" se ha de utilizar la variable de entorno "MBLCKSLP con valor = 1".

MultiBase Windows

Presentación de semigráficos

Se ha mejorado la presentación de la "screen" en aquellos casos en los que se utilizan líneas verticales junto a la definición de campos sin dejar espacio entre ambos elementos, de tal forma que se evita la pérdida de los "píxeles" de la izquierda del primer carácter del campo.

Para ello deberemos utilizar la variable de entorno "OPTGRAPH" asignándole el valor "1".

Alarmas definibles por el usuario

Se han implementado dos nuevas funciones internas del CTL que permiten activar "alarmas" para que, con un intervalo de tiempo determinado, generen un evento (ver sintaxis de la función "dokey") que podrá ser capturado dentro del programa CTL.

Estas dos funciones son de propósito general y podrán ser utilizadas dentro de cualquier parte del programa.

Las funciones implementadas son:

ctltimerstart(time,evento)

Donde:

time: Intervalo de tiempo (en segundos) tras el cual se generará el evento.

evento: Tecla de función, nombre de una acción etc. (ver sintaxis de la función "dokey").

ctltimerstop()

Esta función desactiva la alarma.

Función inwords

La función que convierte números a letras ("inwords") se encuentra también disponible para los siguientes idiomas: francés, italiano, portugués y catalán.

Para activar las distintas "inwords" en función del idioma se utiliza la variable de entorno MBLANG o DBLANG. CTL cargará la función de conversión "inwords.dll" que se encuentre en "$TRANSDIR/msg/$MBLANG".

Documentación electrónica

La versión en CD ROM para Windows incluye manuales y notas técnicas de MultiBase en formato PDF. Para poder visualizarlos en pantalla necesitará disponer del programa Adobe Acrobat Reader.

En la carpeta "Manual" del CD encontrará la siguiente documentación:

Fuentes de ejemplos

La versión para Windows en CD incluye también los programas fuentes de muchos de los ejemplos que se facilitan en los manuales de Referencia y del Programador. Podrá identificar cada programa por el nombre que figura escrito entre corchetes al principio de cada uno.

Encontrará estos programas en la carpeta "Manual\Ejemplos" del CD.

Errores corregidos

CTSQL

CTL

Los campos "char" en los "form" con longitud en "screen" menor que la longitud real del campo solamente rellenaban una parte del campo, el resto quedaba sin inicializar correctamente.

Tchkidx Windows

El "chequeador" de tablas para Windows fallaba en tablas con un elevado número de filas.