FlagShip
El compilador de Clipper para UNIX
FlagShip es un compilador para UNIX que soporta completamente el código escrito en CA-Clipper, amplía la sintaxis de este lenguaje y ofrece las ventajas propias del código compilado en un entorno multitarea, multiusuario y con una alta conectividad como Unix. FlagShip combina lo mejor de ambos mundos: el lenguaje Clipper y el sistema operativo Unix.
REQUERIMIENTOS:
- Cualquier sistema UNIX
- Compilador de C para el sistema UNIX
¿Qué hace un experto en Clipper ante el dilema de migrar sus aplicaciones al mundo Unix? ¿Qué papel pueden jugar los programas escritos en Clipper en el mercado Unix?
Gracias a FlagShip, los programadores de Clipper, dBASE o FoxBase/FoxPro ya no necesitan aprender un nuevo sistema de gestión de bases de datos, ni descartar todo lo desarrollado hasta el momento. FlagShip posibilita la inmediata migración, ya que su compilador es completamente compatible con CA-Clipper 5.2, CA-Clipper 5.01, Summer ’87 y otros lenguajes Xbase. El mismo código, los mismos datos, el mismo aspecto y comportamiento. Sólo una cosa cambia: Unix, un sistema operativo mucho más potente.
Y no sólo eso. Muchas preocupaciones y dolores de cabeza propios del DOS desaparecen para siempre, como la limitación de memoria. Además, se abre todo un mundo con nuevas y atractivas posibilidades. Para el programador de Unix, FlagShip agiliza el desarrollo de aplicaciones de bases de datos significativamente. Diez líneas de código fuente producen cientos de líneas de código “C” libres de errores.
¿Qué es FlagShip?
Es un compilador nativo que compila completamente código Clipper en el entorno Unix. No hay pseudo-código como en Clipper, ni se trata de un intérprete, como otros sistemas Xbase. FlagShip es un compilador nativo y, como tal, optimiza tanto la velocidad como el tamaño del código generado. Con independencia de las variables polimórficas de Clipper (sin un tipo fijo), se comprueba, siempre que es posible, la existencia de conflictos y la concordancia de tipos en expresiones.
El compilador dispone de toda la información sobre las clases, objetos y métodos internos. En el momento de la compilación, comprueba que su uso sea el correcto, por lo que el ahorro de tiempo de depuración es importante.
Compilación
Es posible desarrollar directamente en FlagShip o migrar una aplicación Clipper existente a Unix. En ambos casos, lo único que se requiere son ficheros fuente .prg. Para copiar sus fuentes DOS a Unix, tanto FlagShip como Unix le ofrecen utilidades para leer disquetes DOS, transferir vía serie sus ficheros o utilizar una conexión por red.
La compilación lleva a cabo diferentes procesos. Todos ellos pueden realizarse de manera automática o selectiva:
- El código se preprocesa, como en Clipper
- A continuación se compila a lenguaje C K&R para mantener la compatibilidad con todos los sistemas
- Con el compilador C del propio Unix (forma parte de cada Unix), se compila para obtener código objeto
- Finalmente, se enlaza con la biblioteca FlagShip para obtener un ejecutable.
El ejecutable obtenido tiene el mismo aspecto y comportamiento que su aplicación equivalente en DOS. No se requieren módulos de run-time adicionales ni el pago de otras licencias, ya que puede distribuirse libremente.
Aunque es posible usar overlays, éstos no son habituales en entornos Unix. El sistema operativo se encarga de gestionar la memoria virtual de sus aplicaciones. Puede enlazar toda la aplicación en un único “gran” ejecutable y dejar que Unix haga el resto. El sistema operativo sabe qué partes de su programa debe mantener en memoria y en disco.
Aun mejor. Si varios usuarios utilizan la misma aplicación, sólo se mantiene en memoria una copia del ejecutable. Unicamente se duplica el conjunto de datos (variables) para cada usuario. Además, el sistema estándar y las bibliotecas C no se enlazan con el código, sino que se referencian dinámicamente durante la ejecución de su aplicación. Con ello, se ahorra espacio en disco y disminuye la carga general del sistema. La aplicación no está limitada por la memoria disponible, sino que puede crecer tanto como sea necesario.
El código C generado y los ficheros objeto no pueden enlazarse sin la biblioteca FlagShip, puesto que ésta contiene toda la funcionalidad del lenguaje.
Compatibilidad
El compilador y el lenguaje de FlagShip soportan:
- Todos los comandos, funciones (unas 900) y directrices de preprocesador de Clipper 5.2
- Locales, estáticas, públicas, privadas y arrays multidimensionales
- Las clases, objetos y métodos GET, TBrowse y Error, así como la API del sistema de errores
- Code blocks
- Evaluación de macros en ejecución, code blocks evaluados mediante macros y la Item API
- La API de terminal general
- La API de controladores de bases de datos sustituibles (RDD)
- La API del sistema de ficheros
- La API “Extend C”
Sólo existen dos excepciones debidas a las diferencias entre DOS y Unix:
- El comando RUN, puesto que los comandos Unix tienen un nombre y una funcionalidad diferentes
- La manipulación directa del hardware y de la pantalla, incluyendo la manipulación de pantallas guardadas en una variable.
Debe tener en cuenta estos dos aspectos y cambiar su código fuente en consecuencia.
Las extensiones de FlagShip
Si trabaja en Unix, ¿por qué no usar su potencia? FlagShip incorpora varias extensiones del lenguaje Clipper, que le permiten:
- Simplificar la migración de aplicaciones DOS
- Incrementar la velocidad de sus programas
- Definir terminales poco habituales
- Usar un spool para gestionar la impresión
- Enlazarse con otras aplicaciones
- Adaptar la aplicación al idioma de su país
- Aprovechar las utilidades del sistema Unix
Migración
En relación con su programa DOS, la principal diferencia entre DOS y Unix radica en la convención usada para los nombres de fichero. DOS no distingue el uso de minúsculas y mayúsculas en los nombres de fichero. Probablemente, usted tampoco tiene esto en cuenta en sus programas. En Unix, no obstante, este hecho sí es importante. FlagShip le ofrece una solución inmediata a este problema.
Mediante un conjunto de opciones globales, puede indicar a la API del sistema de ficheros la forma “estándar” en la que realmente aparecen los nombres de fichero en el directorio del disco. De esta forma, la API podrá determinar durante la ejecución cómo convertir el nombre del fichero para acceder al fichero solicitado. Es posible indicar si el nombre está en mayúsculas, si debe convertirse a minúsculas, la forma de traducir la extensión y la vía en que buscar para una letra de unidad. El siguiente ejemplo muestra el código que se debe utilizar:
FS_SET("lowerfiles", .T.)
FS_SET("pathlower",.T.)
FS_SET("translext",".ntx",".idx")
Todo lo que tiene que hacer es indicar unas cuantas llamadas a funciónen el módulo de arranque. También puede utilizar una sentencia #include.
#ifdef FlagShip
#include "fspreset.fh"
#endif
Velocidad
El compilador soporta todos los tipos de variables y declaradores habituales. No obstante, para incrementar la velocidad de ejecución de sus programas es posible indicar un tipo fijo para cada variable en el momento de su declaración. Esta innovación se incluirá también en CA-Visual Objects for Clipper.
Es muy habitual en los programas que cada variable tenga un uso específico. ¿Por qué no declararla entonces con un tipo determinado? Con ello, la velocidad se incrementa de forma espectacular, el compilador puede realizar un mayor número de verificaciones sobre el uso de las variables, y se mejora la legibilidad del código.
Y todo esto con un simple
LOCAL nombre_var AS tipo
STATIC nombre_var AS tipo
GLOBAL nombre_var AS tipo
GLOBAL_EXT nombre_var AS tipo
Puede indicar cualquiera de los tipos simples comunes del lenguaje C. Las variables así declaradas se usan del mismo modo que el resto de variables del programa.
Soporte de terminal
Unix permite la conexión de terminales vía líneas serie o mediante una red. FlagShip soporta las marcas de terminal más habituales a través de los ficheros de descripción que el propio programa incluye. Pero también puede definir su propio terminal específico y cambiar las preferencias sobre teclas de función y colores.
Para ello, FlagShip utiliza un interfaz independiente del terminal, de manera que el usuario puede proporcionar definiciones de terminal como ficheros fuente.
Impresión mediante spool
En DOS, normalmente dirige la impresión a un puerto de impresora. En Unix, donde varios usuarios utilizan los recursos de la máquina a la vez, tal forma de proceder daría lugar a impresiones mezcladas.
FlagShip permite el uso directo de dispositivos (equivalente a los puertos del DOS), si bien se recomienda la utilización del spooler. Para ello, se incluyen funciones que facilitan la gestión de nombres de ficheros exclusivos y del spooler de Unix.
Enlace con otras aplicaciones
¿Qué se puede hacer con el código C existente y otras aplicaciones?
Las API Open C e Inline C de FlagShip posibilitan un fácil acceso a las funciones C. No sólo esto, sino que mediante Inline C puede añadir código crítico para el rendimiento de su aplicación directamente en sus ficheros .prg. También se incluye acceso a ESQL y la posibilidad de intercambiar datos entre C y las variables de su programa, de forma simple y natural.
&& tipos de variables estándares de Clipper
STATIC pi := 3.14 && también variables tipificadas
LOCAL mivar AS double
...
mivar = pi /6.0
#Cinline
/* acceso a la biblioteca std. de C */
mivar = sin(mivar);
#endCinline
? mivar // imprime 0.50
Para pasar datos a aplicaciones externas, es posible definir “pipes” para la redirección de todas las salidas (como SET PRINTER TO) a otras aplicaciones Unix.
SET DEVICE PIPE TO otro_terminal
SET ALTERNATE PIPE TO filtro_apl
Las aplicaciones con las que se relaciona su programa se ejecutarán simultáneamente.
Internacionalización
¿Qué ocurre si el idioma que deben soportar sus aplicaciones es el castellano, francés o italiano?
FlagShip incluye ficheros fuentes con tablas para:
- Diseños de teclado
- Mapeo de caracteres de pantalla
- Orden de clasificación de los índices
- Comparaciones de cadenas
- Mensajes de las funciones de FlagShip
El mapeo de teclado y pantalla está disponible para las lenguas europeas más importantes (incluido el castellano). El orden de clasificación del índice se guarda en los ficheros de índice de FlagShip durante la creación.
La selección de un lenguaje es cuestión de una simple llamada a función en su aplicación. De igual forma, puede crear aplicaciones que soporten varios idiomas. Si desea incorporar un nuevo idioma, basta con editar un fichero de tabla.
FS_SET("loadlang", 1, "MiTablaEsp")
FS_SET("loadlang", 2, "MiTablaPor")
FS_SET("setlang", 1)
Como puede ver, el proceso es muy simple.
Acceso a Unix
Puede acceder fácilmente a todas las funciones de la biblioteca Unix mediante el comando CALL. Aquí tiene un ejemplo:
CALL chdir WITH "/mi/nuevo/dir"
El código C incluido en sus programas .prg no supone ningún problema para FlagShip.
Mediante el comando RUN puede acceder a las utilidades Unix. Y, lo que es más importante, es posible lanzar de fondo cualquier número de tareas. Estas se ejecutarán de forma simultánea con sus aplicaciones, por lo que pueden encargarse de los trabajos menos críticos.
RUN mail &user < order.txt &
Multiusuario, multitarea, conexión en red
¿Se imagina utilizar sus aplicaciones en máquinas alejadas miles de kilómetros del sitio en que se encuentra? ¿O que 20 operadores estén utilizando a la vez el mismo programa con los mismo datos en una sola máquina?
Con FlagShip y Unix todo esto es posible. Y no necesita cambiar su código. El bloqueo y uso compartido de una base de datos funciona de la misma forma que en DOS con un entorno de red. Con la diferencia de que ahora puede usar una sola máquina, o varias máquinas conectas en red, o una WAN, o incluso un módem para acceder de forma remota.
rsh -l milogin maquinasp.de MiAplicacion
ejecuta MiAplicacion bajo “milogin” en “maquinasp” desde cualquier punto del mundo con una conexión internet.
El acceso a aplicaciones vía módem no es algo nuevo en Unix. Y no necesita una máquina para cada puesto de trabajo; basta con un simple terminal.
El aspecto y comportamiento de FlagShip
¿Cómo puede un terminal mostrar las pantallas de mi aplicación? ¿Qué ocurre con las teclas de función?
FlagShip utiliza todas las posibilidades del terminal para mostrar su aplicación exactamente como se espera, haciendo uso de colores, gráficos basados en caracteres, caracteres internacionales y un teclado extendido. Todo ello, independientemente de si se trata o no de un terminal X/Windows, de si la máquina dispone de una tarjeta gráfica o de si está utilizando una emulación de terminal bajo DOS.
En el caso de terminales con prestaciones básicas, FlagShip intenta suplir sus carencias para que la aplicación funcione y pueda reconocer claramente sus pantallas.
¿Por qué FlagShip? ¿Por qué Unix?
Por si no fuera suficiente lo dicho hasta ahora, aquí tiene otras buenas razones.
FlagShip se ejecuta en Unix y le abre las puertas a este nuevo entorno. Basta con migrar las aplicaciones a Unix y empezar a aprovechar todas sus ventajas. Ni la memoria, ni el tamaño de su aplicación están limitados.
Dispone de un sistema multitarea y multiusuario. No necesita una red, ni una máquina para que cada usuario pueda ejecutar sus programas. Basta utilizar terminales. Y también puede conectarse remotamente vía red o módem.
La seguridad es también algo inherente. Sus usuarios deben registrarse en el sistema antes de acceder a las aplicaciones. Y no hablemos del mantenimiento. Las copias de seguridad se llevan a cabo de forma muy simple, y sólo es necesario mantener una versión de su programa en cada sistema.
Todo esto, invirtiendo una fracción de lo que necesitaría para montar una red bajo DOS. Unix es ya un estándar del mercado. Hoy en día, no hay ninguna máquina que no pueda ejecutar Unix. Y con la garantía de que si un usuario o aplicación causan un error, el sistema no se viene abajo.
El paquete de FlagShip
FlagShip no es sólo un compilador y una biblioteca. El programa incluye utilidades para:
- Simplificar la tarea de migración del código
- Copiar el código y los datos en Unix
- Depurar
- Definir y probar sus terminales
Incorpora también tablas para cada país y documentación en línea y escrita (unas 1200 páginas).
¿Cómo desarrollar con FlagShip?
FlagShip no es sólo una herramienta para la migración. El programa dispone de un lenguaje propio y de un completo sistema de desarrollo. El hecho de que soporte la definición que hace Clipper del estándar Xbase es, evidentemente, una enorme ventaja, pero esto no lo es todo en FlagShip.
Unix dispone de avanzadas utilidades para mantener versiones del código fuente (sccs), crear archivos make y gestionar el desarrollo.
Para la depuración, FlagShip incluye un depurador en línea con toda la funcionalidad necesaria para analizar y corregir su código fuente. Además, Unix incorpora también varios depuradores de bajo nivel.
FlagShip no le liga a un entorno de desarrollo particular. Gracias a la definición automática de la constante y de la variable pública “FlagShip”, puede utilizar un único conjunto de fuentes para los entornos Unix y DOS. Por ejemplo, para CA-Clipper 5.x:
#ifdef FlagShip
RUN ls -l *.*
#else
RUN DIR *.*
#endif
y para Clipper ’87, dBase o Fox:
PUBLIC FLAGSHIP, CLIPPER
if FLAGSHIP
? "Aplicación FlagShip"
elseif CLIPPER
? "Aplicación Clipper"
else
? "Aplicación PC"
endif
El código es portable y compatible con DOS y Unix.
Ejecución de FlagShip
Para compilar con FlagShip, no necesita un fichero .clp. Tampoco ha de preocuparse por el tipo de enlazador que es necesario utilizar, ni por la forma en que hay que enlazar el programa. Por ejemplo:
FlagShip miapl.prg xyz*.prg -omiapl -Mstart
compila miapl.prg, junto con todos los ficheros xyz*.prg y sus módulos dependientes, enlaza la aplicación y le da el nombre miapl. Las sentencias equivalentes en DOS serían:
CLIPPER miapl
CLIPPER @xyz.clp
RTLINK FI miapl, xyz OUT miapl
Su aplicación comenzará la ejecución a partir del procedimiento o función “start”.
El futuro de FlagShip
FlagShip continúa desarrollándose. A continuación, se indican algunas de las innovaciones previstas para versiones futuras:
- Un completo entorno gráfico basado en X/Windows
- Controladores de bases de datos sustituibles para la mayoría de formatos de fichero conocidos, incluyendo mecanismos de bloqueo
- Acceso a sistemas SQL
- Proceso de transacciones
- Compatibilidad con CA-Visual Objects
FlagShip va a evolucionar hacia X/Windows. Soportará comandos FoxPro para una mayor facilidad de uso. Ofrecerá compatibilidad con CA-Clipper 5.3. Incluirá objetos de CA-Visual Objects y otras mejoras. Todo ello para convertirlo en la más completa solución de desarrollo Xbase en entornos Unix.
La utilización de sistemas operativos heterogéneos y de diferentes entornos de base de datos mediante tecnología RDD es otro de los objetivos a cubrir. También es prioritario el acceso SQL y la posibilidad de compartir los mismos datos desde DOS y Unix simultáneamente.
El proceso de transacciones robustecerá aún más los sistemas de bases de datos. Y, de paso, ofrecerá compatibilidad con dBase IV.
Conclusión
FlagShip constituye la mejor alternativa para migrar Clipper a Unix. ¿Por qué?
Dispone de un entorno de trabajo familiar con una potencia inimaginable hasta ahora. No necesita aprender nuevos lenguajes ni reprogramar sus aplicaciones. Y puede mejorarlas de forma progresiva. Si conoce CA-Clipper, dBASE o Fox, ya conoce FlagShip.
FlagShip combina la tecnología de un compilador avanzado, CA-Clipper, con uno de los sistemas operativos estándares del mercado, Unix. Son dos mundos que, con el paso de los años, han alcanzado su plena madurez y que ahora se unen para ofrecer lo mejor de ellos.
Temas relacionados |
---|
El CD de FlagShip (demos, versión personal gratis, herramientas,...) |
ACCIONES |
---|
Imprimir página |
Precios |