Sección Principal

 

Secciones

Principal

Descargas

Debates y Votaciones

Índice general 

Introducción

Hola a todos, una vez mas los invito a participar en este sector, en esta ocasión de un proyecto nuevo, algo nunca antes visto, o mas o menos.
Sin demasiadas vueltas iré al grano, en mis años de programador Clipper he necesitado de un interprete de comandos que me permita fácil y rápidamente hacer modificaciones en bases de datos, relacionar bases y generar nuevas de manera práctica, ágil, efectiva y conveniente. Como muchos de ustedes en un principio me basé en el dBase, mas tarde en el Fox y DBU, si bien estos programas cumplen en un alto porcentaje mis requerimientos no lo han hecho por completo.
¿Cuantas veces el Fox ó el dBase nos sacó las papas del fuego a la hora de tener que relacionar dos bases de datos y reemplazar un campo de una con el valor de otro campo de la otra, o a la hora de modificar la estructura de una base de datos?
¿Pero también cuantas veces necesitamos generar un índice y tenemos que hacer un programa a las apuradas para que lo haga, o actualizar una base de datos que tiene índices abiertos o tantas otras cosas que no hemos podido hacer con Fox o dBase?
Fue cuando se me ocurrió hacer un interprete de comandos en Clipper 5.3 que maneje varios RDD's, que tenga el poder y la versatilidad del Fox sumado a la velocidad y compatibilidad de Clipper.
Antes de comenzar me cercioré que nadie haya hecho algo parecido anteriormente y me encontré con un utilitario hecho en Clipper llamado "DOT".
Por un momento pensé que eso es lo que estaba buscando, pero después de probarlo, leer el código, analizarlo fríamente y conversar con otros programadores llegué a una conclusión.
El "DOT" es un programa decadente, lejos de demostrar el potencial de Clipper lo hace quedar mal, extremadamente limitado en sus comandos y con un código muy mal estructurado.
En ese momento decidí comenzar a hacer un nuevo interprete de comandos Clipper, de código abierto, para que todos los programadores puedan participar en el, sin licencias ni Copyright para que sea distribuido libremente.
Aquí presento el código de punto de partida, por ahora el CCI (Clipper Command Interpreter) solo soporta tres comandos:

Cls, Clear - Borrar la pantalla
Ver, Vesion - Muestra el número de versión
Quit, Exit - Sale del programa

Y posee un manejador de errores propio bastante completo el cual genera y muestra un mensaje de error solicitando al usuario lo informe a la dirección de e-mail del sector, de esta manera podré recurrir al creador del módulo que falle para comentárselo y proponer posibles soluciones.

Hasta el momento solo son 5 archivos:

CCI.RMK
CCI.LNK

Para compilarlo con Rmake, está configurado para el uso de Exospace y Optedit, encontré a este linkeditor como el mejor para este tipo de proyectos, igualmente el programador que quiera utilizar otro linkeditor puede hacerlo libremente ya que los aportes al proyecto serán en código fuente.

CCI.PRG
Es el archivo principal donde se define todo el entorno, variables, seteos, etcétera, donde se encuentra el bucle principal de ejecución y desde donde se llama al "Core" (núcleo) de ejecución o sea el verdadero interprete de comandos.
En este procedimiento se encuentra el manejo de la pantalla, el control de entrada y los "scrolls".
Solo permite bajar hasta dos filas antes del final de la pantalla, para dejar las dos últimas filas libres para poner una barra de estado.

NUCLEO.PRG
Es el verdadero interprete, donde es interpretada la cadena que forma el interprete de comandos y desde donde se llaman a todas las funciones.
Las mismas deberían estar en este programa o en otro, por el momento las 3 que hay se encuentran en el CCI.PRG aunque pienso cambiar esto.

CCIERR.PRG
Es el manejador de errores internos, simple, práctico y efectivo, si se produce un error interno lo muestra mediante la función Alert().
No debe ser utilizado para otra cosa que no sea el manejo de errores internos, otro tipo de errores deberán ser interpretados por el núcleo de ejecución

Bájate el archivo :
CCI.ZIP (3 Kb) conteniendo estos 5 Archivos.


Conceptos básicos

