23 junio 2000

ANTECEDENTES DEL PROGRAMA CREA

ANTECEDENTES DE LA CREACION DEL PROGRAMA
PARA INSTALACIÓN DISTRIBUÍDA DE BASES DE DATOS
EN CDS/ISIS DE UNESCO
CREA.PAS


Utilizando una aplicación desarrollada por ISISTEC, Empresa Argentina que desarrolló el programa PRESTA, me encontré con un ejecutable en Isis Pascal (STUP.PCD), vinculado al archivo CREA.BAT:

@echo off
echo 1=%1\ >> %2.par
echo 2=%1\ >> %2.par
echo 3=%1\ >> %2.par
echo 4=%1\ >> %2.par
echo 5=%1\ >> %2.par
echo 6=%1\ >> %2.par
echo 7=%1\ >> %2.par
echo 8=%1\ >> %2.par
echo 9=%1\ >> %2.par
echo 10=%1\ >> %2.par

Este archivo crea el Archivo Nombre de la Base de Datos PAR (BD.PAR), escribiendo el indicador de línea (1=, a 10=) y tomando el primer parámetro que entrega el archivo PCD (%1) que corresponde a la ruta de la base de datos, agregando la barra de cierre (\), y que almacena en el archivo de texto Nombre de la Base de Datos PAR, luego toma el segundo parámetro con el nombre de la base de datos (%2), agregando la extensión PAR.

La creación de este archivo se realiza en el directorio de las bases de datos (DATA), y su función es sólo de direccionamiento de la base de datos dada en ese directorio, no teniendo por función una instalación distribuída de la misma. es decir en su directorio específico, derivado jerárquicamente del directorio de Bases de Datos, asignado por el parámetro 5=, del SYSPAR.PAR (Normalmente DATA).

ESTRUCTURA DE BASES DE DATOS NO DISTRIBUIDAS (Gráf.1)





ESTRUCTURA DE BASES DE DATOS DISTRIBUÍDAS (Gráf.2)


1. El primer paso, consistió en crear un programa en ISIS Pascal, que pudiera ejecutar este archivo BAT:

PROGRAM CREA (s: string) [MENU]; {indicador de que puede ser ejecutado desde} {una opción de Menu}

VAR ruta, nombd: string; {variables de cadena de caracteres}

BEGIN {Instrucción de inicio del programa}
nombd:=dbn; {asignación del nombre de la BD a la variable}
ruta:=PATH('dbn',1); {asignación de la ruta de la base a la variable}
system('CREA 'ruta' 'nombd); {Ejecución en DOS del programa CREA} {traspasando los parámetros ruta y nombre de} {la base}
s:=''; {cierre del programa y regreso al MENU ISIS}
END. {Instrucción de fin del programa}

Este programa tenía la limitación de que había que trasladar el archivo Nombre de la Base de Datos PAR creado, al directorio de Bases de Datos (Parámetro 5 del SYSPAR), porque el archivo PAR era creado en el directorio de trabajo (Parámetro 4 del SYSPAR), normalmente el directorio ISIS, y además, había que crear el directorio específico de la base de datos, y luego trasladar los archivos de la base de datos a su nuevo directorio, al cual direccionaba el archivo PAR creado.

2. Sin embargo, la solución a las limitaciones vendría después de crear un formato en WINISIS, que hiciera las funciones equivalentes a este programa en ISIS Pascal.

Para ello, diseñamos un formato sencillo, que debe copiarse a la base de datos que se quiere instalar de forma distribuída:

