Optional Fields and Bit fields
Some messages such as New Order message and Modify Order message have a number of optional fields. A count and number of bitfields in the message specify which optional fields will be present at the end of the message. If a bit is set, the field will be present. Fields are appended to the end of the message. There is no implicit framing between the optional fields. In order to decode the optional fields, they must be appended in a particular order to the end of the message. The fields of the first bitfield are appended first, lowest order bit first. Next, the fields of the next bitfield are appended, lowest order bit first. This continues for all bitfields. While certain reserved bits within a defined bitfield are used within another Cboe market and will be ignored, bits that are reserved for future expansion must be set to 0 when noted in the bitfield description.
The size, data type, and values for each field are described in List of Optional Fields.
Note that the set of optional fields returned for each Cboe to Member message type is determined at session login (using the Login Request message); hence, the exact size and layout of each message received by the client application can be known in advance. Any requested optional field, which is irrelevant in a particular context, will still be present in the returned message, but with all bytes set to binary zero (0x00).
Each return message from Cboe to Member indicates the optional fields which are present, even though the Member indicated during login which optional fields are to be sent. The reason for the inclusion (and duplication) is so that each message can be interpreted on its own, without having to find the corresponding login request or response to know which optional fields are present. So, for example, in a log file, decoding a message requires only that single message.
Example messages are shown with each message type, which should help to make this concept clear.





