The three programs which comprise a DODS data server can be spearated into two groups, one which provides access to `metadata' and one which reads data variables from the data set. The DAS and DDS are used by the DAP to transfer information about the data set to the client. As described in ``DODS--Data Delivery Architecture'', the client must decode these structures and use some of the information in orchestrating variable reads. While the DAS and DDS contain information that is semantically distinct, the process of building these two structures is almost identical.
Figure
shows a structure chart for the modules that
build the DAS7. In order to build the DAS object, the DAS program must
parse the parameters passed to the CGI. Once the parameters have been parsed,
the program must build a DAS object. The construction of the DAS object can
be simplified by using the DODS Client and Server Toolkit software. This software handles
the reading data set attribute information stored in the ancillary files (see
the DAP section on ancillary data) and integrating it with information that
is already part of the DAS object. The toolkit also contains
contains software which builds an ASCII text representation of the DAS for
transmission to the client.
In order to completely build the DAS it is, in general, necessary to read the data set using whatever mechanism is natural for those operations. In many cases, data sets which are part of DODS will be accessible using an established API. Thus, part of the DAS data server program must use the data set's API to read information about the variable's attributes (as defined by the data access protocol) and record them in the DAS object. The client and server toolkit software contains DAS object member functions which simplify this task somewhat, but people who intend to build the DAS program must learn both what type of information is stored in the DAS object as well as how to read that information using the data set's API.
The construction of the DDS is essentially similar to that of the DAS. The real difference between these two programs is in the content of the object which they build and send to the client. Thus, the only functional difference is in the specific API function calls used to build the object.