Message Terminator All messages must end in a carriage return (hexadecimal 0d). This character is interpreted as the last character in a message and cannot be used elsewhere as a character in a message. Nulls Null codes (hexadecimal code 00) cannot appear anywhere in a message. Fixed-length fields Fixed-length required fields must contain specific information and cannot be left blank. Variable-length fields Variable-length fields start with 2 field identifier characters, followed by 0 to 255 characters from a mutually agreed upon character set, and end with a | (code hexadecimal 7C). The | is a delimiter so it cannot appear anywhere except as the last character of the field. Some languages use code 7C as a printable character. In this case, another delimiter character must be defined. The field delimiter code should be configurable in the SC. field = When variable-length or optional fields from the ACS are not used, they should be left out entirely. Beginning with Ver. 2.00 of the protocol, the following rules are followed in assigning field identifiers: • all fields added to pre-existing messages are assigned field identifiers • all variable-length fields are assigned field identifiers • all optional fields are assigned field identifiers • required fields in new messages that are fixed in length and are not perceived to be general-purpose fields (not useful in other messages) are not assigned field identifiers • any field assigned a field identifier , whether fixed or variable in length, must end with a delimiter character. This will hopefully make it easier to maintain backward compatibility. Only displayable characters (no control characters) should be included in print or display messages from the ACS. Establishing a Connection This protocol does not define how a communications session between the SC and ACS is established, only the format of the data transferred between the SC and the ACS once they have established a connection. Error Handling Checksums and Sequence Numbers The protocol allows extra error detection to be enabled, over and above any error detection provided by the communications medium’s protocol. When error detection is enabled, a sequence number field, followed by a checksum field, is appended to every message as defined in previous pages. When included in a message, the sequence number field should always be the second-to-last field, the checksum field should be the last field, and they should be followed by a carriage return (see above) as the last character in the message.