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: the evolution of IBM i development

Leer esto en español

WARP is a high-level programming language with declarative syntax, designed to optimize and speed up development on IBM i (AS/400) environments. Instead of hand-writing extensive RPGLE code or DDS definitions, WARP lets you define programs, interactive screens and tables in clean, expressive .warp files.

Through the Warpgate compiler, WARP code is automatically transformed into highly optimized RPGLE and DDS source, ready to run on the system.

Key features

  • High-performance engineering: the Warpgate compiler is built 100% in Rust, guaranteeing ultra-fast compilation speed, memory safety and native portability across Windows, GNU/Linux and macOS.
  • CI/CD pipeline integration: being a native, cross-platform executable capable of building from the command line, it integrates easily into continuous integration/deployment pipelines (GitHub Actions, GitLab CI, Azure DevOps, etc.), bringing modern DevOps practices to the IBM i platform.
  • Multi-protocol remote deployment: transfers and deploys directly to remote IBM i servers over SSH, SFTP and FTP, configurable from the project file (see @Connection/Protocol).
  • Modernization and productivity: drastically reduces the lines of code needed and removes the verbosity of traditional RPG, streamlining development teams’ workflow.
  • Continuous evolution: constantly improving and gaining new language features and code generation capabilities.

Installation

Warpgate is distributed as a VSCode extension, available on the Visual Studio Marketplace:

  1. Open VSCode → Extensions tab (Ctrl+Shift+X).
  2. Search for “WaRPGate for IBM i” (publisher Software House) and install it.

The extension already includes the compiler for Windows, GNU/Linux and macOS — no separate install needed. To generate and deploy code (generate/build/reverse) a license is required — see Licensing.

Built by Software House

WARP and Warpgate are designed, developed and maintained by Giuliano Gonzales Zeballos, creator and lead architect at Software House, a firm dedicated to software engineering, systems architecture and modernization solutions for enterprise environments.

About this book

This book documents:

  • The guides: how to build, step by step, each kind of object (Program, Screen, Table) and the bigger features (DataGridView, Member/Export reports).
  • The language reference: every section (@Properties, @Variables, @Source, …), every data type, every control statement and every builtin function, with its exact syntax and validation rules.

What is a .warp file?

A .warp file describes one object: a Program (business logic, with or without printed output), a Screen (an interactive 5250 screen) or a table (a DDS physical file). The type is declared in @Properties/Type.

A .warp file is organized into top-level sections, marked with @Name { ... }:

@Documentation {
    Author Name : "Programmer Name"
}
@Properties {
    Type        : Program
    Name        : PTESTFN
    Description : "Minimal example"
}
@References {
    Programs = []
    Screens  = []
    Tables   = []
}
@Variables {
    global {
        Username char(10)
    }
}
@Parameters {
}
@Source {
    &Username = USERID()
}

Which sections are valid, and in what order, depends on Type — a Program has @Layout/@Source, a table has @Structure/@Fields/@Indexes, a Screen has @Layout/@Source but no @Structure. Each reference chapter details which file type each section applies to.

How to compile

The compiler is a CLI binary (cli, distributed as warpgate/warpgate.exe inside the VSCode extension) that takes a project (.warproj) and a source file:

warpgate --project my-project.warproj --source programs/PMYPROG.warp --action validate
warpgate --project my-project.warproj --source programs/PMYPROG.warp --action generate
warpgate --project my-project.warproj --source programs/PMYPROG.warp --action build --profile Prod
  • validate: only runs semantic analysis (the same thing the VSCode extension triggers on save) — never touches the IBM i.
  • generate: generates RPGLE/DDS/CL and writes it to Output — purely local, never connects to the IBM i (even though the generated CL already references remote paths, based on @Connection/@Deployment).
  • build: does the same as generate, and additionally uploads and compiles the generated code on the IBM i configured in @Connection (CRTPF/CRTLF/CRTBNDRPG/CRTDSPF, depending on the type).
  • reverse: reconstructs a table .warp file from an existing DDS on the IBM i (reverse engineering).

When the .warpcfg declares more than one @Profile (Dev/UAT/Prod, see Project file), generate/build/reverse and license-status need to know which one to use — either with the --profile <Name> flag, or, if omitted, with Default Profile in @Project. validate ignores this flag entirely.

See Project file for the .warproj/.warpcfg format.