El operador lógico «OR» implicado en la cláusula «WHERE» de una instrucción de SQL (SELECT, UPDATE o DELETE) no devolvía en ciertas circunstancias la tabla derivada correcta.
La edición de un FRAME «multiscreen» (con varias páginas) producía un error, asignando valores ilegibles a las variables y cancelando posteriormente el programa.
[MS-DOS]. El comando trepidx admite la cláusula «-y» para que no se realice ninguna pregunta al usuario. Esta cláusula ya se encontraba implementada en versiones anteriores para UNIX y Windows.
A la hora de imprimir el manual generado por el comando tdocu de MultiBase, el salto de página no se realizaba correctamente. El problema residía en el comando tprocess, que es el que interpreta los comandos generados por la documentación de usuario o programador de MultiBase.
La instrucción ROLLFORWARD DATABASE no funcionaba cuando en una transacción se empleaba la cláusula «WHERE CURRENT OF_» dentro de la lectura de un CURSOR declarado con la cláusula «FOR UPDATE».
La instrucción WINDOW de una SELECT que no devolvía ninguna fila producía un error al encontrarse dentro de un bucle cuando alguna columna de la «lista_selección» era de tipo DECIMAL o MONEY.
Una instrucción SELECT no declarada como CURSOR que incluyese una cláusula de recepción de valores («INTO» o «BY NAME») producía que el módulo CTL consumiese gran cantidad de memoria si devolvía más de una fila («ambiguous=true»), lo que originaba un error cuando dicha instrucción se ejecutaba varias veces.
Al generar la lista en curso en un FORM, si se seleccionaba la opción de nueva consulta y se cancelaba, al recuperar la lista anterior la fila que quedaba en curso era siempre la última, produciéndose el mensaje «No hay más filas» cuando se intentaba seleccionar la siguiente. Sin embargo, si se seleccionaba la opción de modificación o borrado, la fila afectada por cualquiera de estas operaciones era la primera de la lista y no la última.
La creación masiva de tablas temporales (CREATE TEMP TABLE) producía el mensaje «Imposible abrir la tabla de la base de datos_»).
La función «evalfun(función, parámetros)» no operaba correctamente con ciertas funciones internas de CTL.
Si a una variable de tipo TIME se le asignaba una hora superior a las 24 horas devolvía como valor un cero «0». Actualmente, la expresión «let hora=24:01:10» devolverá el valor «NULL».
La cláusula «DISTINCT» de la «lista_selección» de una instrucción SELECT con más de 8 campos devolvía resultados diferentes dependiendo de si se incluía o no la cláusula «INTO TEMP».
El comando thelpcomp no emplea la variable MSGDIR, si bien el entorno de programación simula esta posibilidad. En la «release» anterior no se incluía dicha variable en la línea de comando del thelpcomp.
[Windows]. La selección de una segunda impresora mediante la función específica de Windows «setprtsetup(«name», expresión)» no actualizaba el tamaño del papel a la hora de emplear el Administrador de Impresión («DBPRINT=PRINTMAN»).
[Windows]. En un mantenimiento (FORM) con «scroll» lateral (izquierda-derecha), al pulsar la combinación de teclas [CTRL]+[Q] para realizar el «scroll» hacia la izquierda se producía un error. Dicha combinación es la que MultiBase define por defecto para dicha acción.
[UNIX y MS-DOS]. Se ha incorporado una nueva variable de entorno, WINFN, para que el compilador ignore o no las funciones específicas de Windows y que la ejecución del programa no produzca los mensajes de error típicos de que dicha función no existe en ningún módulo componente del programa. Los posibles valores de esta variable son «Y» y «N». El valor «Y» puede simularse mediante el parámetro «-wfn» del comando ctlcomp, en cuyo caso su sintaxis quedaría de la siguiente forma.
ctlcomp -wfn módulo
En una base de datos definida con secuencia de ordenación, cuando se condicionaba una columna de tipo DECIMAL en la cláusula «WHERE» de una instrucción SELECT, UPDATE o DELETE, la tabla derivada que devolvía era correcta o incorrecta según fuese índice o no.
[UNIX]. En versiones estándares 4.0 de UNIX se pueden definir grupos suplementarios. Esta versión de MultiBase contempla dichos grupos para los permisos relativos al UNIX sobre programas y bases de datos.
lastrowid()
Devuelve el número de «ROWID» de la última fila insertada mediante un FORM (instrucciones ADD, ADD ONE o INTERCALATE), o bien mediante la instrucción INSERT del sublenguaje DML del SQL.
lastserial()
Devuelve el número asignado a la columna SERIAL después de realizar una inserción mediante un FORM (instrucciones ADD, ADD ONE o INTERCALATE), o bien mediante la instrucción INSERT del sublenguaje DML del SQL.
licence()
Esta función, implementada en versiones anteriores, no funcionaba correctamente en la versión de Windows, devolviendo siempre el valor cero. Actualmente, el valor que devuelve es el de la Licencia sobre la que se ejecuta CTL.
DisableFormVar(expresión1,expresión2)
EnableFormVar(expresión1,expresión2)
Desactiva/activa la edición de la variable indicada en «expresión2» durante la ejecución de un FORM en el que se mantenga la tabla especificada en «expresión1». Ejemplo:
option "Altas"
call DisableFormVar("clientes","total_facturado")
add
...
DisableFrameVar(expresión1,expresión2)
EnableFrameVar(expresión1,expresión2)
Desactiva/activa la edición de la variable indicada en «expresión2» perteneciente al FRAME indicado en «expresión1».
CountFormVars(expresión1)
Devuelve el número de variables a editar en el FORM que mantenga la tabla especificada en «expresión1».
CountFrameVars(expresión1)
Devuelve el número de variables a editar pertenecientes al FRAME indicado en «expresión1».
GetFormVarName(expresión1,expresión2)
Devuelve el nombre de la variable de la tabla «expresión1» que se está manteniendo en un FORM y que corresponda con el número de orden indicado en «expresión2».
GetFrameVarName(expresión1,expresión2)
Devuelve el nombre de la variable del FRAME indicado en «expresión1» que se está manteniendo y que corresponda con el número de orden indicado en «expresión2».
Se ha implementado un nuevo parámetro en la línea de comando («-con») y una nueva opción en la persiana «Archivo» del menú principal de EasyReport («Cambiar Conexión») para seleccionar una conexión al servidor de la base de datos diferente de las previamente definidas en el editor de configuración («Confedit»). Las variables de entorno implicadas en este nuevo concepto de conexión dinámica que reciben un tratamiento especial son DBHOST, DBUSER y DBPASSWD.
Los nuevos parámetros de la línea de comando del EasyReport para el manejo del entorno son los siguientes:
-env: Selecciona un entorno definido en el fichero de configuración. El fichero de configuración por defecto es «COSMOS.INI», aunque puede generarse un fichero auxiliar, denominado «EASYREP.INI», cuyo nombre y localización pueden modificarse en la entrada «EASYREP.INI» de la sección [MultiBase] del fichero «WIN.INI».
-var: Define una variable de entorno con su correspondiente valor.
-con: Define un entorno de configuración.
-pass: Define la contraseña («password») para la conexión del DBUSER definido previamente.
En la sección [MultiBase] del fichero «WIN.INI» se pueden definir las entradas «COSMOSDIR» y «EASYREP.INI». «COSMOSDIR» identifica el directorio («path») de la aplicación para localizar los comandos propios de EasyReport (easyrep, cdsedit y confedit). Dicho directorio debe contener, al menos, los subdirectorios «bin», «drw», «msg» y «etc» con los ficheros propios del EasyReport. Por su parte, la entrada «EASYREP.INI» define el directorio y nombre («path completo») del fichero auxiliar de configuración de EasyReport. Este fichero tiene la misma estructura que el fichero «COSMOS.INI», sobre el cual tiene preferencia. Si no se especifica «EASYREP.INI» el fichero auxiliar de configuración estará definido como «COSMOSDIR\etc\easyrep.ini», no siendo obligatoria su existencia.
IMPORTANTE: EasyReport incluye un sistema de ayuda interactiva donde se explica su funcionamiento y características. Para cualquier aclaración sobre las nuevas posibilidades de la herramienta consulten este fichero.
La línea de cabecera de un listado puede incluir caracteres especiales («-$Pn») para mostrar los valores que se le asignan a los posibles parámetros de ejecución del listado.
El parámetro «-par» de la línea de comando del EasyReport sólo tendrá que especificar los parámetros diferentes que intervienen en la ejecución del listado.
La cláusula «USING» dentro de un esquema conceptual de datos producía un error si no se indicaba, ya que no es obligatorio especificar un valor variable en la instrucción SELECT que se define.
La opción «Descargar tablas» producía un error cuando se trabajaba con el «gateway» de Oracle.
La opción de «Seleccionar» una base de datos no funcionaba al trabajar con «gateways».
[Windows]. La opción «Salida» de la persiana «SQL» producía un error cuando la variable de entorno DBPRINT contenía el valor «PM» o «PRINTMAN» (empleo del administrador de impresión Windows).
La actualización a la versión 3.0.1.0 de versiones 3.0.00 y 2.0.xx serializadas por software, es decir, por número de serialización facilitado por el Departamento de Soporte de TransTOOLs, deberá realizarse copiando la nueva versión sobre la antigua mediante el siguiente comando:
# cpio -iBduv -I /dev/r...
o bien:
# cpio -iBduv < /dev/r...
La cláusula «u» del comando cpio ordena la actualización incondicional de todos los ficheros de MultiBase.
IMPORTANTE: Si ha personalizado su copia de MultiBase en la versión 3.0 00, antes de proceder a la instalación de la nueva haga una copia de los ficheros «$TRANSDIR/etc/termcap» y «$TRANSDIR/etc/tprinter».
A continuación, y dependiendo de si la Licencia es de Desarrollo o Run Time, ejecute desde superusuario el comando installctl o installrt, respectivamente, con lo que la copia de MultiBase quedará actualizada automáticamente a la nueva versión.
La instalación de una Licencia nueva de la versión 3.0.1.0 (no una actualización) se realizará según lo explicado en el capítulo 3 del Manual del Administrador.
Si su Licencia de MultiBase es en «depósito» (por tiempo limitado), podrá ampliar la fecha de caducidad previa autorización del Departamento Comercial de TransTOOLs.