s0:=(db) {asigna nombre de la base a la variable s0}
s1:=(' \\ISIS\\DATA\\'s0,' ',s0) {asigna ruta y nombre de la base a variable s1}
QC,/#### {Centra el texto, cambia de línea, dejando 4 en} {blanco}
link(('Crear archivo PAR y Directorio de la Base de Datos'),'CMD C:\\WINISIS\\CREA.BAT's1) {Crea enlace con el mensaje "Crear archivo..."}
{y ejecuta con el comando CMD, dando la ruta}
{de ubicación del archivo CREA.BAT, los {parámetros almacenados en la variable s1}

3. El primer intento de solución para este problema, fue el de modificar el archivo CREA.BAT, para que además creara el Directorio de la Base de Datos y trasladara sus archivos del directorio de las Bases de Datos (Normalmente DATA, pero en el ejemplo BASES), al directorio específico de la Base de Datos:

@echo off
echo 1=%1\ >> %2.par
echo 2=%1\ >> %2.par
echo 3=%1\ >> %2.par
echo 4=%1\ >> %2.par
echo 5=%1\ >> %2.par
echo 6=%1\ >> %2.par
echo 7=%1\ >> %2.par
echo 8=%1\ >> %2.par
echo 9=%1\ >> %2.par
echo 10=%1\ >> %2.par

MD %1 {Crea el directorio con el nombre de la base}
MOVE ?%2.FMT %1 {Traslada la(s) hoja(s) de trabajo al directorio de la base}
MOVE %1.FDT %1 {Traslada la FDT al directorio de la base}
MOVE %1.PFT %1 {Traslada el PFT al directorio de la base}
MOVE %1.FST %1 {Traslada la FST al directorio de la base}
MOVE %1.VAL %1 {Traslada el VAL al directorio de la base}
MOVE %1.XRF %1 etc.
MOVE %1.MST %1
MOVE %1.CNT %1
MOVE %1.L01 %1
MOVE %1.L02 %1
MOVE %1.N01 %1

Como se puede apreciar, se incluyeron los comandos para crear el directorio (MD %1) y los de trasladar los archivos (MOVE...).

Sin embargo, seguía existiendo la limitación de tener que instalar y utilizar un archivo externo (CREA.BAT), vinculado al formato, y tener que copiar este formato en cada base de datos creada o existente para su instalación distribuída.

4. Buscamos la solución en ISIS Pascal, perfeccionando el archivo CREA.PAS:

PROGRAM CREA(s:string)[MENU];
{PROGRAMA QUE CREA ARCHIVO DBN.PAR DE LA BASE DE DATOS EN USO}
{EL DIRECTORIO DE LA BASE DE DATOS, Y TRASLADA SUS ARCHIVOS A}
{ESTE DIRECTORIO ESPECÍFICO}

{AUTOR: HUGO RUEDA VILDOSO}
{FECHA: 6-9/6/2000}
{FONO-FAX: (56-2) 356 91 18}
{Correo 58, Casilla 72, Santiago de Chile}
{E-mail: hrueda@vtr.net}

VAR bd,rutadbn: string;

PROCEDURE BDPAR; {Procedimiento que crea Archivo DBN.PAR}
VAR archpar,cierra,camino: string;
numlin: real;

BEGIN
bd:=dbn;
numlin:=1; {variable numérica que almacena el primer número de línea (1 a 10)}
{del Archivo DBN.PAR}
archpar:=(DBN'.par'); {variable de cadena que almacena nombre y extensión}
camino:=PATH('DBN',1); {variable que almacena la ruta del DBN.PAR}
ASSIGN('OUT',caminoarchpar); {Abre archivo con el nombre DBN.PAR}
REPEAT {Inicia proceso repetitivo que itera y culmina con UNTIL}
WRITELN(OUT,ENCINT(numlin,1)'='caminodbn'\'); {Escribe línea de texto con nú-}
{mero de línea, signo igual y ruta del archivo DBN.PAR, con salto de línea}
numlin:=numlin+1; {variable numérica que incrementa el número de línea en 1}
UNTIL numlin>10; {repite iteración hasta que el número de línea supera 10}
cierra:='';
END;

PROCEDURE BORRA; {Procedimiento para borrar los archivos remanentes que} {quedan en el directorio de la base de datos, pero que ya} {están en el directorio de la base de datos}

BEGIN

SYSTEM('DEL 'PATH('SYS',5)DBN'.*'); {Borra los archivos remanentes}
CLOSE; {Cierra la base de datos}
END; {Fin del procedimiento}

BEGIN {Inicio del Programa Principal}
rutadbn:=PATH('dbn',1); {Asigna la dirección de la base de datos a la variable}
system('md 'rutadbndbn); {Crea el Directorio con el Nombre de la Base de Datos}
WRITELN('RUTA DEL DIRECTORIO: 'rutadbndbn); {Muestra la ruta del directorio}
system('move 'PATH('SYS',5)'?'dbn'.FMT 'rutadbndbn); {Mueve la(s) hoja(s) de}
{trabajo al directorio de la base de datos recien creado}
WRITELN('RUTA DE TRASLADO DE ARCHIVOS: 'rutadbnDBN'.* 'DBN);
system('move 'PATH('SYS',5)dbn'.* 'rutadbndbn); {Mueve el resto de los archivos}
{al directorio de la base de datos}
BDPAR; {Ejecuta el Procedimiento que crea el archivo DBN.PAR}
CLOSE; {Cierra la Base de Datos}
OPEN(bd); {Abre nuevamente la base para grabar en memoria la nueva ruta de la} {base de acuerdo al archivo NBD.PAR}
BORRA; {Ejecuta el procedimiento que borra los archivos remanentes}
s:='' {Cierra el programa para regresar al Menu o a la opción de Programa (A)}
END. {Fin del programa}

Las condiciones de ejecución de este programa son las siguientes:

  1. Debe ejecutarse en la versión ISIS para DOS, ya sea en la opción A de Programación Avanzada del Menu Principal, o desde una opción habilitada de Menu, que debe ser el de Definición de las Bases de Datos (?XDEF), preferentemente. Se debe tener presente que en la versión para Windows (WINISIS), esta función no es necesaria al crear una nueva Base de Datos, pues basta con indicar la ruta (Path) y nombre de la Base. En caso de no existir el directorio, Winisis lo crea, así como el archivo DBN.PAR correspondiente.

  1. Si se ejecuta con bases de datos creadas con anterioridad y no de forma inmediata, se debe tener el cuidado de trasladar todos los archivos que no tengan el nombre estándar (que no coincidan con el nombre de la base de datos), al nuevo directorio, pues el programa sólo trasladará aquellos archivos que coinciden con el nombre de la base de datos, dejando los demás en el directorio de las bases de datos (habitualmente DATA).

  1. Por la razón anterior, se recomienda realizar la instalación distribuída de la base de forma inmediata a su creación, aunque no se descarta la ejecución diferida del programa como se señala en el punto 2.

La instalación distribuída de las bases de datos, tiene la ventaja que permite una mejor administración de los archivos, posibilitando su localización rápida e inequívoca, utilizar formatos, tablas, hojas de trabajo, con el mismo nombre para distintas bases, etc. Este programa permitirá a muchos usuarios realizar esta instalación sin esfuerzo ni errores, divúlguelo en su esfera de contactos.

Con la finalidad de facilitar el trabajo de los usuarios, este programa se distribuye con el archivo ASXDEF.FMT (Menú de Definición de la Base de Datos, en español, de la versión 3.x de CDS/ISIS para DOS), con la opción incluída, por lo que bastará instalarlo en el directorio MENU sobreescribiendo el archivo ya existente.

Cualquier consulta, dirigirse a las direcciones indicadas en el encabezamiento del programa.

1 comentario:

HugoRueda dijo...

Habría que señalar, que este poblema fue resuelto en Winisis, donde en el momento de crear la base de datos, si se especifica la ruta o path, Winisis crea automáticamente el archivo PAR de la Base de Datos creada.