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

Diagnósticos y mensajes de error

El compilador reporta cada problema con un código E##### (p.ej. E00221), un nivel de severidad y un mensaje en español con los valores concretos interpolados.

Niveles

NivelSignificado
errorImpide la generación de código; el objeto no compila.
warningNo impide compilar, pero señala algo probablemente no intencional (p.ej. una variable declarada y nunca usada).

Cómo se ven

Por línea de comandos (formato humano):

[2026-07-24T21:26:47Z] ERROR E00221 (line: 12, column: 5): La variable 'x' declara char(16773105), fuera del rango permitido (1-16773104).

O en JSON (--format json, el que consume la extensión de VSCode para pintar los subrayados rojos/amarillos en el editor):

{"errors": [{"line": 12, "column": 5, "severity": "error", "message": "..."}]}

Algunos ejemplos representativos

CódigoSituación
E00001Se esperaba una sección @Nombre y se encontró otra cosa.
E00128Un archivo referenciado por el .warpcfg (p.ej. la clave SSH de @Connection) no existe en esta máquina — no bloquea validate/generate, pero hará falta para build/reverse.
E00152Una variable de @Variables fue declarada pero nunca usada (warning).
E00195Uso inválido de RefreshSelectRow()/For Each Row fuera de un Screen con DataGridView.
E00221char fuera del rango permitido para una variable standalone en @Variables (1-16.773.104).
E00222number con precisión fuera de rango (1-63) en @Variables.
E00223number cuya escala es mayor que su precisión.
E00224varchar fuera del rango permitido (1-16.773.100).
E00238struct(Nombre) referencia un template que no existe en @Variables.
E00240Acceso &Variable.Miembro a un miembro que no existe en el template del struct.
E00242Se pasó una variable struct(OtroTemplate) donde se esperaba un template distinto (la comparación es por nombre exacto, no por estructura).
E00269La Description de una tabla (@Structure) supera los 50 caracteres que admite TEXT en DDS.
E00270La Description de un campo (@Fields) supera los 50 caracteres que admite TEXT en DDS.
E00271La Description de un índice (@Indexes) supera los 50 caracteres que admite TEXT en DDS.
E00281La Description de @Properties (de un Program o Screen) supera los 50 caracteres que admite TEXT en los mandatos CL de compilación (CRTBNDRPG/CRTDSPF/CHGPFM). Mismo límite y criterio que E00269/E00270/E00271.
E00284Port de @License es 0.
E00285Host de @License no es un host válido.
E00286Fingerprint de @License no es una huella SHA-256 válida.
E00287Aviso: @License tiene Host pero no Fingerprint.
E00288Aviso: @License tiene Host y File juntos (File se ignora).
E00290@Connection/@Deployment/@License declarados directamente dentro de @GeneratorConfig, sin envolverlos en un @Profile "Nombre".
E00291@GeneratorConfig no declara ningún @Profile.
E00292El perfil pedido con --profile o Default Profile no existe entre los @Profile declarados (se listan los disponibles).
E00293Hay varios @Profile declarados y no se indicó cuál usar (ni --profile ni Default Profile), así que el compilador no puede elegir uno solo (se listan los disponibles).

Cada mensaje tiene un código, un nivel (error/warning) y una plantilla con los datos concretos del caso ({variable}, {length}, etc.) que el compilador completa al reportarlo.

Cuándo se disparan

  • Al guardar/abrir un .warp en VSCode (warpgate.validateOnSave/validateOnOpen), si hay un .warproj resuelto para ese archivo.
  • Manualmente con warpgate --action validate — no toca IBM i, es puramente local.
  • Nota de licencia: validate no exige licencia; generate/build/reverse sí (ver Licenciamiento).
  • Como parte de generate/build/reverse — si hay errores, no se llega a generar/desplegar código.