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, DataBlocks, Dictionary, and Array Formats

Strings

Strings are the very 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 are the very basic, unstructured binary data. They are specified using the text strings with the Base64 encoding of binary data enclosed into brackets.
Example: [HcqHfHI=] - this is a binary block containing the following 5 bytes: 0x1D 0xCA 0x87 0x7C 0x72

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 either a string, or an array, or a dictionary.
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:
a-symbol   ::= A .. Z | a .. z | 0 .. 9
atom       ::= 1*a-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 ]
array      ::= ( [object [, object ...]] )
dictionary ::= { [string = object ; [string = object ; ...]] }
object     ::= string | array | dictionary | datablock


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