Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

WARP & Warpgate: la evolución en el desarrollo para IBM i

Read this in English

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:

  1. Abrir VSCode → pestaña Extensiones (Ctrl+Shift+X).
  2. 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 con Member/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 en Output — puramente local, nunca se conecta al IBM i (aunque el CL generado ya referencia rutas remotas, según @Connection/@Deployment).
  • build: hace lo mismo que generate, 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 .warp de 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.