WARP & Warpgate: la evolución en el desarrollo para IBM i
WARP es un lenguaje de programación de alto nivel con sintaxis declarativa, diseñado para optimizar y acelerar el desarrollo en entornos IBM i (AS/400). En lugar de escribir manualmente extenso código RPGLE o definiciones DDS, WARP permite definir programas, pantallas interactivas y tablas en archivos .warp limpios y expresivos.
A través del compilador Warpgate, el código WARP se transforma automáticamente en fuente RPGLE y DDS altamente optimizado, listo para ejecutarse en el sistema.
Características principales
- Ingeniería de alto rendimiento: el compilador Warpgate está desarrollado 100% en Rust, garantizando una velocidad de compilación ultra rápida, seguridad de memoria y portabilidad nativa en Windows, GNU/Linux y macOS.
- Integración en pipelines CI/CD: al ser un ejecutable nativo multiplataforma capaz de realizar builds desde la línea de comandos, se integra fácilmente en pipelines de integración y despliegue continuo (GitHub Actions, GitLab CI, Azure DevOps, etc.), llevando prácticas DevOps modernas a la plataforma IBM i.
- Despliegue remoto multi-protocolo: permite la transferencia y despliegue directo hacia servidores IBM i remotos mediante protocolos seguros como SSH, SFTP y FTP, configurables desde el archivo de proyecto (ver
@Connection/Protocol). - Modernización y productividad: reduce drásticamente las líneas de código necesarias y elimina la verbosidad del RPG tradicional, agilizando el flujo de trabajo de los equipos de desarrollo.
- Evolución continua: mejora e incorpora constantemente nuevas capacidades de lenguaje y generación de código.
Instalación
Warpgate se distribuye como una extensión de VSCode, disponible en el Visual Studio Marketplace:
- Abrir VSCode → pestaña Extensiones (
Ctrl+Shift+X). - Buscar “WaRPGate for IBM i” (publisher Software House) e instalar.
La extensión ya incluye el compilador para Windows, GNU/Linux y macOS — no hace falta instalar nada aparte. Para generar y desplegar código (generate/build/reverse) hace falta una licencia — ver Licenciamiento.
Desarrollado por Software House
WARP y Warpgate son diseñados, desarrollados y mantenidos por Giuliano Gonzales Zeballos, creador y arquitecto principal en Software House, firma dedicada a la ingeniería de software, arquitectura de sistemas y soluciones de modernización para entornos enterprise.
Sobre este libro
Este libro documenta:
- Las guías: cómo armar, paso a paso, cada tipo de objeto (
Program,Screen,Table) y las funcionalidades más grandes (DataGridView, reportes conMember/Export). - La referencia del lenguaje: cada sección (
@Properties,@Variables,@Source, …), cada tipo de dato, cada sentencia de control y cada función builtin, con su sintaxis exacta y sus reglas de validación.
¿Qué es un archivo .warp?
Un archivo .warp describe un objeto: un Program (una lógica de negocio, con o sin salida impresa), un Screen (una pantalla interactiva 5250) o una tabla (un físico DDS). El tipo se declara en @Properties/Type.
Un .warp se organiza en secciones de nivel superior, marcadas con @Nombre { ... }:
@Documentation {
Author Name : "Nombre Programador"
}
@Properties {
Type : Program
Name : PTESTFN
Description : "Ejemplo mínimo"
}
@References {
Programs = []
Screens = []
Tables = []
}
@Variables {
global {
Usuario char(10)
}
}
@Parameters {
}
@Source {
&Usuario = USERID()
}
Qué secciones son válidas y en qué orden depende del Type — un Program tiene @Layout/@Source, una tabla tiene @Structure/@Fields/@Indexes, un Screen tiene @Layout/@Source pero no @Structure. Cada capítulo de la referencia detalla en qué tipo de archivo aplica cada sección.
Cómo compilar
El compilador es un binario CLI (cli, distribuido como warpgate/warpgate.exe dentro de la extensión de VSCode) que recibe un proyecto (.warproj) y un archivo fuente:
warpgate --project mi-proyecto.warproj --source programs/PMIPROG.warp --action validate
warpgate --project mi-proyecto.warproj --source programs/PMIPROG.warp --action generate
warpgate --project mi-proyecto.warproj --source programs/PMIPROG.warp --action build --profile Prod
validate: sólo corre el análisis semántico (lo que también dispara la extensión de VSCode al guardar) — no toca IBM i.generate: genera el RPGLE/DDS/CL y los escribe enOutput— puramente local, nunca se conecta al IBM i (aunque el CL generado ya referencia rutas remotas, según@Connection/@Deployment).build: hace lo mismo quegenerate, y además sube lo generado y lo compila en el IBM i configurado en@Connection(CRTPF/CRTLF/CRTBNDRPG/CRTDSPF, según el tipo).reverse: reconstruye un.warpde tabla a partir de un DDS ya existente en el IBM i (ingeniería inversa).
Cuando el .warpcfg declara más de un @Profile (Dev/UAT/Prod, ver Archivo de proyecto), generate/build/reverse y license-status necesitan saber cuál usar — con el flag --profile <Nombre> o, si se omite, con Default Profile de @Project. validate ignora este flag por completo.
Ver Archivo de proyecto para el formato de .warproj/.warpcfg.