| 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. |