Página de inicio - Tecla de acceso: 1
Notas técnicas

MultiBase. Notas a la versión 2.0

Nuevos atributos Form/Frame

LOOKUP: Se permite este atributo en FRAMES.

SCROLL: Atributo para las variables de tipo CHAR de un FORM o FRAME. Ejemplo:

a = descripcion scroll

Modificaciones en la sección Control o Editing

Dentro de la sección CONTROL de un FORM se ha añadido la cláusula:

AFTER/BEFORE LINE of tabla

Las instrucciones de estos bloques se ejecutan ANTES y DESPUÉS de la selección de la fila en curso.

Ahora es posible utilizar la cláusula BEFORE CANCEL en la sección EDITING, haciendo así factible la anulación del «cancel» si se desea. Con «next field» continuará la edición normalmente.

Sin embargo, al utilizar las cláusulas AFTER CANCEL en la sección EDITING o BEFORE CANCEL en la sección CONTROL dará error de compilación.

Cambio de base de datos. Instrucción Database

A partir de esta versión el cambio de base de datos producirá el cierre de los cursores de todos los módulos, con lo que el usuario deberá volver a abrir los que necesite y preparar de nuevo las frases que le interesen para la base de datos recién abierta.

Asimismo, habrá que tener en cuenta que al salir de un programa ya no se cierra la base de datos activa en ese momento, como ocurría en la versión anterior.

Instrucción Window

Lo que se expone a continuación es válido para cualquier instrucción WINDOW que no contenga la cláusula BY COLUMNS.

Cláusulas nuevas

Estas cláusulas se intercalan en la sintaxis de la instrucción WINDOW de la forma que sigue:

WINDOW [SCROLL | CLIPPED] FROM...

Cláusulas modificadas

Instrucción Edit

Se ha añadido la cláusula LABEL:

EDIT {FILE expr | identifier [NO LINES]} AT line,column
WITH lines,columns [LABEL expr]

que coloca la etiqueta resultado de «expr» en la ventana de edición.

Instrucción Run

Existe una lista de comandos que pueden ejecutarse directamente sin necesidad de utilizar la instrucción RUN: rm, mv, test, cp, ctlcomp. A esta lista hay que añadir, además: mkdir.

Instrucciones de manejo de cursores

A partir de esta versión, las instrucciones OPEN, EXECUTE, FETCH y FOREACH de un cursor, permiten que la lista de variables que aparece en las cláusulas USING e INTO sea la de un FRAME. La sintaxis es:

OPEN cur USING frame.*
EXECUTE cur USING frame.*
FETCH cur INTO frame.*
FOREACH cur USING frame.* INTO frame.*

Sección Control de un Cursor

La cláusula «AFTER/BEFORE GROUP OF num» puede utilizarse ahora también con frases preparadas. Por ejemplo:

prepare prep from "select provincia, nombre, direccion from clientes "
   && "order by provincia"
declare cursor c1 for prep
control
after group of 1 ...

Funciones y variables internas del CTL

Funciones nuevas o modificadas:

Las tres funciones siguientes: fgetquery, addtoclist y endquery, asociadas a un CURSOR, constituyen una herramienta eficaz, por ejemplo, para implementar un GETQUERY con una WHERE todo lo amplia que se precise (joins, group by, etc.).

tsql "create table t1 (" &
sqldescribe("select * from clientes") & ")"

let num = sqlselect ("select " && elige_cols () && "from clientes")
let a = sqlfetch (num)
call sqlclose (num)

En este ejemplo se recoge en una única variable de tipo CHAR un conjunto de columnas determinado por la función «elige_cols».

Nueva variable interna CTL:

Nuevas variables de entorno

N: No se detiene.
S: Hace una pausa cada 24 líneas. (Valor por defecto).
P: Se detiene cada N líneas, siendo N el valor indicado en la cláusula SIZE de la instrucción FORMAT.

DBPRIOR=valor
export DBPRIOR

Donde valor es un número de 5 a 200 ambos inclusive. Un valor de 100 indica una prioridad normal, mientras que 5 es la prioridad mínima (lo más lento), y 200 es la máxima (lo más rápido). Cualquier valor inferior a 5 tiene el mismo efecto que éste, y cualquiera superior a 200 el mismo que 200.

Al cambiar la prioridad no se notará ningún efecto apreciable si el programa MultiBase es el único proceso que se está ejecutando en la máquina.

Compatibilidad con la versión anterior

La compatibilidad de la versión 2.0 respecto a la anterior está garantizada gracias a la incorporación de la nueva variable de entorno MBCOMPAT.

Asignándole el valor 1, esta variable permite obviar las diferencias con la versión 1.0.

No obstante, existen dos casos particulares en los que es posible indicar si se desea mantener o no la compatibilidad, para lo cual se proporcionan dos nuevas variables: MBCTRMODE y DECNEG.

Máximos ampliados

El número máximo de funciones de usuario definidas por módulo se aumenta de 100 (valor anterior) a 200. Asimismo, el número máximo de parámetros pasados en una función se aumenta de 20 a 40.

Nuevos parámetros en la línea de comando

ctlink ... -lf filename ..

Teasy

Ha sido modificado para que cuando se ejecute una frase a un fichero lo haga siempre en modo columna, cada fila en una línea, aunque ocupe más de 80 caracteres.

Fase de depuración

A partir de esta versión, el mensaje que aparece cuando se produce un error en ejecución contendrá el módulo y la línea donde se ha localizado el mismo, siempre y cuando el módulo haya sido compilad con la opción «-g».

Tprocess

El número máximo de variables de mailing se ha aumentado de 100 a 200. Además, se permite que una línea continúe con la siguiente (y así sucesivamente hasta un máximo de 512 cacacteres) si termina con el carácter «\».

Cambios en el entorno de programación

a) Cambios en la estructura de las tablas del Entorno:

La columna «comment» de la tabla «ep_d_comm» ha sido renombrada como «commen_t».

La columna «description» de la tabla «ep_col_descr» definida como tipo de dato: char(256), pasa a ser: char(255).

Estos cambios serán realizados automáticamente por el Entorno de Programación en el momento de seleccionar una Base de Datos generada con una versión anterior.

b) Nueva opción: Modificar Diccionario:

Cada módulo o programa del Entorno de Programación guarda como parte de su información el directorio donde se encuentra. En caso de querer modificar el directorio para un conjunto de módulos y programas utilizaremos la opción «Modificar Diccionario», la cual asignará el nuevo directorio sin mover los ficheros.