Respecto a las versiones para MS-DOS y UNIX, la versión de MultiBase para Windows incluye algunas variables de entorno adicionales. Estas variables adicionales, además de la MBBUTBMP y la MBBKBMP, ya comentadas anteriormente, son las siguientes:
PRTSET: Permite el cambio del «set» de caracteres en el manejo de STREAMS de salida (incluida la impresora). Por defecto, el «set» de caracteres utilizado es el GCS#2 de IBM. En el caso de que deseás mos utilizar otro distinto, por ejemplo el juego de caracteres ANSI, habría que definir la variable de acuerdo a la siguiente sintaxis: PRTSET=ANSI.
MBPAL: Permite indicar el fichero que contiene las paletas de colores que podrán ser utilizadas por el elemento de diálogo de «Definición de Colores». Este fichero deberá estar siempre en el subdirectorio «etc» de MultiBase.
MBINI: Permite indicar cuál será el fichero de inicialización («.INI») del CTL. Dicho fichero deberá estar en el subdirectorio «etc» de MultiBase.
Dado el comportamiento del Windows en lo que se refiere a las variables de entorno, es conveniente observar ciertas precauciones para el correcto funcionamiento de las aplicaciones desde el Administrador de Programas del Windows.
En el caso de querer utilizar el Entorno de Programación se deberán tener en cuenta los siguientes aspectos.
La variable de entorno DBPROC deberá contener todos los directorios
en los que existan programas del usuario. Por su parte, la variable
MSGDIR contendrá los directorios de mensajes de las distintas
aplicaciones. Ahora bien, para utilizar el Entorno de Programación
(trans) habrá que añadir a estas variables sus correspondientes
directorios de programas y mensajes (normalmente «C:\ctl\ep» y «C
\ctl\msg»).
Por ejemplo:
1) Para su uso en aplicaciones:
set DBPROC=C:\ALMACEN;\C:\PERSONAL
set MSGDIR=C:\ALMACEN;C:\PERSONAL
2) Para su uso por el Entorno y aplicaciones:
set DBPROC=C:\CTL\EP;C:\ALMACEN;\C:\PERSONAL
set MSGDIR=C:\CTL\MSG;C:\ALMACEN;C:\PERSONAL
Esto último podría realizarse también utilizando «-env» al arrancar el comando ctl:
ctl -env ep_trans almacen
La variable de entorno DBPATH deberá contener todos los directorios en los que se encuentren las bases de datos sobre las que se desea trabajar (antes de entrar en Windows). Por tanto, y para el jemplo anterior:
DBPATH=C:\ALMACEN;C:\PERSONAL
Si no se define esta variable, el SQL asumirá como DBPATH el directorio en curso. Si se desea establecer como directorio en curso aquel donde se halle una determinada base de datos, esto se deberá specificar según se indica a continuación:
a) Bajo Windows 3.0: Con la opción «-cd directorio» al arrancar el comando ctl. Por ejemplo:
ctl -cd c:\mbdemo almacen
b) Bajo Windows 3.1: Además de la opción anterior, podrá indicarse también el «directorio de trabajo» con la opción «Propiedades» del Administrador de Programas.
Con la opción «-cd directorio» al arrancar el comando ctl. Por ejemplo:
ctl -cd c:\mbdemo almacen
Los contenidos de estas variables pueden estar definidos antes de arrancar el Windows, es decir, asignar sus valores en el fichero «AUTOEXEC.BAT», o bien indicándolo en los ficheros de configuración «MBENV», «.INI» o los lanzados con la opción «-ef» como veremos más adelante.
De la misma forma, en el momento de crear una base de datos nueva con el Entorno de Programación deberán rellenarse correctamente los directorios de la pantalla que aparecen al pulsar la secuencia de opciones «Desarrollo»−«Aplicación»−«Definir». E igualmente se deberá comprobar que los directorios indicados en la opción «Entorno» sean los correctos.
4.4. Iconizar una aplicación de usuario
Para iconizar una aplicación de usuario se deberá utilizar la opción «Nuevo» de la persiana «Archivo» del Administrador de Programas del Windows. En la línea de comando se deberá indicar el comando ctl.exe» con su «path» completo, y a continuación el nombre del menú de la aplicación que se desea ejecutar. En la versión 3.1 del Windows se podrá indicar, además, el directorio de trabajo en el que están contenidos los programas de la aplicación, tal y como se ha explicado anteriormente.
En el caso de querer introducir con la función «YES( )» textos que ocupen más de una línea, se podrán incluir «CHARACTER(10)» (saltos de línea) en el texto. Por ejemplo:
YES ( "El módulo artículos
ha sido editado, " && CHARACTER (10) &&
"pero no compilado posteriormente." && CHARACTER (10) &&
"Compilar")
Desde un programa de CTL puede ejecutarse otro programa de CTL de dos formas distintas: por medio de la instrucción CTL o por medio de la instrucción RUN. En el caso de ejecutarse por medio de la instrucción CTL, el sistema no lanzará una nueva instancia del «CTL.EXE», ejecutándose el siguiente programa en la misma ventana del Windows.
En el caso de que, por cualquier motivo, se precise lanzar una segunda instancia del programa CTL en una segunda ventana Windows, se deberá utilizar la instrucción RUN, de la misma forma que si desde un programa de CTL se desea lanzar cualquier otro programa Windows. En este caso Windows intentará lanzar una segunda instancia del comando «CTL.EXE», lo cual es imposible dadas las características del CTL.
Para resolver este problema, MultiBase ejecutará una copia del «CTL.EXE», de nombre «CTL1.EXE». De este modo, y en el caso de que el CTL necesite lanzar una segunda instancia de sí mismo, buscará el «CTL1.EXE» y lo ejecutará. Este mecanismo es capaz de lanzar hasta un total de cinco instancias del CTL, siempre que existan copias «CTL1.EXE», «CTL2.EXE», «CTL3.EXE», «CTL4.EXE» y «CTL5.EXE» del comando «CTL.EXE».
4.7. Lanzamiento de programas con «&»
Cuando se lanza un programa Windows por medio de la instrucción RUN del CTL, el programa «lanzador» quedará sin control esperando a que el programa lanzado termine su ejecución.
En caso de querer ejecutar un programa Windows desde un programa de CTL sin esperar a que finalice la ejecución del segundo, deberá añadir el carácter «&» al final de la línea de comando, es decir:
RUN "NOTEPAD.EXE &"
lanzará el programa «NOTEPAD.EXE», pero el CTL «lanzador» no quedará esperando a que el NOTEPAD finalice su ejecución.
En el caso de querer lanzar programas MS-DOS, es imposible dejar el CTL «lanzador» en espera automática.