Data Formats

Intro
Installation
SysAdmin
Network
Objects
Transfer
Access
Services
Directory
Data Files
Clusters
WebApp
WebMail
Miscellaneous
HowTo
HelpMe
Licensing
The CommuniGate Pro server uses several formats for the files it creates and maintains. All data is stored in the text form to make it easy to move files between platforms, and to process CommuniGatePro data with external programs.

Strings

Strings are basic, unstructured textual data.

A string is either an atom - a sequence of letters and digits, or a quoted string - a sequence of any printable symbols except the quotation mark and the backslash symbol enclosed into the quotation marks (").
Examples: MyName   My2ndName   "My Name with spaces and the . sign"

If you want to include the quotation mark into a string, include the backslash symbol and the quotation mark, if you want to include the backslash symbol into a quoted string, include 2 backslash symbols.
Examples: "a \"string\" within string"   "Single \\ backslash"

You can use the \r symbol combination to include the Return symbol into a string, you can use the \n symbol combination to include the Line Feed symbol into a string, and your can use the \e symbol combination to include the system-independent End-Of-Line symbol(s) into a string.
Examples: "Line1\eLine2"   "TEXT3\rTEXT67\nTEXT78"
Use the \r and \n combinations to include the return and line-feed characters only when they are NOT used as line separators.

You can use the \t symbol combination to include the Tab symbol into a string.
Example: "Line1:\tField1\tField2\eLine2:\tField1\tField2"

You can use the \nnn symbol combination to include any symbol into a string, if nnn is a 3-digit decimal number equal to the code of the desired symbol.
Examples: "Using the \012 - Vertical Tabulation symbol"

DataBlocks

DataBlocks basic, unstructured blocks of binary data. They are composed as text strings with the Base64 encoding of binary data enclosed into brackets.

Example: [HcqHfHI=] - this is a binary block containing the following 5 binary bytes: 0x1D 0xCA 0x87 0x7C 0x72

Numbers

Numbers are basic, unstructured data. Each Number object contains one integer value. It is presented as a text string starting with the # symbol, followed by an optional - sign, followed by 1 or more decimal digits.

Example: #-234657

Time Stamps

Time Stamps are basic, unstructured data. Each Time Stamp object contains one global time value. The time value is presented in GMT time, as a text string starting with the #T symbols, and containing the day, months, year, and, optionally, the hour, minute, and the second values.

Example: #T22-10-2005_15:24:45

Arrays

An array is a set of values, separated with the comma signs (,) and enclosed into the parenthesis.
Example: (Element1 , "Element2" , "Element 3")

An array element can be any other data element - a string, an array, a dictionary, etc.

Example: (Element1 , ("Sub Element1", SubElement2) , "Element 3")

Any number of spaces, tabulation symbols, and/or line breaks (end-of-line symbols) can be placed between a parentheses and an element, and between an element and a comma sign.

Example:
(
  Element1  ,
  (    "Sub Element1",
   SubElement2  )
  ,
"Element 3"  )

Dictionaries

The Dictionary format is used for most CommuniGate Pro setting files, as well as for some other files and data.

A Dictionary value can be either a string, or an array, or a dictionary, so the format definition is recursive.

A dictionary is a list of key-value pairs. Each key should be unique, and the key names are case-sensitive. The equal sign (=) is placed between the key and its value, end the semicolon symbol (;) is placed after a value. The set of key-value pairs is enclosed into the curvy brackets. Each key is a string.

Example: {Key1=Element1; Key2 ="Element2" ; "Third Key"="Element 3"; }

The value element in any key-value pair can be a string, an array, and/or a dictionary.

Example: {Key1=(Elem1,Elem2); Key2={Sub1="XXX 1"; Sub2=X245;}; }

Any number of spaces, tabulation symbols, and/or line breaks (end-of-line symbols) can be placed between a bracket and a pair, around the equal sign, and around the semicolon sign.

Example:
{
 Key1  =   (Elem1,Elem2)   ;
 Key2 = {  Sub1 = "XXX 1";
    Sub2=X245;  };
}

Syntax Rules

Below is the formal syntax for the Dictionary and Array formats:
d-digit    ::= 0 .. 9
a-symbol   ::= A .. Z | a .. z | d-digit
l-symbol   ::= a-symbol | . | _
atom       ::= 1*l-symbol
b-symbol   ::= a-symbol | + | / | =
s-symbol   ::= any printable symbol except " and \ |
				        \\   |   \"   |  \r  | \n  | \e | \nnn
string     ::= " 0*s-symbol " | atom
datablock  ::= [ 1*b-symbol ]
day        ::= 0 .. 3 d-digit (2-digit number in the 1..31 range)
month      ::= 0 .. 1 d-digit (2-digit number in the 1..12 range)
year       ::= 1 .. 2 d-digit d-digit d-digit (4-digit number in the 1970..2038 range)
hour       ::= 0 .. 2 d-digit (2-digit number in the 0..23 range)
minute     ::= 0 .. 5 d-digit (2-digit number in the 0..59 range)
second     ::= 0 .. 5 d-digit (2-digit number in the 0..59 range)
number	  ::= # [ -]  1*d-digit
timestamp  ::= # T day - month - year [ _ hour : minute : second ]
array      ::= ( [object [, object ...]] )
dictionary ::= { [string = object ; [string = object ; ...]] }
object     ::= string | datablock | number |timestamp |
               array | dictionary 

CommuniGate® Pro Guide. Copyright © 1998-2005, Stalker Software, Inc.