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 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>