The type of an HDS object falls into two classes:
Structure objects contain other objects called components. Primitive objects contain only numeric, character, or logical values. Objects in the different classes are referred to as structures and primitives while the more general term object refers to either a structure or a primitive. Structures are analogous to the directories in a filing system - they can contain a part of the hierarchy below them. Primitives are analogous to files - they are at the bottom of any branch of the structure and contain the actual data.
In HDS, structure types are represented by character strings with the same rules of formation as name, except that a structure type may not start with an underscore character `_' (a structure type may also be completely blank). Examples of structure types are `IMAGE', `SPECTRUM', `INSTR_RESP', etc. These do not begin with an underscore, so they are easily distinguished from the primitive types, which do.
Special rules apply to the primitive types, which all begin with an underscore and are "pre-defined" by HDS, as follows:
|HDS Type||Fortran Type||Description|
|_DOUBLE||DOUBLE PRECISION||Double precision|
The first five of these primitive types are referred to as standard data types, since they correspond with standard Fortran 77 data types. The last four are non-standard data types and are typically required to accommodate raw data from instrumental hardware, which may generate numbers in these formats. The range of values which may be stored in each primitive numeric type is determined by the numerical capabilities of your machine and the particular implementation of Fortran you are using. Details of HDS, which include information about the properties of the primitive data types on the system you are using, may be found in the file:
in the directory $STARLINK_DIR/help.
The rules by which character values are handled by HDS is the same as
for Fortran 77, i.e. character values are padded with blanks or
truncated from the right depending on the relative length of the
program value and the object.