Diagnostic Reference

Code Message Cause Resolution
TRN4001 BNDDIR '{name}' declared in source but no --bnddir {name}=<path> provided; the binding directory cannot be resolved The source names a binding directory (CTL-OPT BNDDIR or an H-spec) that no --bnddir option maps to a path, so the compile cannot supply what the source declares. IBM i does the same: naming a binding directory that cannot be found stops the program being created, even when the source makes no bound calls at all - and an existing binding directory is accepted however empty it is, so the fatal condition is precisely "cannot be found". Compiling anyway would emit a program whose bound calls fall back to the EXTPROC name as a class name and fail at run time with "Service module not found on classpath", which is a deferred failure in place of a stated one. Pass --bnddir {name}=<path> so the binding directory resolves. Compile the service module with --lib first, then point --bnddir at the directory holding its .class file.
TRN4002 Cannot find DDS source for display file '{name}' (looked for {name}.dspf in the source directory and on --dds-path) The program declares an externally-described WORKSTN display file, but no matching .dspf exists in the source file's directory or in the --dds-path directory. The diagnostic is anchored at the F-spec / DCL-F that references the file. Mirrors IBM i RNF2120 ("External descriptions for file not found"). Put {name}.dspf next to the source or pass --dds-path <dir> pointing at the directory that contains it. If the file is program-described, add the program-described F-spec form instead.
TRN4003 Column '{name}' has SQL type '{type}' which rpgc cannot externally-describe; no faithful RPG field mapping exists An externally-described file was resolved from a SQL DDL (.table / CREATE TABLE) source, but one of its columns uses a SQL type with no faithful RPG externally-described field type (for example DECFLOAT, BLOB/CLOB/DBCLOB, XML, ROWID, BINARY/VARBINARY, or BOOLEAN). The type is rejected rather than silently mapped to character, which would mistype every read and write against the column. The diagnostic is anchored at the referencing declaration. Supported types: CHAR, VARCHAR, GRAPHIC, VARGRAPHIC, SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, DOUBLE, FLOAT, DATE, TIME, TIMESTAMP. Change the column to a supported type, or supply a .pf DDS description (or a live catalog via verify mode) for the file so it does not resolve from the DDL.
TRN4004 (the reason the file could not be used) The file given to --schema-map could not be read, is not valid YAML, or is not the shape the format requires - for example a section that is a list where a mapping is required, or a column entry written as a bare type instead of { type: ... }. The compile stops rather than continuing without the override, because carrying on would leave you believing a schema contract was in force while nothing was being checked, which is worse than having no contract at all. Correct the file. The format and its precedence rules are described in Schema conformance.