Informix-4GL es un lenguaje de programación 4GL desarrollado por Informix a mediados de la década de 1980. [ 2 ] [ 3 ] [ 4 ] En el momento de su lanzamiento inicial en 1986, las plataformas compatibles incluían Microsoft Xenix (en IBM PC AT ), DEC Ultrix (ejecutándose en Microvax II , VAX-11/750 , VAX-11/785 , VAX 8600 ), Altos 2086 , AT&T 3B2 , AT&T 3B5, AT&T 3B20 y AT&T Unix PC . [ 2 ]
Historia
Orígenes
Informix-4GL (I-4GL) es un lenguaje de programación de cuarta generación ( 4GL , de ahí su nombre), desarrollado por Informix Corporation a mediados de la década de 1980, como una evolución de su anterior conjunto de herramientas Informix SQL (ISQL), lanzado en 1984 para aplicaciones basadas en caracteres. Fue diseñado específicamente para el desarrollo rápido de aplicaciones empresariales del lado del cliente conectadas a bases de datos relacionales como Informix .
El desarrollo de Informix-4GL comenzó en 1985 en Informix Corporation, que entonces operaba como Relational Database Systems, bajo el liderazgo del arquitecto jefe Chris Maloney y Roy Harrington. El lenguaje evolucionó a partir de ISQL, integrando las capacidades de formularios (Perform) e informes (Ace) de ISQL con extensiones procedimentales adicionales para personalización, validación y navegación.
Además, Informix Corporation incluyó herramientas CASE complementarias de FourGen Software Technologies, Inc. ("FOURGEN"), fundada en 1983 en Seattle, para dar soporte al desarrollo rápido de aplicaciones (RAD) con Informix y las bases de datos IBM Db2 . Comercializadas hasta 1996 como componentes "Forms" y "Menu", estas herramientas ampliaron las capacidades de Informix-4GL para el diseño y la navegación de pantallas. En 1995, FourGen cambió su enfoque estratégico hacia las soluciones de sistemas de gestión documental (DMS) empresariales, y la empresa experimentó una serie de transiciones corporativas —convirtiéndose en Endura Software Corporation, fusionándose con HK Systems, Inc. y posteriormente pasando a ser Irista, Inc.— antes de que sus activos financieros y de gestión documental, incluida la propiedad intelectual de FourGen, fueran adquiridos por Gillani, Inc. en 2002. [ 5 ]
Las mejoras de Informix-4GL en las décadas de 1990 y 2000 añadieron compatibilidad con ANSI SQL, manejo de transacciones (por ejemplo, niveles de aislamiento como READ COMMITTED), portabilidad multiplataforma a Windows, Linux y AIX, e integración con ESQL/C para incrustar SQL en código C. [ 6 ]
Adquisición de IBM
Tras la adquisición de Informix por parte de IBM en 2001 por 1.000 millones de dólares [ 7 ] , I-4GL pasó a llamarse IBM Informix-4GL y se integró en el ecosistema Informix más amplio, dando soporte a versiones de Informix Dynamic Server (IDS) hasta la 12.10.
A mediados de la década de 2000, IBM posicionó Informix-4GL como una herramienta heredada para la modernización, recomendando la migración a Enterprise Generation Language (EGL) dentro de Rational Software Development Platform para aplicaciones web compatibles con J2EE , abordando limitaciones como las interfaces de usuario solo de caracteres y la fuerte dependencia de Informix. [ 6 ]
A pesar de su antigüedad, Informix-4GL se sigue utilizando ampliamente para desarrollar aplicaciones empresariales, y aún existe un mercado considerable a su alrededor debido a su popularidad. [ 8 ] Dado que la contabilidad es una actividad inherentemente basada en texto, a menudo se elige por su interfaz puramente textual para optimizar la eficiencia de la entrada de datos. Estas herramientas están disponibles actualmente en las principales variantes de los sistemas operativos Unix , Red Hat Linux y SUSE Linux .
Historia reciente
En abril de 2017, IBM firmó un acuerdo con HCL Technologies , delegando el desarrollo, las ventas y el soporte de los productos Informix, incluido 4GL, a HCL mientras continuaba comercializándolo como IBM Informix, con varios empleados de IBM que trabajaban en Informix pasando a formar parte de HCL. [ 9 ]
Con la adquisición de Actian , ahora la División de Datos de HCLSoftware, por parte de HCL en 2021 [ 10 ] , se hizo responsable de la comercialización de la marca de productos HCL Informix dentro del grupo HCL, que incluye HCL Informix 4GL.
Descripción
Informix-4GL incluye SQL integrado , un lenguaje de escritura de informes, un lenguaje de formularios y un conjunto limitado de capacidades imperativas (funciones, sentencias if y while, matrices, etc.). [ 11 ] El lenguaje es particularmente cercano a un lenguaje natural y es fácil de aprender y usar. Form Painter , Screen Code Generator , Report Code Generator ( Featurizer ) permitieron agregar lógica de negocio personalizada. También tenía, como componentes adicionales, un sistema de menús y una interfaz gráfica de usuario (GUI) de front-end llamada Generator .
Históricamente, la cartera de lenguajes de cuarta generación (4GL) se divide en dos líneas principales: el modelo basado en el compilador C (aplicaciones compiladas) y el modelo del Sistema de Desarrollo Rápido (RDS) (aplicaciones interpretadas/en código P), y ambas opciones cuentan con componentes complementarios, como un depurador interactivo para terminales tontas y herramientas de conectividad SQL/bases de datos.
Compilador C de Informix-4GL
El compilador de C utiliza un preprocesador para generar el código fuente INFORMIX-ESQL/C. Este código se preprocesa a su vez para producir código fuente C, que luego se compila y enlaza como código objeto en un archivo de comandos ejecutable. [ 12 ]
Está diseñado específicamente para ejecutarse como cliente en una red, conectado a un servicio de motor de base de datos Informix . Dispone de un mecanismo para llamar a funciones de C y, a la inversa, para ser llamado desde la ejecución de programas en C. Las aplicaciones compiladas mediante el compilador de C se ejecutan más rápido, pero la compilación es más lenta, los ejecutables son más grandes y pueden no ser tan portátiles como las aplicaciones compiladas mediante RDS.
La siguiente lista detalla los pasos realizados al generar un ejecutable a través del compilador C de Informix-4GL. [ 13 ]
- El código fuente 4GL se convierte en sentencias ESQL/C, produciendo un
.ecarchivo SQL incrustado correspondiente. - El código ESQL/C se convierte al lenguaje de programación C , produciendo un
.carchivo C estándar ( ). - El compilador de C procesa el código C, generando un
.oarchivo objeto ( ). - El enlazador enlaza los archivos objeto junto con todas las bibliotecas apropiadas (
.aarchivos) y crea el programa ejecutable real, que normalmente tiene una.4geextensión.
Sistema de gestión de registros Informix-4GL
El sistema de desarrollo rápido (RDS) Informix-4GL utiliza un compilador para producir código de bytes intermedio, o pseudocódigo máquina (llamado p-code), en un solo paso, que luego es ejecutado por un intérprete . [ 12 ]
A diferencia del compilador Informix-4GL C, omite los pasos 2 a 4 de la lista anterior, procesando directamente el código 4GL y generando un archivo p-code ( .4goo .4gi, dependiendo de cómo se compile el programa), que luego puede ser ejecutado por el intérprete o depurado por el depurador [ 13 ].
Una característica particular es la exhaustiva comprobación de errores integrada en el ejecutable final y los mensajes de error sumamente útiles que generan tanto el compilador como el ejecutable. También incluye instrucciones modales integradas para modificar el comportamiento del compilador y del ejecutable (por ejemplo, para que el compilador incluya estructuras de memoria que coincidan con las estructuras y elementos del esquema de la base de datos, o para que continúe la ejecución a pesar de las condiciones de error, que pueden ser capturadas posteriormente).
Referencias de Informix-4GL
Tras distinguir entre los dos enfoques principales —el compilador C y RDS—, la línea de productos Informix-4GL se organiza en un conjunto de SKU que implementan cada modelo. Ambas versiones suelen ofrecerse en ediciones para desarrolladores y de tiempo de ejecución, con componentes de soporte adicionales como herramientas de depuración y módulos de conectividad SQL. En conjunto, estos SKU cubren el ciclo de vida completo de las aplicaciones Informix-4GL, desde el desarrollo hasta la implementación y la ejecución.
La siguiente lista resume las principales referencias de productos Informix-4GL disponibles en la actualidad y su propósito principal:
- Compilador Informix 4GL C – Edición para desarrolladores : Entorno completo para el desarrollo de aplicaciones 4GL compiladas en C. Permite escribir, compilar, probar y empaquetar programas para producción.
- Compilador Informix 4GL C – Edición de ejecución : Licencia centrada únicamente en la ejecución de aplicaciones 4GL ya compiladas. Se utiliza en producción; no incluye herramientas de desarrollo.
- Sistema de Desarrollo Rápido (RDS) de Informix 4GL – Edición para Desarrolladores : Plataforma RAD para la creación de aplicaciones 4GL interpretadas (código P), incluyendo formularios, menús y lógica de negocio. Centrada en el desarrollo rápido.
- Sistema de Desarrollo Rápido (RDS) Informix 4GL – Edición de Tiempo de Ejecución : Entorno de ejecución para aplicaciones generadas en RDS. Permite ejecutar programas interpretados en producción, sin necesidad de recursos de desarrollo.
- Depurador interactivo Informix 4GL : Herramienta de depuración para aplicaciones 4GL (tanto compiladoras C como RDS). Admite análisis de ejecución, variables y flujo del programa.
- Componentes de soporte para SQL/bases de datos de Informix 4GL : Componentes que admiten la conectividad y la ejecución de comandos SQL en aplicaciones 4GL, integrando el entorno de ejecución con la base de datos Informix.
Sintaxis de Informix-4GL
Informix-4GL utiliza una sintaxis procedimental y orientada a los negocios, diseñada para el desarrollo rápido de aplicaciones de bases de datos. El lenguaje integra sentencias SQL directamente en la lógica del programa y proporciona estructuras integradas para formularios, informes y gestión de transacciones. Su sintaxis es intencionadamente legible y cercana al lenguaje natural, lo que refleja su enfoque en los flujos de trabajo empresariales en lugar de la programación de bajo nivel.
En general, la sintaxis de Informix-4GL hace hincapié en la estrecha integración con la base de datos, la lógica procedimental estructurada y la compatibilidad integrada con la interacción del usuario, lo que permite el rápido desarrollo de aplicaciones empresariales centradas en los datos.
Un programa típico de Informix-4GL se estructura en torno a la función principal (MAIN), bloques de funciones e instrucciones de interacción con la base de datos.
Ejemplo de "¡Hola, mundo!"
Un ejemplo de programa "Hola, mundo" en Informix-4GL:
PRINCIPAL MOSTRAR "¡Hola, Informix 4GL!" FIN PRINCIPAL Suponiendo que el código se encuentre en un hello.4glarchivo, a continuación se detallan las instrucciones paso a paso para compilarlo y ejecutarlo utilizando el compilador C de Informix-4GL.
% c4gl -o hello.4ge hello.4gl % hello.4ge ¡Hola, Informix 4GL!Variables y flujo de control
Informix-4GL proporciona un amplio conjunto de tipos de datos integrados para el manejo de datos empresariales y los integra con estructuras de control de flujo estructuradas. Las variables se declaran mediante la DEFINEinstrucción y la lógica del programa se expresa a través de elementos procedimentales legibles como IF, CASE, WHILE, y FOREACH. El código C compilado de Informix-4GL no inicializa automáticamente ninguna variable, mientras que el código p inicializa todas las variables definidas localmente a 0. [ 13 ]
### Variables globales ### GLOBALS DEFINE order_id INTEGER END GLOBALSPRINCIPAL ### Variables locales ### -- Tipos numéricos DEFINE cantidad SMALLINT DEFINE cantidad_total DECIMAL ( 12 , 2 ) DEFINE tasa_descuento FLOAT-- Tipos de caracteres DEFINE cust_name CHAR ( 30 ) DEFINE address VARCHAR ( 100 )-- Tipos de fecha y hora DEFINIR fecha_pedido FECHA DEFINIR fecha_creado FECHA Y HORA AÑO A SEGUNDO DEFINIR duración INTERVALO HORA A MINUTO-- Uso lógico/de indicadores (normalmente SMALLINT) DEFINE is_active SMALLINT-- Registro (tipo estructurado) DEFINIR cliente REGISTRO customer_id ENTERO , nombre CHAR ( 30 ), apellido CHAR ( 30 ), límite_crédito DECIMAL ( 10 , 2 ) FIN REGISTRO### Asignación de variables ### LET cust_name = "John Doe" LET quantity = 5 LET total_amount = 250.00 LET order_date = HOY LET created_at = AÑO ACTUAL A SEGUNDO LET duration = INTERVAL ( 2 ) HORA A MINUTO LET is_active = 1### Ejemplo de flujo de control ### SI total_amount > 100 ENTONCES MOSTRAR cust_name , "Apto para descuento." FIN SI SI total_amount <= 100 ENTONCES MOSTRAR cust_name , "Se aplican precios estándar." FIN SI FIN PRINCIPALSQL incrustado
Informix 4GL admite SQL integrado para la interacción directa con la base de datos.
Almacenes de bases de datosPRINCIPAL DEFINIR cust_id ENTERO DEFINIR cust_name CARÁCTER ( 30 )SELECCIONAR customer_num , fname EN cust_id , cust_name DE customer DONDE customer_num = 101MOSTRAR cust_id , cust_name FIN PRINCIPALEjemplo de cursor
PRINCIPAL DEFINIR cust_id ENTERO DEFINIR cust_name CARÁCTER ( 30 )Almacenes de bases de datosDECLARE c1 CURSOR FOR SELECT customer_num , fname FROM customerPARA CADA c1 EN cust_id , cust_name MOSTRAR cust_id , cust_name FIN PARA CADA FIN PRINCIPALFunciones
En Informix-4GL, las funciones encapsulan lógica reutilizable y pueden aceptar variables de entrada (parámetros), con valores asociados que se devuelven a la función que las invocó (valores de retorno). También pueden invocarse sin asignar un valor de retorno cuando se utilizan para operaciones procedimentales como el registro de eventos o las validaciones. Se definen mediante la palabra clave FUNCTION y pueden invocarse desde MAIN u otras funciones. Las funciones proporcionan una forma estructurada de implementar lógica de negocio reutilizable en aplicaciones Informix-4GL.
PRINCIPAL DEFINIR cantidad DECIMAL ( 10 , 2 ) DEFINIR descuento DECIMAL ( 10 , 2 )Importe LET = 150.00-- Llamando a la función LET descuento = calcular_descuento ( cantidad )MOSTRAR "Importe:" , importe MOSTRAR "Descuento:" , descuento FIN PRINCIPALFUNCIÓN calcular_descuento ( p_cantidad DECIMAL ( 10 , 2 )) DEFINIR resultado DECIMAL ( 10 , 2 )SI p_amount > 100 ENTONCES SEA result = p_amount * 0.10 SINO SEA result = 0 FIN SIDEVOLVER resultado FIN DE LA FUNCIÓNFormularios e interacción con el usuario
Informix-4GL incluye soporte nativo para interfaces de usuario basadas en caracteres, lo que permite a los desarrolladores definir pantallas de entrada de datos, menús y flujos de interacción directamente en el lenguaje. Los formularios se definen normalmente en archivos de especificación de formulario ASCII externos ( .per), que describen el diseño de la pantalla, los campos, las etiquetas y los atributos.
Estos archivos de formulario se compilan en definiciones de formulario binarias y luego los programas 4GL las referencian para interactuar en tiempo de ejecución. Este enfoque separa la presentación de la lógica de la aplicación, manteniendo una estrecha integración con los campos y registros de la base de datos. Si bien la sección de instrucciones de un archivo ISQL Perform era muy importante, esta sección dentro de un archivo de formulario 4GL es opcional [ 6 ] y, por lo tanto, no se utilizó en este ejemplo.
Crear el archivo del formulario : Diseñar el formulario en un archivo ASCII ( custform.per)
Almacenes de bases de datos PANTALLA { Formulario de entrada del cliente ------------------- Nombre del cliente: [f001] Teléfono del cliente: [f002] Dirección del cliente: [f003] } FIN TABLAS cliente ATRIBUTOS f001 = cliente.nombre_del_cliente; f002 = teléfono del cliente; f003 = dirección del cliente; FIN Compilar el formulario : Utilice el compilador de formularios para crear el .frmarchivo compilado.
formulario4gl formulario personalizado.por Utilice el formulario en código 4GL : define la ventana y carga el archivo OPEN WINDOWcompilado , hace visible el formulario y vincula los campos de la pantalla a registros o variables de la base de datos..frmDISPLAY FORMINPUT
PRINCIPAL DEFINIR cust_rec REGISTRO COMO cliente.* -- Abrir una ventana ABRIR VENTANA w1 EN 1,1 CON FORMULARIO "custform" -- Mostrar el formulario FORMULARIO DE VISUALIZACIÓN formulario personalizado -- Datos de entrada ENTRADA cust_rec.customer_name, cust_rec.phone, cust_rec.address DE f001, f002, f003 CERRAR VENTANA w1 FIN PRINCIPAL Informix-4GL y otros productos
Otra variante de la herramienta de programación Informix que se produjo se denominó Informix-NewEra, que admitía la programación orientada a objetos y un cierto nivel de compatibilidad de código con Informix-4GL, al tiempo que intentaba solucionar sus inconvenientes, a saber: solo admite una interfaz de "caracteres" (terminales de pantalla ASCII antiguas); y depende de una base de datos, estando limitada a la base de datos Informix .
Sin embargo, por diversas razones, Informix-NewEra llegó demasiado tarde al mercado y nunca logró una adopción generalizada [ 14 ] , siendo posteriormente descontinuado por IBM tras la adquisición. No obstante, la popularidad de Informix-4GL ha propiciado el desarrollo de implementaciones independientes y clones del lenguaje (conocidos colectivamente como la familia x4GL), que también ofrecen acceso a otras bases de datos e interfaces de usuario modernas, lo que permite modernizar las aplicaciones Informix-4GL, conservando al mismo tiempo los conocimientos y habilidades existentes del lenguaje.
Estos productos son principalmente:
- Four Js Genero BDL es un lenguaje de programación x4GL que la empresa francesa Four Js Development Tools (4Js) ofrece como parte de la plataforma Genero. Genero BDL se inspiró en Informix-4GL y es compatible en gran medida con él, conservando su sintaxis y modelo de programación centrado en bases de datos, a la vez que lo amplía con interfaces de usuario modernas, conectividad con múltiples bases de datos y capacidades de implementación multiplataforma. 4Js Genero se utiliza habitualmente para modernizar aplicaciones Informix-4GL existentes, manteniendo la compatibilidad con el código heredado y las prácticas de desarrollo.
- Querix4GL es un lenguaje de programación x4GL del desarrollador británico Querix. Está disponible en Querix Lycia, una plataforma de desarrollo completa compatible con Informix-4GL, con soluciones gráficas basadas en Windows y Java , y soporte para múltiples bases de datos. Querix lanzó Lycia, con un entorno basado en Eclipse , a finales de 2010. Las versiones posteriores incluyeron un nuevo generador de estado basado en Jasper y BIRT , la integración del lenguaje Java en aplicaciones 4GL, así como nuevos clientes .NET y web/móviles, HTML5 y tecnología Ajax .
- Aubit 4GL : un conjunto de herramientas x4GL de código abierto con licencia GNU General Public License .
Referencias
- ↑ "Versión, documentación y notas de la máquina para HCL® Informix® 4GL, versión 7.51.FC5" . HCLSoftware . Consultado el 13 de febrero de 2025 .
- 1 2 Bender, Eric (30 de diciembre de 1985). "RDS anuncia un lenguaje de cuarta generación basado en SQL: orientado al desarrollo de aplicaciones en Unix" . Computerworld . 19. IDG Enterprise: 12.
- ↑ Flannery, Ron (2000). The Informix Handbook . Prentice Hall PTR. ISBN 978-0-13-012247-6.
- ↑ Lebensorger, Reinhard (9 de marzo de 2013). Effiziente Datenbankentwicklung mit INFORMIX-4GL: Design, Implementierung und Optimierung (en alemán). Springer-Verlag. ISBN 978-3-322-90418-8.
- ↑ "Usuarios antiguos de Fourgen: ¡Cuidado con Gillani Inc.! - respuesta de Gillani" . Grupos de Google . Google . Consultado el 18 de febrero de 2026 .
- 1 2 3 Chuck Ballard; Vlaunir Da Silva; Daniel M. Farrell; Alexander Koerner; Jonathan Sayles (22 de julio de 2005). Transición: Informix 4GL a Enterprise Generation Language (EGL) . Organización Internacional de Soporte Técnico: IBM Redbooks. ISBN 0-7384-9105-5.
- ↑ Barnaby J. Feder (25 de abril de 2001). "IBM adquirirá la unidad de bases de datos de Informix por mil millones de dólares" . The New York Times . Consultado el 25 de octubre de 2022 .
- ↑ Paul Krill (13 de junio de 2003). "Compañía de herramientas 4GL se enfrenta a Java y .Net" . Computerworld . Archivado del original el 26 de octubre de 2022. Consultado el 25 de octubre de 2022 .
- ↑ "IIUG" (PDF) . Archivado del original (PDF) el 8 de septiembre de 2017. Consultado el 24 de abril de 2017 .
- ↑ "La filial de HCL Technologies aumenta su participación para adquirir la totalidad de la empresa matriz de Actian Corporation" . 30 de diciembre de 2021. Consultado el 25 de mayo de 2023 .
- ↑ "Herramientas de WebSphere actualizadas para facilitar el desarrollo en Java" . Computerworld .
- 1 2 "HCL Informix 4GL Concepts and Use Version 7.51" (PDF) . HCLSoftware . Consultado el 17 de febrero de 2025 .
- 1 2 3 Schneider, Robert D. (10 de abril de 1995). Optimización de aplicaciones Informix . Prentice Hall. pág. 145. ISBN 0-13-149238-1.
- ↑ "LA NUEVA ERA DE INFORMIX NO HA TERMINADO, SIMPLEMENTE YA NO ES RELEVANTE" . TECHMONITOR . 25 de julio de 1997. Consultado el 13 de febrero de 2025 .
- Lenguajes de programación de cuarta generación
- Informix