| TRN1001 |
Opcode '{opcode}' is valid RPG but is not supported by rpgc |
The opcode is a real RPG operation that rpgc does not compile. |
Rewrite using a supported opcode - see Supported Opcodes. |
| TRN1001 |
KLIST requires a name in Factor 1 · KLIST '{name}' must be followed by at least one KFLD |
A KLIST has no name, or no KFLD lines follow it. |
Name the KLIST in Factor 1 and follow it with at least one KFLD carrying a Result field. |
| TRN1001 |
PLIST requires a name or *ENTRY in Factor 1 · PLIST '{name}' must be followed by at least one PARM |
A PLIST has no name, or no PARM lines follow it. |
Name the PLIST (or *ENTRY) in Factor 1 and follow it with at least one PARM carrying a Result field. |
| TRN1001 |
*ENTRY PARM variable '{name}' has no declaration with a type |
A PARM under *ENTRY names a variable with no typed declaration. |
Declare the parameter variable with a D-spec or DCL-S. |
| TRN1001 |
CALL requires a program name in Factor 2 · CALLB requires a procedure name in Factor 2 |
A CALL / CALLB has a blank Factor 2. |
Name the program or procedure in Factor 2. |
| TRN1001 |
CALL references undefined PLIST '{name}' · CALLB references undefined PLIST '{name}' |
The Result field names a PLIST that is never defined. |
Define the PLIST, or correct the name. |
| TRN1001 |
Invalid ON-ERROR status code: '{token}' |
An ON-ERROR Factor 2 token is neither *PROGRAM, *FILE, *ALL, nor an integer status code. |
Use *PROGRAM, *FILE, *ALL, or a numeric status code. |
| TRN1002 |
Unknown opcode '{opcode}' |
The opcode is not a known RPG operation at all. |
Check for a typo. The opcode may be a vendor extension outside standard RPG. |
| TRN1003 |
MVR must immediately follow a DIV operation |
An MVR (move remainder) does not directly follow a DIV. The remainder is only defined immediately after the division that produced it. |
Place MVR on the line immediately following its DIV. |
| TRN1004 |
F-spec at line {n} has no file name |
An F-spec's name columns are blank. |
Supply the file name in columns 7 - 16. |
| TRN1004 |
F-spec device '{device}' for file '{name}' is not supported |
The F-spec names a device rpgc does not support. DISK, PRINTER, WORKSTN, SEQ and SPECIAL are accepted. |
Use a supported device. |
| TRN1005 |
Subprocedure '{name}' is missing its end P-spec (position 24 = E) · … before '{other}' begins |
A begin P-spec has no matching end P-spec, or a second procedure begins while one is still open (procedures cannot nest). |
Pair each begin P-spec with an end P-spec, and close a procedure before opening the next. |
| TRN1005 |
End P-spec name '{name}' does not match the begin P-spec name '{name}' |
The name on the end P-spec differs from the one on the begin P-spec. |
Make the names match, or leave the end P-spec's name blank. |
| TRN1005 |
END-XX name '{name}' does not match the DCL-XX name '{name}' |
The optional name on a free-form END-DS, END-PR, END-PI, or END-PROC differs from the name of the item it closes (names compare case-insensitively). |
Make the names match, or omit the name on the terminator. |
| TRN1005 |
P-spec for '{name}' must specify B (begin) or E (end) in position 24 |
A P-spec's column 24 is neither B nor E. |
Put B or E in position 24. |
| TRN1006 |
The colon-adjustment form LIKE(ref:adjustment) is not valid in fixed-format; specify the length adjustment as a signed value in the length columns instead. |
A fixed-format D-spec uses LIKE(ref:adj). That form is free-format only. |
Use LIKE(ref) and put the signed length adjustment in the length columns (33 - 39). |
| TRN1007 |
Named constant '{name}' has no value; supply a literal in the keyword area (cols 44-80) or via CONST() |
A D-spec definition-type C supplies no parseable value. |
Give the constant a value, either as a bare literal (D PI C 3.14159) or via CONST(...). Both forms are accepted. |
| TRN1010 |
BEGSR requires a subroutine name in Factor 1 |
A BEGSR has a blank Factor 1. |
Name the subroutine in Factor 1. |
| TRN1011 |
BEGSR '{name}' has no matching ENDSR |
A subroutine runs to the end of the C-specs with no ENDSR. |
Close the subroutine with ENDSR. |
| TRN1012 |
Invalid EXTNAME field-set selector '{selector}' - expected *ALL, *INPUT, *OUTPUT, *KEY, or *NULL |
The EXTNAME field-set selector is not recognized. |
Use one of the listed selectors, or omit it for the default input-buffer field set. |
| TRN1013 |
EXTNAME with an empty file name is invalid |
EXTNAME('') supplied an empty file name. |
Supply the external file name as the first EXTNAME argument. |
| TRN1014 |
Cannot resolve external file description '{file}' - no JDBC connection or DDS file available at compile time |
An externally described data structure names a file whose layout could not be found at compile time. |
Put a matching DDS file on the --dds-path, or enable verify mode so the layout resolves from the catalog. |
| TRN1015 |
Invalid field-set selector '{selector}' for keyword LIKEREC - expected *ALL, *INPUT, *OUTPUT, or *KEY |
The LIKEREC selector is not recognized. Note *NULL is valid for EXTNAME but not for LIKEREC. |
Use *ALL, *INPUT, *OUTPUT, or *KEY, or omit it. |
| TRN1016 |
PREFIX is not allowed with keyword LIKEREC |
A data structure declares both LIKEREC and PREFIX. |
Remove PREFIX, or define the structure with EXTNAME(file:format), which does support PREFIX. |
| TRN1017 |
Open Access file '{file}': key field '{field}' is not defined in the record layout, so its key length cannot be resolved |
A keyed Open Access (HANDLER) file names a key column absent from the record layout. |
Correct the DDS key line to name a field in the record format, or supply the description that makes the field resolve. |
| TRN1018 |
The parameter '{value}' for keyword DATEDIT is not valid; specify *MDY, *DMY, or *YMD |
CTL-OPT DATEDIT was given something else - *JUL in particular is not valid, as there is no Julian UDATE. Mirrors IBM i RNF1008. |
Specify *MDY, *DMY, or *YMD (optionally with a separator, e.g. *YMD/), or omit DATEDIT for the *MDY default. |
| TRN1019 |
ENDSR return point {operand} is not supported … |
An ENDSR names a runtime-determined return point (a variable or named constant holding the cycle step). Literal cycle-step targets (*DETC, *DETL, *GETIN, *TOTC, *TOTL, *OFL, *CANCL) are supported - Triton RPG resumes at the named step. Only variable-based return points remain unsupported. |
Use a literal cycle-step target or a blank return point. |
| TRN1042 |
Stacker select (col 42) is not supported - this hardware feature has no JVM equivalent |
An RPG II I-spec sets a punch-card stacker-select value in column 42. |
Blank column 42. |
| TRN1043 |
RPG II field names are limited to 6 characters; '{name}' overflows the name area (cols 53-58) |
Under the RPG II dialect, an I-spec field name runs past columns 53 - 58. |
Shorten the name to six characters, or move the source to RPG IV. |
| TRN1044 |
Telecommunications Specification (T-spec) is not supported - telecom device hardware has no JVM equivalent |
The source contains a T-spec (column 6 = T). |
Remove the T-specs. Telecom I/O cannot be compiled for the JVM. |
| TRN1044 |
DEBUG is an RPG II/III opcode with no JVM equivalent; use DUMP for a diagnostic dump in RPG IV |
The DEBUG opcode was used. |
Use DUMP. |
| TRN1045 |
Auto Report Specification (U-spec) is not supported - the RPG II auto report feature has no JVM equivalent |
The source contains a U-spec (column 6 = U). |
Remove the U-specs and write explicit O-specs for report formatting. |
| TRN1046 |
Opcode '{opcode}' is not supported - S/38 assembler subroutines have no JVM equivalent |
An assembler-interface opcode (EXIT, RLABL, ULABL) was used. |
Remove them and rewrite the logic in RPG. |
| TRN1048 |
Factor 2 of {BITON/BITOFF/TESTB} must be a bit-number literal …, but '{name}' is undefined. |
The Factor 2 bit specification names something unresolvable. Accepting it would silently produce an empty mask - a no-op - and change program behavior with no diagnostic. |
Supply a bit-number literal ('05'), a hex literal (X'C1'), a one-byte character field, or a named constant holding one of those. Check the spelling. |
| TRN1049 |
When the SELECT statement has an operand, its branches must be WHEN-IS or WHEN-IN, not '{opcode}' |
A SELECT states an operand, but a branch is a plain WHEN or a comparison-form WHENxx. The two SELECT forms cannot be mixed. Mirrors IBM i RNF5515. |
Rewrite the branch as WHEN-IS value or WHEN-IN collection, or drop the operand from the SELECT so each branch states its own full condition. |
| TRN1050 |
'{opcode}' is only valid inside a SELECT group whose SELECT statement supplies an operand to compare against |
A WHEN-IS / WHEN-IN appears under an operand-less SELECT, or outside any SELECT. There is no operand for it to compare against. Mirrors IBM i RNF5512. |
Give the SELECT an operand, or rewrite the branch as a plain WHEN stating its own full condition. |
| TRN1051 |
Cannot parse expression: {text} |
A fixed-format expression could not be parsed in full. Either it is malformed, or it uses something rpgc does not support - anything the compiler cannot consume is reported rather than quietly dropped, since keeping only the part it understood would change what the program does. |
Check the expression for a typo or unbalanced bracket. Note that the extended Factor 2 area ends at column 80: text past it is not part of the expression, and an expression continued on a following line must leave columns 7 - 35 of that line blank. |
| TRN1052 |
Continuation line has no declaration to continue - a D-spec that names nothing and defines nothing carries the keywords of the D-spec above it, and there is none |
A D-spec line states no name, no definition type, and no length or data type, so it can only be a continuation of the keyword area above it - but no D-spec precedes it. |
Give the line a name and a definition, or move it below the declaration whose keywords it continues. |
| TRN1053 |
Result field '{name}' of {opcode} is not an array but a factor is an array; IBM reports RNF5186 |
A fixed-format arithmetic opcode (ADD, SUB, MULT, DIV, Z-ADD, Z-SUB) names an array in Factor 1 or Factor 2 but a scalar Result field. IBM reports RNF5186 at severity 30 - it is not element-wise arithmetic. |
Make the Result field an array, or index the array element explicitly - e.g. EVAL total = total + arr(x) to sum, or an indexed C-spec. |
| TRN1055 |
Non-numeric value '{text}' in the {column}; this column accepts digits only |
A fixed-format D-spec numeric column - the length/to-position columns (33 - 39) or the decimal-positions column (41 - 42) - holds non-numeric text, or the same appears in a /COPY member converted across formats. This is almost always a misaligned line: a name or keyword has spilled into a column the compiler reads as an integer. Mirrors IBM i RNF3402 ("Length entry is not valid"). |
Check the column alignment of the flagged line. A fixed-format spec must place its fields in their exact columns; content that starts one column off cascades into the numeric fields. |
| TRN1056 |
Initial value {value} does not match the data type of field '{name}' |
An INZ(...) special word does not match the field's data type. *NULL is valid only for a pointer or object field; *USER initializes a character field of at least 10 positions to the current user profile; no other special word (e.g. *SYS, *JOB) is a valid scalar initial value. Mirrors IBM i RNF3430. |
Remove or correct the INZ keyword - use a literal or named constant of the field's type, *BLANK/*ZERO/*HIVAL/*LOVAL as appropriate, or *NULL only on a pointer/object field. |
| TRN1057 |
END-DS is redundant here: the data structure is fully defined by {LIKEDS/LIKEREC} and declares no subfields, so it needs no END-DS; the END-DS is ignored |
Warning. A DCL-DS defined entirely by LIKEDS or LIKEREC takes its subfields from the named template or record, so the declaration is complete at its ; and no END-DS is coded. Writing one anyway is redundant - as a separate END-DS; statement or as a trailing END-DS keyword on the DCL-DS line. Mirrors IBM i RNF3551 ("END-XX is not expected") and RNF3372 ("The keyword is not allowed following keyword LIKEDS … keyword is ignored"), both severity 20. An externally-described DS (EXTNAME) is not flagged - it requires its END-DS. |
Remove the redundant END-DS. The generated program is identical either way. |
| TRN1058 |
A DIM array subfield is not permitted for subfield '{name}' of type {type}; this type has no byte-array representation in a data structure |
A data-structure subfield declared DIM(n) (an in-DS array table) needs an element type with a fixed byte image inside the structure. All scalar types except OBJECT have one; an OBJECT reference type does not. Indexed element access and SORTA are honored for every supported element type. |
Remove the DIM keyword from the OBJECT subfield, or hold the values as a standalone DIM field outside the data structure. |
| TRN1059 |
SQLTYPE LOB field '{name}' declares no length / declares length {n}; the length must be 1 to 16773100 |
An SQLTYPE(CLOB|BLOB|DBCLOB) declaration omits its length, or gives one outside the range Db2 for i accepts. The length is mandatory, and is bounded at 16,773,100 bytes. Both are rejected rather than inventing a capacity the source never asked for, which would compile here and then silently truncate any value past the invented size. Note the K/M/G multiplier form (CLOB:1M) is valid in SQL DDL but not in the RPG SQLTYPE keyword - write the plain byte count. |
Give an explicit byte length in range, e.g. DCL-S doc SQLTYPE(CLOB:1048576);. |
| TRN1060 |
{READ|WRITE|UPDATE} to program-described DISK file '{name}' is not supported - the record image cannot be transferred |
A READ, WRITE or UPDATE on a DISK file declared program-described (a record length rather than an external description - fixed-format F in the file-format column, or free-format DISK(n)) names no record-image operand and the program declares no I-spec fields for the file. Without either a data-structure operand or I-spec InputField declarations, there is nowhere to read the record into and nothing to write. Also raised when a column's type has no byte-image representation. Does not apply to a program-described PRINTER file. When the program declares I-spec field definitions for the file (fixed-format Input specifications with FROM/TO positions), the operand-less form is accepted: READ populates the I-spec fields, and WRITE/UPDATE assemble the record from the current field values. |
Either name the data structure carrying the record image - READ file ds, WRITE file ds, UPDATE file ds - or declare I-spec Input specifications defining the fields for the file. |
| TRN1061 |
The compiler cannot determine how this program can end - a cycle-main program needs a mainline RETURN, an *INLR assignment, a SETON LR, or a primary file |
The RPG cycle re-enters the mainline after every pass, so a cycle-main program ends only when something sets *INLR, runs a mainline RETURN, or reads a primary file (F-spec designation P) to end-of-file. With none of those present the cycle cannot end. A termination inside a subroutine counts even if nothing calls that subroutine - presence is what matters, not reachability - but one inside a subprocedure does not, since a RETURN there returns from the procedure rather than from the cycle. NOMAIN modules, linear-main programs (MAIN(...)), and --lib builds have no cycle and are exempt. |
Add a mainline RETURN, *INLR = *ON, or SETON LR; or declare the input file as primary. |
| TRN1062 |
Program-described file '{name}' states record length {n}, but its columns occupy {m} bytes - the trailing columns would never be transferred |
The record length on a program-described F-spec is how much data an I/O operation moves, so a length shorter than the columns read into it leaves the trailing subfields holding whatever the structure held before - not a smaller read. A length longer than the columns is accepted: the surplus bytes go unused. |
Correct the F-spec record length to at least the summed storage widths of the columns, or narrow the data structure so its subfields fit. |
| TRN1063 |
File type for '{file}' is not I, O, U, or C; defaulting to O (output) / I (input) |
The fixed-format F-spec file-type column (17 in RPG IV, 15 in the classic map) is blank or holds something other than I, O, U or C. The type defaults to O when the designation column is also blank, and to I otherwise. rpgc applies the same default so the compiled program matches. The usual cause is source read under the wrong column map, where a real entry lands one or two columns away; if this fires on source you believe is correct, check which dialect was detected. |
Put the file type in the column its dialect uses. |
| TRN1064 |
File designation for '{file}' is blank, which is not valid with file type '{type}'; defaulting to F (full procedural) |
The F-spec file-designation column (18 in RPG IV, 16 in the classic map) is blank on a file that is not output-only. The designation defaults to F (full procedural). A blank designation on an output file is correct and draws nothing - that is the shape every printer F-spec uses. |
Give the file a designation (P, S, F, R or T), or leave it blank only on an output file. |
| TRN1065 |
File format for '{file}' is not F or E; defaulting to F (program described) |
The F-spec file-format column (22 in RPG IV, 19 in the classic map) is blank or holds something other than F (program described) or E (externally described). The designation defaults to F. Without it the file would carry a blank format that resolves to no record layout at all, so the default is what keeps the program meaningful. |
Write E for an externally described file or F for a program-described one. |
| TRN1066 |
Subfield '{name}' ends at position {n}, past the declared length {m} of data structure '{ds}' |
An RPG III data structure declared on an Input specification carries a total length in columns 48-51 of its header, and a subfield's to-position may not reach past it. Reported against the subfield line rather than the header, since silently taking either number would be a guess about which one was meant. A declared length longer than the subfields is not an error: the surplus is reserved trailing storage and becomes part of the structure's size. |
Widen the declared length in columns 48-51, or narrow the subfield so it fits. |
| TRN1067 |
This {what} belongs to the main procedure but appears after a subprocedure; move it above the first DCL-PROC |
The main procedure is everything before the first DCL-PROC - its declarations, its calculations, and its subroutines. A declaration, statement, or BEGSR written after a subprocedure belongs to no procedure at all. IBM reports RNF0256 at severity 30. |
Move the line above the first DCL-PROC. Subprocedures come last in the source. |
| TRN1068 (warning) |
Parameter {code} for keyword EXTFMT is not valid with compile-time array '{name}'; the parameter is ignored |
EXTFMT names the external representation of an array's data. A compile-time array's data is the character text following **CTDATA in the source, so the only representations that can describe it are S (zoned) and L / R (zoned digits with a separate +/- sign character). Warning. IBM reports this as RNF3462 at severity 20. |
Use EXTFMT(S), EXTFMT(L) or EXTFMT(R), or drop the keyword - S is what compile-time data already is. P, B, I, U and F describe binary representations that only a pre-runtime (FROMFILE) array can have. |
| TRN1069 (warning) |
Parameter {code} for keyword EXTFMT is not valid ('{name}'); the keyword is ignored |
The EXTFMT parameter is not one of the external formats at all. The complete set is B (binary), C (UCS-2), I (integer), L (leading separate sign), R (trailing separate sign), P (packed), S (zoned), U (unsigned) and F (float). Warning. IBM reports RNF3450 at severity 20. |
Use one of the nine documented parameters. |
| TRN1070 (warning) |
Keyword EXTFMT is not allowed for run-time array '{name}'; the keyword is ignored |
EXTFMT describes data arriving from outside the program, and a run-time array - one with neither CTDATA nor FROMFILE/TOFILE - has none. Warning. IBM reports RNF3350 at severity 20. |
Drop the keyword, or add CTDATA or FROMFILE if the array really is meant to be loaded from outside. |
| TRN1071 (warning) |
The parameter for keyword EXTFMT is not allowed for float array '{name}'; the keyword is ignored |
A float array's external representation is fixed by its own type, so EXTFMT has nothing to say about it. Warning. IBM reports RNF3490 at severity 20. |
Drop the keyword from the float array. |
| TRN1072 (warning) |
Keyword EXTFMT is not specified correctly for array '{name}'; the keyword is ignored |
EXTFMT(C) names the UCS-2 external format, which applies only to a UCS-2 array - never to a numeric one. Warning. IBM reports RNF3464 at severity 20. |
Use a numeric external format (S, P, B, I, U, L, R or F), or drop the keyword. |
| TRN1073 |
Keyword SERIALIZE on procedure '{name}' is only valid with control specification THREAD(*CONCURRENT) |
The SERIALIZE keyword on a DCL-PROC or P-spec restricts a procedure to one thread at a time, but this only makes sense under THREAD(*CONCURRENT), where threads share the module's static storage. Without it - or under THREAD(*SERIALIZE), which already serializes the entire module - the keyword is invalid. IBM reports RNF1519 at severity 20. |
Add CTL-OPT THREAD(*CONCURRENT) (or H THREAD(*CONCURRENT) in fixed-format) to the control specification, or remove the SERIALIZE keyword from the procedure. |
| TRN1074 |
Record-address-type 'K' in column 34 is only valid for an externally-described file - file '{name}' is program-described |
On a fixed-format F-spec, column 34 K (keyed access via record-address type) is valid only when the file is externally described (format E in column 22). A program-described file uses file organization I in column 35 and the key-length entry (columns 29-33) instead. IBM reports RNF2290 at severity 20. |
Change the file format to E (externally described) or use file organization I with KEYLOC for a program-described indexed file. |
| TRN1075 |
Key-length entry (columns 29-33) must be blank for externally-described file '{name}' |
The key-length entry in F-spec columns 29-33 applies only to program-described files. For an externally-described file the key length comes from the file's DDS. IBM reports RNF2301 at severity 20. |
Remove the key-length entry, or change the file to program-described. |
| TRN1076 |
KEYLOC is only valid on a program-described indexed file - file '{name}' |
The KEYLOC(n) keyword specifies the starting byte position of the key in a program-described indexed file (format F, organization I). It is not valid on an externally-described file or a non-indexed program-described file. IBM reports RNF2300 at severity 20. |
Remove the KEYLOC keyword, or ensure the file is program-described with indexed organization. |
| TRN1077 |
DDS file '{name}' uses SELECT/OMIT specifications that could not be parsed / DDS file '{name}' is a join logical file (JFILE) |
Emitted in two cases: (1) The DDS logical file contains SELECT/OMIT specifications that Triton RPG could not interpret - without the filter the program would read all physical-file records, which changes its behavior. The supported keywords are COMP (with operators EQ, NE, LT, GT, LE, GE), RANGE, VALUES, and ALL. (2) The DDS defines a join logical file (JFILE keyword), which has no SQL-backend equivalent. |
For unparseable SELECT/OMIT specs, simplify the DDS to use the supported comparison keywords or apply the filtering logic in the RPG program. For join LFs, define a SQL view or use EXTDESC to access the data instead. |
| TRN1078 |
DDS file '{name}' has reference fields (R in column 29) whose attributes could not be resolved |
One or more fields in the DDS source have the reference indicator R in column 29, meaning their attributes (length, data type, decimal positions) are inherited from a field defined in another file via the file-level REF(file) or field-level REFFLD(field file) keyword. The referenced file must be reachable on the --dds-path. This diagnostic fires when the referenced file or field cannot be found - the unresolvable fields will be missing from the record layout. |
Ensure the referenced DDS file is on the --dds-path, or replace the reference fields with explicit field definitions (specify the length and data type directly). |
| TRN1079 |
DDS file '{name}': unsupported key sequencing keyword {keyword} |
A key field in the DDS source carries one of the key-sequencing keywords ABSVAL, SIGNED, UNSIGNED, ZONE, DIGIT, ALTSEQ, or NOALTSEQ. These keywords manipulate the sort comparison at a byte level (zone/digit extraction, absolute value, sign handling, or collation) and have no portable SQL equivalent. |
Remove the unsupported keyword from the key field specification. If the sorting behavior it provides is essential, implement the equivalent ordering logic in the RPG program. |
| TRN1080 |
DDS keyword '{keyword}' on {scope} is not supported and will be ignored - or, at the argument level, DDS keyword '{keyword}' argument '{arg}' on field {field} is not supported and will be ignored |
A DDS display file contains a keyword - or an argument of an otherwise-recognized keyword - that the compiler does not implement. It is ignored, which may change field behavior. Whole-keyword examples: RANGE/VALUES/COMP (input validation). Argument examples: CHECK(FE)/CHECK(RZ)/CHECK(ER) (device-level input control). All 11 DSPATR arguments are handled: HI, RI, UL, BL, CS, ND, PC, PR, MDT, OID, SP - the last two are accepted as inert (they require physical OID-reader or light-pen hardware). The handled CHECK arguments are LC, ME, MF. |
Remove the unsupported keyword or argument if the behavior it provides is not needed, or implement the equivalent logic in the RPG program. |
| TRN1081 |
Statement '{opcode}' in SELECT block is not inside any WHEN or OTHER branch and will be ignored |
A fixed-format C-spec between the SELECT opcode and its first WHEN or OTHER branch is unreachable, so the statement is ignored. |
Move the statement before the SELECT, or into the appropriate WHEN or OTHER branch. |
| TRN1082 |
'{opcode}' without a matching block opener |
A block terminator opcode (ELSE, ENDIF, ENDDO, WHEN, OTHER, etc.) appeared outside any enclosing block. The corresponding block opener (IF, DO, SELECT, MONITOR) is missing, malformed, or was rejected by an earlier error. |
Add the missing block opener, or correct the malformed line that was rejected. |
| TRN1083 |
Opcode '{opcode}' requires a result entry but none was specified |
A fixed-format arithmetic or move opcode (ADD, SUB, MULT, DIV, Z-ADD, Z-SUB, MVR, SQRT) has a blank result field (columns 50-63). Without a result entry the statement would be silently omitted. |
Specify the result field in C-spec columns 50-63. |
| TRN1084 |
Record format '{format}' of multi-format logical file '{name}' has no PFILE keyword / maps to physical file '{pfile}', whose DDS could not be found |
Each record format of a multi-format logical file must name the physical file it maps to via PFILE, and that physical file's DDS must resolve on the source directory or --dds-path. A format with no PFILE, or one naming a physical file whose .pf cannot be found, has nowhere to route its I/O. |
Add the missing PFILE keyword to the record format, or make the named physical file's DDS available on the --dds-path. |
| TRN1085 |
{opcode} names multi-format logical file '{name}' by its file name - a format-less mutating operation cannot target all record formats at once; name one of its record formats ({formats}) instead |
A mutating I/O operation (WRITE, UPDATE, DELETE) named a multi-format logical file by its file name rather than by one of its record formats. Mutating operations must target a specific format. Read and positioning operations (READ, READP, READE, READPE, SETLL, SETGT, CHAIN) are allowed by file name - they use the merged cursor across all formats in key order. |
Name one of the file's record formats in the mutating operation - for example WRITE MYFORMATA - so the I/O targets that format's physical file. |
| TRN1086 |
Source appears to have spec letters (H/F/D/C/I/O/P) in column 1 instead of column 6 - the source is shifted left by 5 columns |
The source has no **FREE header and a majority of its non-blank lines carry a valid spec letter at position 1 with a blank at position 6, which is the signature of a column-misaligned fixed-format file. Fixed-format RPG requires spec letters in column 6. |
Re-indent the source so that spec letters are in column 6 (position 6), with 5 leading blanks. |
| TRN1087 |
Source appears to retain the 12-byte SEQNBR+DATE prefix from IBM i source-member metadata |
The source has a majority of non-blank lines beginning with 12 digits (6-digit sequence number + 6-digit date) followed by a valid spec letter at position 18. This is the signature of a source export that retained the member's record-level metadata. |
Strip the first 12 characters from each line before compiling - e.g. sed 's/^.\{12\}//' source.rpgle > clean.rpgle. |
| TRN1088 |
EXTMBR('{member}') on file '{file}' - member selection has no expression on SQL backends |
EXTMBR selects a physical-file member at open time. Member selection is a native IBM i concept with no SQL equivalent on any backend. |
Use a separate physical file (table) per member instead of selecting members within a single file. |
| TRN1089 |
Invalid file-type/designation pair on DISK file '{file}' |
The record-address designation (R, col 18) on a DISK file requires RAFDATA, which Triton RPG does not support. Other file-type/designation pairs are accepted. |
Remove the R designation, or read the file with a full-procedural (F) declaration. |
| TRN1090 |
Record-address-type '{letter}' in column 34 is not valid for externally-described file '{file}'; only 'K' (keyed) or blank is accepted - IBM reports RNF2041 |
Warning. For an externally-described file (format E), the F-spec record-address-type column (col 34 in RPG IV) accepts only K (keyed) or blank. Any other letter is defaulted to blank (IBM reports RNF2041 at severity 20). Program-described files may use A/D/G/P/T/Z for their key-address types. |
Use K for keyed access, or leave the column blank for sequential access. |
| TRN1091 |
C-spec operand error: KLIST/PLIST/CALL/CALLB/DEFINE missing or invalid Factor 1 or Factor 2 |
A C-spec operation requires a Factor 1 or Factor 2 operand that is missing, empty, undefined, or of the wrong shape. KLIST and PLIST require a name in Factor 1; CALL and CALLB require a program/procedure name in Factor 2; DEFINE *LIKE requires a numeric length adjustment. |
Supply the missing operand, correct the spelling, or declare the referenced name. |
| TRN1092 |
Conditioning indicator '{ind}' is not recognized |
A conditioning indicator in a C-spec (columns 9 - 11) is not a valid indicator reference. Valid forms are 01 - 99, LR, L1 - L9, H1 - H9, KA - KN/KP - KY, RT, MR, U1 - U8, OA - OG/OV, or their negated N prefix. |
Correct the indicator reference. |
| TRN1093 |
Invalid ON-ERROR status code: '{code}' |
The ON-ERROR clause names a status code that is not a valid integer or recognized status keyword. |
Use a numeric status code (e.g. 00100, 01211) or *ALL, *FILE, *PROGRAM. |
| TRN1094 |
Invalid BIF assignment-target shape |
A built-in function used as an assignment target (%SUBST, %NULLIND, %LEN, %SUBARR) was given an operand that does not designate the storage the BIF needs - for example, %LEN of a fixed-length field, %SUBARR of a non-array, or %NULLIND/%SUBST of an expression rather than a field reference. |
Pass a valid field or variable reference as the BIF's argument. |