The visible elements of MemCom are the MemCom datasets. Datasets are in general a collection of elements, such as numerical lists of the same data type (vectors, matrices, hypermatrices), relational tables, text (procedures, programs, reports etc.) or graphics (meta-files, page description languages, bitmaps). MemCom discerns between two different categories of datasets:
Position-dependent data (arrays of data of the same type).
Position-independent data, such as relational tables, relational datasets and dataset descriptors, or array tables.
Each dataset owns an optional dataset descriptor consisting of a relational table. The descriptor offers a very useful way of describing the nature of data and of assigning attributes to datasets. Chapter 4 describes relational datasets and dataset descriptors
The database handle, a positive integer number. Note that handle are independent of Fortran input/output units).
The dataset name (string) or the dataset number (integer), and an optional subset number idiv (integer).
The dataset name and hyper-matrix indexes (string).
Keys and selection criteria (relational tables and relation datasets).
Datasets are referred to by symbolic names (also referred to as label or dataset name, both for pure data manipulation and for arithmetic operations, i.e vector and matrix algebra. Thus, datasets are accessed internally through dictionaries. Datasets can also be referenced by number. This is valid for all datasets stored on databases. It is however not a good programming practise to access datasets by number, because the position-independence is then lost. Datasets are further described by the following attributes:
The address on the respective database file or in the Dynamic Memory buffer.
The dataset type.
The total size of the dataset and the set dimensions.
The creation time stamp.
The dataset descriptor.
A dataset name consists of a character string with a length ranging from 1 to 63 characters, see Appendix B. Name fields may contain arbitrary numerical and alphabetic characters. However, blanks should be avoided (replace blanks by the underscore character). Dataset names may also be structured into fields with the dot (.) character. Example:
'COOR.1', 'DISP.*.0.0.3'
Special functions allow for composing such dataset names and for searching for dataset names containing pattern matching characters in the fields.
Subdivided datasets are intended to be used in applications where a volume of data consists of many similar subsets, and where the user predominantly accesses the subsets, but rarely accesses the set as a whole. Before sub-divided datasets can be referenced, they must be initialised on the database. Space will then be reserved on the corresponding database for storing the whole set with all subdivisions as one contiguous data string. If a dataset has been defined without subdivisions, any subdivision number included in a name specification will be ignored. If a set has been given subdivisions and a subdivision number is specified when calling the set, only the requested subset will be returned to the calling program. If a set does have subdivisions and a reference to it specifies a subdivision number of zero, the whole set is accessed. This is also valid for writing datasets to the databases.