The first FieldList provided for an item always has a DictionaryId. While a FieldList can be parsed without a Dictionary, to interpret the data, the FieldList’s DictionaryId must be associated with a Dictionary. The DictionaryId (provided in a Dictionary response message’s Payload.SummaryData) associates a FieldList’s DictionaryId to a “family” of Dictionaries.
A Dictionary family includes a single FieldDefinition Dictionary. Enumeration tables for a single FieldDefinition Dictionary must be consolidated into a single EnumTable Dictionary that has the same DictionaryId as the FieldDefinition Dictionary. The Dictionary family may also include a single RecordTemplate Dictionary and a single DisplayTemplate Dictionary.
The DictionaryId is 0 for StyleSheet and Reference. A DictionaryId setting of 0 means unspecified, so the Dictionary is not used for parsing, interpreting, or displaying FieldLists. For example, a “TimeZone” reference dictionary may include table information about every world time zone. Because timezone information is not needed to parse FieldLists, there is no need to assign a DictionaryId to the “TimeZone” Dictionary. Thus, the value of its DictionaryId is set to 0 (i.e., unspecified).
DictionaryIds are globally scoped can have the range of -16383 to 16383. Though DictionaryIds 0 through 16383 are reserved for use by LSEG, applications can provide their own dictionaries by selecting a DictionaryId between -1 and -16383. If a single FieldList needs to use fields defined in two dictionaries, the FieldList can specify a dictionary switch using 0 for the Field ID. For details, refer to the Enterprise Message API C++ Edition Developers Guide.