pub enum ErrorCode {
Show 61 variants
CBKP001_SYNTAX,
CBKP011_UNSUPPORTED_CLAUSE,
CBKP021_ODO_NOT_TAIL,
CBKP022_NESTED_ODO,
CBKP023_ODO_REDEFINES,
CBKP051_UNSUPPORTED_EDITED_PIC,
CBKP101_INVALID_PIC,
CBKS121_COUNTER_NOT_FOUND,
CBKS141_RECORD_TOO_LARGE,
CBKS301_ODO_CLIPPED,
CBKS302_ODO_RAISED,
CBKS601_RENAME_UNKNOWN_FROM,
CBKS602_RENAME_UNKNOWN_THRU,
CBKS603_RENAME_NOT_CONTIGUOUS,
CBKS604_RENAME_REVERSED_RANGE,
CBKS605_RENAME_FROM_CROSSES_GROUP,
CBKS606_RENAME_THRU_CROSSES_GROUP,
CBKS607_RENAME_CROSSES_OCCURS,
CBKS608_RENAME_QUALIFIED_NAME_NOT_FOUND,
CBKS609_RENAME_OVER_REDEFINES,
CBKS610_RENAME_MULTIPLE_REDEFINES,
CBKS611_RENAME_PARTIAL_OCCURS,
CBKS612_RENAME_ODO_NOT_SUPPORTED,
CBKS701_PROJECTION_INVALID_ODO,
CBKS702_PROJECTION_UNRESOLVED_ALIAS,
CBKS703_PROJECTION_FIELD_NOT_FOUND,
CBKR211_RDW_RESERVED_NONZERO,
CBKC201_JSON_WRITE_ERROR,
CBKC301_INVALID_EBCDIC_BYTE,
CBKD101_INVALID_FIELD_TYPE,
CBKD301_RECORD_TOO_SHORT,
CBKD302_EDITED_PIC_NOT_IMPLEMENTED,
CBKD401_COMP3_INVALID_NIBBLE,
CBKD410_ZONED_OVERFLOW,
CBKD411_ZONED_BAD_SIGN,
CBKD412_ZONED_BLANK_IS_ZERO,
CBKD413_ZONED_INVALID_ENCODING,
CBKD414_ZONED_MIXED_ENCODING,
CBKD415_ZONED_ENCODING_AMBIGUOUS,
CBKD421_EDITED_PIC_INVALID_FORMAT,
CBKD422_EDITED_PIC_SIGN_MISMATCH,
CBKD423_EDITED_PIC_BLANK_WHEN_ZERO,
CBKD431_FLOAT_NAN,
CBKD432_FLOAT_INFINITY,
CBKI001_INVALID_STATE,
CBKE501_JSON_TYPE_MISMATCH,
CBKE505_SCALE_MISMATCH,
CBKE510_NUMERIC_OVERFLOW,
CBKE515_STRING_LENGTH_VIOLATION,
CBKE521_ARRAY_LEN_OOB,
CBKE530_SIGN_SEPARATE_ENCODE_ERROR,
CBKE531_FLOAT_ENCODE_OVERFLOW,
CBKF102_RECORD_LENGTH_INVALID,
CBKF104_RDW_SUSPECT_ASCII,
CBKF221_RDW_UNDERFLOW,
CBKA001_BASELINE_ERROR,
CBKW001_SCHEMA_CONVERSION,
CBKW002_TYPE_MAPPING,
CBKW003_DECIMAL_OVERFLOW,
CBKW004_BATCH_BUILD,
CBKW005_PARQUET_WRITE,
}Expand description
Stable error codes for programmatic error handling
The copybook-rs error taxonomy uses a structured approach with stable error codes
that enable programmatic error handling across all components. Each code follows
the pattern CBK[Category][Number]_[Description] where:
- CBKP: Parse errors during copybook analysis
- CBKS: Schema validation and ODO processing
- CBKR: Record format and RDW processing
- CBKC: Character conversion and encoding
- CBKD: Data decoding and field validation
- CBKE: Encoding and JSON serialization
- CBKF: File format and structure validation
- CBKI: Iterator and infrastructure state validation (e.g., fixed-format without LRECL ->
CBKI001_INVALID_STATE)
Implements Serialize/Deserialize for error code persistence and API responses.
§Examples
use copybook_error::ErrorCode;
let code = ErrorCode::CBKP001_SYNTAX;
assert_eq!(code.family_prefix(), "CBKP");
assert_eq!(format!("{code}"), "CBKP001_SYNTAX");
let data_code = ErrorCode::CBKD301_RECORD_TOO_SHORT;
assert_eq!(data_code.family_prefix(), "CBKD");Variants§
CBKP001_SYNTAX
CBKP001: General copybook syntax error during parsing
CBKP011_UNSUPPORTED_CLAUSE
CBKP011: Unsupported COBOL clause or feature encountered
CBKP021_ODO_NOT_TAIL
CBKP021: ODO (OCCURS DEPENDING ON) array not at tail position
CBKP022_NESTED_ODO
CBKP022: Nested ODO (OCCURS DEPENDING ON inside another OCCURS/ODO)
CBKP023_ODO_REDEFINES
CBKP023: ODO (OCCURS DEPENDING ON) over REDEFINES
CBKP051_UNSUPPORTED_EDITED_PIC
CBKP051: Unsupported edited PIC clause pattern
CBKP101_INVALID_PIC
CBKP101: Invalid PIC clause syntax or illegal characters
CBKS121_COUNTER_NOT_FOUND
CBKS121: ODO counter field not found in schema
CBKS141_RECORD_TOO_LARGE
CBKS141: Record size exceeds maximum allowable limit
CBKS301_ODO_CLIPPED
CBKS301: ODO count clipped to maximum allowed value (warning)
CBKS302_ODO_RAISED
CBKS302: ODO count raised to minimum required value (warning)
CBKS601_RENAME_UNKNOWN_FROM
CBKS601: RENAMES from field not found in scope
CBKS602_RENAME_UNKNOWN_THRU
CBKS602: RENAMES thru field not found in scope
CBKS603_RENAME_NOT_CONTIGUOUS
CBKS603: RENAMES range is not contiguous (gap between from and thru)
CBKS604_RENAME_REVERSED_RANGE
CBKS604: RENAMES range is reversed (from comes after thru)
CBKS605_RENAME_FROM_CROSSES_GROUP
CBKS605: RENAMES from field crosses group boundary
CBKS606_RENAME_THRU_CROSSES_GROUP
CBKS606: RENAMES thru field crosses group boundary
CBKS607_RENAME_CROSSES_OCCURS
CBKS607: RENAMES range crosses OCCURS boundary
CBKS608_RENAME_QUALIFIED_NAME_NOT_FOUND
CBKS608: RENAMES qualified name not found
CBKS609_RENAME_OVER_REDEFINES
CBKS609: RENAMES alias spans REDEFINES field(s) (R4 scenario)
CBKS610_RENAME_MULTIPLE_REDEFINES
CBKS610: RENAMES spans multiple REDEFINES alternatives (R4 scenario)
CBKS611_RENAME_PARTIAL_OCCURS
CBKS611: RENAMES spans partial array elements (R5 scenario)
CBKS612_RENAME_ODO_NOT_SUPPORTED
CBKS612: RENAMES with ODO arrays not supported (R5 scenario)
CBKS701_PROJECTION_INVALID_ODO
CBKS701: Field projection error - ODO array without accessible counter
CBKS702_PROJECTION_UNRESOLVED_ALIAS
CBKS702: Field projection error - RENAMES alias spans unselected fields
CBKS703_PROJECTION_FIELD_NOT_FOUND
CBKS703: Field projection error - selected field not found in schema
CBKR211_RDW_RESERVED_NONZERO
CBKR211: RDW reserved bytes contain non-zero values
CBKC201_JSON_WRITE_ERROR
CBKC201: JSON serialization write error
CBKC301_INVALID_EBCDIC_BYTE
CBKC301: Invalid EBCDIC byte encountered during conversion
CBKD101_INVALID_FIELD_TYPE
CBKD101: Invalid field type for requested operation
CBKD301_RECORD_TOO_SHORT
CBKD301: Record data too short for field requirements
CBKD302_EDITED_PIC_NOT_IMPLEMENTED
CBKD302: Edited PIC field encountered during decode (Phase E1: not implemented)
CBKD401_COMP3_INVALID_NIBBLE
CBKD401: Invalid packed decimal nibble value
CBKD410_ZONED_OVERFLOW
CBKD410: Zoned decimal value exceeded numeric capacity
CBKD411_ZONED_BAD_SIGN
CBKD411: Invalid zoned decimal sign zone
CBKD412_ZONED_BLANK_IS_ZERO
CBKD412: Zoned field contains all spaces (BLANK WHEN ZERO processing)
CBKD413_ZONED_INVALID_ENCODING
CBKD413: Invalid zoned decimal encoding format detected
CBKD414_ZONED_MIXED_ENCODING
CBKD414: Mixed ASCII/EBCDIC encoding within single zoned field
CBKD415_ZONED_ENCODING_AMBIGUOUS
CBKD415: Zoned encoding detection failed or remains ambiguous
CBKD421_EDITED_PIC_INVALID_FORMAT
CBKD421: Edited PIC decode failed - invalid format (mismatch between data and pattern)
CBKD422_EDITED_PIC_SIGN_MISMATCH
CBKD422: Edited PIC sign editing mismatch
CBKD423_EDITED_PIC_BLANK_WHEN_ZERO
CBKD423: Edited PIC blank when zero handling error
CBKD431_FLOAT_NAN
CBKD431: Floating-point field contains NaN (decoded as null)
CBKD432_FLOAT_INFINITY
CBKD432: Floating-point field contains infinity (decoded as null)
CBKI001_INVALID_STATE
CBKI001: Iterator or decoder encountered an invalid internal state
CBKE501_JSON_TYPE_MISMATCH
CBKE501: JSON value type doesn’t match expected field type
CBKE505_SCALE_MISMATCH
CBKE505: Decimal scale mismatch during field encoding
CBKE510_NUMERIC_OVERFLOW
CBKE510: Numeric value overflow for field capacity
CBKE515_STRING_LENGTH_VIOLATION
CBKE515: String length exceeds field size limit
CBKE521_ARRAY_LEN_OOB
CBKE521: Array length exceeds ODO bounds
CBKE530_SIGN_SEPARATE_ENCODE_ERROR
CBKE530: SIGN SEPARATE encode error
CBKE531_FLOAT_ENCODE_OVERFLOW
CBKE531: Float encode overflow (f64 value too large for f32 COMP-1 field)
CBKF102_RECORD_LENGTH_INVALID
CBKF102: RDW length field references incomplete or oversized payload
CBKF104_RDW_SUSPECT_ASCII
CBKF104: RDW appears to be corrupted by ASCII conversion
CBKF221_RDW_UNDERFLOW
CBKF221: RDW length field indicates underflow condition
CBKA001_BASELINE_ERROR
CBKA001: Performance baseline operation error
CBKW001_SCHEMA_CONVERSION
CBKW001: Failed COBOL to Arrow schema conversion
CBKW002_TYPE_MAPPING
CBKW002: FieldKind has no valid Arrow type mapping
CBKW003_DECIMAL_OVERFLOW
CBKW003: Decimal precision exceeds Decimal128 limit (38 digits)
CBKW004_BATCH_BUILD
CBKW004: RecordBatch construction failure
CBKW005_PARQUET_WRITE
CBKW005: Parquet file write failure