Table element types (see: FLMMAT_TYP_TABELM). More...
Macros | |
| #define | FLMELM_FLAG_NULLID 0x01000000U |
| Flag for null indication. | |
| #define | FLMELM_FLAG_EMPTID 0x02000000U |
| Flag for empty indication. | |
| #define | FLMELM_TYPTAB_NONE 0x00000000U |
| No element type. | |
| #define | FLMELM_TYPTAB_BINARY 0x00000001U |
| Binary element type. | |
| #define | FLMELM_TYPTAB_STRING 0x00000002U |
| String element type. | |
| #define | FLMELM_TYPTAB_INTEGER 0x00000003U |
| Integer element type. | |
| #define | FLMELM_TYPTAB_FLOAT 0x00000004U |
| Float element type. | |
| #define | FLMELM_TYPTAB_INT64 0x00000005U |
| Int64 element type. | |
| #define | FLMELM_TYPTAB_DATE 0x00000006U |
| Date/timestamp element type. | |
| #define | FLMELM_TYPTAB_DETECT 0x00000009U |
| Auto-detect column type from data (type.detect()). | |
| #define | FLMELM_TYPTAB_HEADER 0x0000000AU |
| Table header element type. | |
Table element types (see: FLMMAT_TYP_TABELM).
A table matrix consists of a number of different element types of which each reflects the data type of the column. Additional bits in the second byte are used for different kind of attributes (e.g. tag of an TLV). The attribute length are encoded in the high oder 2 bytes\0.
| #define FLMELM_FLAG_EMPTID 0x02000000U |
Flag for empty indication.
This flag is added to each element to indicate a default value for an empty data item (e.g. a integer string of length 0 replaced by a default value (e.g. 0)).
| #define FLMELM_FLAG_NULLID 0x01000000U |
Flag for null indication.
This flag are add to each element to indicate a default value for an optional item that was not part of the data.
| #define FLMELM_TYPTAB_BINARY 0x00000001U |
Binary element type.
A binary data type is a black box for each kind of data in a certain length. The external representation can be different encodings. Internally representation if always the binary form.
| #define FLMELM_TYPTAB_DATE 0x00000006U |
Date/timestamp element type.
A date or timestamp value read from an external representation (string, BCD zoned/packed, binary integer, or C/Java memory type) and written as an ISO-8601 formatted UTF-8 string. The INFMT pattern controls how the input bytes are decoded; OUTFMT controls the output string layout (default: auto-derived from INFMT tokens, typically YYYY-MM-DD).
The pipeline PAYLOAD of a date is ISO-8601 text in UTF-8, but the element keeps its own type tag FLMELM_TYPTAB_DATE – it is not neutralised to FLMELM_TYPTAB_STRING. A consumer that reconstructs the element type from a stored column type (FLMMAT, i.e. the FLAM5 archive) therefore sees the same tag that FMTTAB emits, which is what makes an archive round-trip of a date column work.
Because the payload is text, STRING and DATE are accepted interchangeably where an element meets a column: a date is always a valid string, while a string is only a valid date if it really is one. Validating that is the job of the date converter (DATCNV), not of the type check – a non-date is refused there rather than silently written.
| #define FLMELM_TYPTAB_DETECT 0x00000009U |
Auto-detect column type from data (type.detect()).
Marker type set by the COB2ROW converter and the type.detect() CLP syntax to flag a column for atomic type-detection (TYPDET) at read time. FMTTAB resolves each DETECT column to its actual type before invoking the column converter. No write-side conversion exists for this type.
| #define FLMELM_TYPTAB_FLOAT 0x00000004U |
Float element type.
A float data type is a byte array in a certain length. The external representation can be in different encodings (IEEE, BCD, string). The internal representation is a hidden complex data structure (black box).
| #define FLMELM_TYPTAB_HEADER 0x0000000AU |
Table header element type.
This is a special element type to detect a table header in a element list of tables. Each table starts with a CLP string containing the table name and a list of column names. The names can have optional different kind of path variants preceded to support XML and other hierarchical data formats. And the name can be appended optional the DTL for this column in parenthesis. Such a row specification all the information needed to reproduce the data.
The high order 24 bit contains additional the column count for this table. The low order 8 bit contain this this value. The column count can be used to determine the records by this amount of elements.
This is the maximum type for the matrix type EMLTAB.
| #define FLMELM_TYPTAB_INT64 0x00000005U |
Int64 element type.
The Int64 data type is a 64 bit value in two's complement (with sign) which is encoded neutrally as big-endian. The external representation can be in different encodings (two's complement, BCD, string).
| #define FLMELM_TYPTAB_INTEGER 0x00000003U |
Integer element type.
A integer data type is a byte array in a certain length. The external representation can be in different encodings (two's complement, BCD, string). The internal representation is a hidden complex data structure (black box).
| #define FLMELM_TYPTAB_NONE 0x00000000U |
No element type.
This element type contains elements which are only parsed from a row. There is no data type defined, it is simply a part (blob) from a row. This element type is handled like a binary element at write.
Attention: The net data of table element list are only consists of such elements.
| #define FLMELM_TYPTAB_STRING 0x00000002U |
String element type.
A string data type is a character array in a certain length. The external representation can be in different encodings (character sets). The internal representation if always Unicode in UTF-8.