La idea en general es crear un interprete de comandos que sea para el usuario tan común como lo es programar en Clipper, gracias a que por el momento no podrán ser ejecutados bucles de ningún tipo la tarea me parece ardua pero abordable.

Ya posee una rutina que compara la sintaxis de los comandos como lo hace Clipper, es decir uno puede escribir las primeras cuatro letras de un comando, el comando completo o bien las letras que uno quiera hasta llegar al comando completo, por ejemplo el comando VERSION (propio de CCI) que muestra la versión del CCI, será interpretado de igual manera si se ingresa VERS, VERSI, VERSIO o VERSION.
También le agregué la opción en este comando en particular una sintaxis corta "VER" para hacer su uso mas natural.

Ya que menciono el tema de versiones, mientras se encuentre en etapa de desarrollo no incrementaremos el número de versión utilizaremos la fecha de modificación para distinguir cuales serán los mas nuevos.

Tengo pensado publicar absolutamente todo el código que se me envíe, yo no soy el líder del proyecto, este proyecto es de todos, por lo que cada vez que se envíe un módulo yo lo publicaré, cuando haya dos módulos, funciones, etcétera que cumplan la misma función será elegido por votación abierta en estas mismas páginas, todos podrán votar el módulo que decidan es el que debe formar parte de CCI.

Además de código serán aceptadas ideas, como la que a continuación propongo, y también cuando haya dos ideas que se contradigan serán publicadas y debatidas por votación abierta.

Idea(1) : Barra de estado.
Fox contiene una muy práctica barra de estado, en ella muestra la letra de unidad, la base en uso en el área de trabajo actual, el número de registro, el total de registros de la base y algunos datos mas.
Para esto reserva 3 líneas, una para la barra (22) y dos mas (23 y 24) para información miscelánea.
Yo reservé dos líneas (23 y 24) para informar el estado, y mi idea es la siguiente:
La letra de unidad y el Path lo podemos mostrar directamente en el "Prompt", ya que a diferencia de Fox, dBase o DOT, nuestra línea de comandos se mueve, dándole un aspecto mas natural al programa, por lo que un "Prompt" similar al DOS no quedará nada mal.
Los errores e información miscelánea pueden ser mostrados directamente debajo de la línea de comandos, como lo hace el DOS, para lo que se podrán agregar funciones que muestren el estado de las áreas de trabajo, índices, bases de datos y relaciones.
La barra de estado, estará compuesta por número y nombre del área de trabajo en uso, registro / cantidad de registros en la base, cantidad de índices abiertos en el área y fecha actual.
Y la última línea (información miscelánea) servirá para informar por ejemplo la cantidad de registros indexados hasta el momento, junto con el porcentaje del total y el tiempo estimado remanente de la operación.

Votar a favor de esta idea
Votar en contra de esta idea

Cuando una idea, módulo, programa, etc. alcance un voto mas que su competidor será implementada automáticamente y se publicará una nueva versión (que por el momento seguirá siendo 1.0, y se distinguirá por la fecha).
El proyecto en la página.

Tiene 3 sectores:

Este que habla de la idea principal.
La sección de descargas donde se puede bajar la última versión o todos y cada uno de los módulos que me fueron enviados.
Y la sección de debates y votaciones donde aparecerán todos los módulos, ideas, etc. que tengan el mismo objetivo pero que se contradigan de alguna manera, por ejemplo si Juan Perez de Argentina me envía un código fuente que realiza la función del comando DIR y José Gonzalez de España también me envía un código que cumple el mismo objetivo en el sector de debates y votaciones aparecerán ambos códigos y cualquiera que lo desee podrá votar a favor o en contra para elegir el programa que considera es mejor o mas aplicable.

Bueno, espero como siempre su colaboración, personalmente creo que este proyecto será muy útil y tendrá un alto impacto en el mercado similar al excelente PROMETHEUS DataBase Workshop IDE (
http://www.dbwide.com.ar) que funciona en entorno Windows.

Hasta siempre y gracias.

Esta sección sobre CA-Clipper está coordinada íntegramente por Diego Lucio D'Onofrio


la Luna del Guille o... el Guille que está en la Luna... tanto monta...

Estadísticas desde el 01/Nov/2002 23:15