Informix Error -4009: Non-shared member "name" cannot be used in default values.
Cause and resolution
Non-shared member "name" cannot be used in default values.
A default value expression in this function declaration refers to the value of a normal member variable of this class. This action is not supported. Default value expressions can refer to variables, but they must be declared at the module level or be shared members of classes.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4009 fires when a function's default value expression refers to a normal (non-shared) member variable of its class — per the official guidance, default value expressions can only refer to module-level variables or shared class members.
- A default value expression referencing a normal (non-
SHARED) member variable, per the official guidance — the direct, only cause.
Solutions / Resolution
- Use only module-level variables or shared class members in default value expressions, per the official guidance.
Examples
A default value referencing a normal member
CLASS Order
DEFINE tax_rate DECIMAL
FUNCTION compute(rate DECIMAL DEFAULT tax_rate)
-- -4009: tax_rate is a normal member, not SHARED
END FUNCTION
END CLASS
Corrected
CLASS Order
DEFINE SHARED tax_rate DECIMAL
FUNCTION compute(rate DECIMAL DEFAULT tax_rate)
...
END FUNCTION
END CLASS
Diagnostic Checks
- Check any member variable referenced in a default value expression, and confirm it's
declared
SHAREDor is a module-level variable.
Related Errors / Related Topics
No closely related error codes are cross-referenced for -4009 in this set yet.
A default value expression refers to a normal (non-SHARED) member variable — use a
module-level variable or a SHARED member instead.