Informix Error -4347
-4347 The variable variable-name is not a record. It cannot
reference record elements.In this statement variable-name appears followed by a dot, followed by another name. This is the way you would refer to a component of a record variable; however, variable-name is not defined as a record. Either you have written the name of the wrong variable, or else variable-name is not defined the way you intended.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4347 fires when a variable is followed by a dot and another name, as if referencing a record component, but the variable isn't defined as a record — per the official guidance, either the wrong variable name was used, or the variable isn't defined as intended.
- A dot-qualified reference on a variable that isn't a record, per the official guidance — the direct, only cause.
Solutions / Resolution
- Check whether the correct variable was named, per the official guidance.
- Check whether the variable is defined the way intended, per the official guidance.
Examples
A dot reference on a non-record variable
DEFINE qty INTEGER
LET x = qty.total
-- -4347: qty is not defined as a record
Corrected
DEFINE rec RECORD
qty INTEGER,
total DECIMAL
END RECORD
LET x = rec.total
Diagnostic Checks
- Check the declaration of the variable used with a dot-qualified reference, and confirm it's genuinely a record.
Related Errors / Related Topics
- -4329 — "The variable variable-name is not a record. Only record variables may be
expanded using the .* or THROUGH shorthand." A closely related error, about
.*/THRUshorthand rather than a single dot-qualified component reference. - -4161 — "This variable has not been defined as a record or object." A related error in the NewEra-specific context, also covering objects.
A dot-qualified reference is used on a variable that isn't a record — check its declaration.