Example: ox_sm1 returns the following data as its mathcap.
Class.mathcap [ [199909080 , $Ox_system=ox_sm1.plain$ , $Version=2.990911$ , $HOSTTYPE=i386$ ] , [262 , 263 , 264 , 265 , 266 , 268 , 269 , 272 , 273 , 275 , 276 ] , [[514] , [2130706434 , 1 , 2 , 4 , 5 , 17 , 19 , 20 , 22 , 23 , 24 , 25 , 26 , 30 , 31 , 60 , 61 , 27 , 33 , 40 , 34 ]]]
A mathcap has three components. The first one, which is also a list,
contains informations
to identify the version number of the OpenXM protocol,
the system and hosts on which the application runs.
In the above example, Ox_system denotes the system name.
HOSTTYPE represents the OS type and taken from $HOSTTYPE
enviroment variable.
The second component consists of avaiable SM commands.
The third component is a list of pairs. Each pair consists
of an OX message tag and the list of available message tags.
Again in the above example, 514 is the value of OX_DATA
and it indicates that the server accepts CMO (without size information)
as mathematical data messages. In this case the subsequent
list represents available CMO tags.
OpenXM/XML expression of the example above:
<cmo_mathcap> <cmo_list for="mathcap"> <cmo_list> <int32 for="length"> 4 </int32> <cmo_int32 for="Protocol version"> 001001003 </cmo_int32> <cmo_string for="system name"> Ox_system=ox_sm1.plain </cmo_string> <cmo_string for="system version"> Version=2.990911 </cmo_string> <cmo_string for="hosttype"> HOSTTYPE=i386 </cmo_string> </cmo_list> <cmo_list for="Available SM tags"> <int32 for="length"> 11 </int32> <cmo_int32> 262 </cmo_int32> <cmo_int32> 263 </cmo_int32> ... </cmo_list> <cmo_list for="Available OX_DATA tags"> <int32 for="length"> 2 </int32> <cmo_list for="OX_DATA tag"> <int32 for="length"> 1 </int32> <cmo_int32 comment="OX_DATA"> 514 </cmo_int32> </cmo_list> <cmo_list for="Available CMO tags"> <int32 for="length"> 21 </int32> <cmo_int32 comment="CMO_ERROR2"> 2130706434 </cmo_int32> <cmo_int32 comment="CMO_NULL"> 1 </cmo_int32> .... </cmo_list> </cmo_list> </cmo_list> </cmo_mathcap>