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.
Nota para macOS: el compilador no está firmado con un certificado de Apple, así que macOS puede bloquear su primera ejecución con un aviso de que no se puede verificar el desarrollador. Para permitirlo, ejecuta una vez en Terminal, reemplazando la ruta por la del binario:
xattr -d com.apple.quarantine /ruta/a/warpgate
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.