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

Diagnostics and error messages

The compiler reports every issue with an E##### code (e.g. E00221), a severity level, and a message — currently only in Spanish — with the concrete values interpolated.

Levels

LevelMeaning
errorBlocks code generation; the object doesn’t compile.
warningDoesn’t block compiling, but flags something probably unintentional (e.g. a variable declared and never used).

What they look like

On the command line (human format):

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

Or as JSON (--format json, the one the VSCode extension consumes to draw red/yellow underlines in the editor):

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

Some representative examples

CodeSituation
E00001A @Name section was expected and something else was found.
E00128A file referenced by the .warpcfg (e.g. the SSH key in @Connection) doesn’t exist on this machine — doesn’t block validate/generate, but will be needed for build/reverse.
E00152A variable from @Variables was declared but never used (warning).
E00195Invalid use of RefreshSelectRow()/For Each Row outside a Screen with a DataGridView.
E00221char outside the allowed range for a standalone variable in @Variables (1-16,773,104).
E00222number with precision out of range (1-63) in @Variables.
E00223number whose scale is greater than its precision.
E00224varchar outside the allowed range (1-16,773,100).
E00238struct(Name) references a template that doesn’t exist in @Variables.
E00240&Variable.Member access to a member that doesn’t exist in the struct’s template.
E00242A struct(OtherTemplate) variable was passed where a different template was expected (the comparison is by exact name, not by structure).
E00269A table’s Description (@Structure) exceeds the 50 characters allowed by TEXT in DDS.
E00270A field’s Description (@Fields) exceeds the 50 characters allowed by TEXT in DDS.
E00271An index’s Description (@Indexes) exceeds the 50 characters allowed by TEXT in DDS.
E00281The Description in @Properties (of a Program or Screen) exceeds the 50 characters allowed by TEXT in the compile-time CL commands (CRTBNDRPG/CRTDSPF/CHGPFM). Same limit and criterion as E00269/E00270/E00271.
E00284@License Port is 0.
E00285@License Host is not a valid host.
E00286@License Fingerprint is not a valid SHA-256 fingerprint.
E00287Warning: @License has Host but no Fingerprint.
E00288Warning: @License has Host and File together (File is ignored).
E00290@Connection/@Deployment/@License declared directly inside @GeneratorConfig, without wrapping them in a @Profile "Name".
E00291@GeneratorConfig doesn’t declare any @Profile.
E00292The profile requested with --profile or Default Profile doesn’t exist among the declared @Profiles (available ones are listed).
E00293Several @Profiles are declared and it wasn’t indicated which one to use (neither --profile nor Default Profile), so the compiler can’t pick just one (available ones are listed).

Each message has a code, a level (error/warning) and a template with the case’s actual details ({variable}, {length}, etc.) the compiler fills in when reporting it.

When they fire

  • On saving/opening a .warp file in VSCode (warpgate.validateOnSave/validateOnOpen), if there’s a .warproj resolved for that file.
  • Manually with warpgate --action validate — never touches the IBM i, purely local.
  • License note: validate does not require a license; generate/build/reverse do (see Licensing).
  • As part of generate/build/reverse — if there are errors, code generation/deployment doesn’t proceed.