SDS Message Formats
The block header sequences the data blocks transmitted to and from client and host. When a Sabre Data Source (SDS) message belongs in multiple blocks, the block header prefaces each block with a block sequence number. This enables the receiver to reassemble the blocks into a complete SDS message.
The block sequence number is a zero-filled, right justified three-digit number. Zero-filling maintains the three-digit number. For example: if the number is 4, the zero-filling makes it 004.
The total message size is a five-digit number that is right-justified and zero-filled. In the block header for block one, this value is the total size of the SDS message across all the blocks (excluding the size of the block headers). For the rest of the blocks, this field is simply a place holder and is zero-filled.
The SDS message header identifies the purpose and layout of a particular message. It consists of two fields: a fourteen-byte message identifier and a two-digit version number field.
The message identifier has three separate fields
This logical breakdown is for information only and usually has no impact on the construction of anApplication Programming Interface (API)API
The message version is a two-digit value that starts at 01 for the first version of a message, increments through 99, and rolls back to 00 as it reaches the 100th version.
The SDS message segment is a logically grouped collection of data elements. The segment header identifies the message segment. The segment header consists of two fields, a six-character segment identifier, and a one-digit nesting level. A segment delimiter signals the start of a new segment.
The segment identifier is a six-character identifier that combines with the nesting level to uniquely identify a particular segment layout within the message. The message definition record (MDR) that corresponds to the message describes the segment.
The nesting level is a one-digit value ranging from zero to nine. It represents the position of a segment placed within the previous segment (nested). An un-nested segment has a value of zero for this field. For details on segment nesting, seeNesting
NOTEAn element delimiter followed by an element value must occur at least one time in the message and may occur more than one time depending on the layout of the MDR detailed segment.
The data element contains the data values which are sent. In a Sabre Data Source (SDS) message, there are two types of data elements: repeating and non repeating.
A repeating element is one in which multiple values transmit for a single data element. An element delimiter separates these values. An "end of repeat data delimiter" follows the last element value to signal the end of element values for the data element. The element delimiter for the next data element can safely be omitted because the "end of repeat data" signals the end of the data element. The "end of repeat data" delimiter can safely be omitted if it occurs at the end of a segment. This is because the next character is either a segment delimiter (signals the start of a new segment) or the end of message delimiter (signals the end of this SDS message).
A non repeating data element is a single value. Non-repeating elements do not need an element delimiter.