### 4 Library Names and Prefixes

The naming conventions described in this document are based upon the use of a unique name for each subroutine library together with a simple unique abbreviation of it. This abbreviation is commonly referred to as the library prefix, although both it and the full library name are used as prefixes when constructing logical names and DCL symbols associated with the library.

In the remainder of this document, the library name:

LIBRARY

and its abbreviation:

LIB

are used to denote these, with the understanding that they should be replaced with the specific library name or prefix in question.

Whenever a library name or prefix is used to construct a compound name it should be separated from the subsequent part of the name with a single underscore character ‘_’. This follows the established Starlink practice for naming subroutines and functions.2 Library names.  The library name LIBRARY is the name or acronym used to identify the library as a software item in the Starlink Software Index.3 Thus examples of library names are:

 CHR Character Handling Routines EMS Error and Message Service HDS Hierarchical Data System IDI Image Display Interface PRIMDAT Primitive Data Processing SGS Simple Graphics System

Library names should be no more than 8 characters long,4 should begin with an alphabetic character and should contain only alphanumeric characters (no underscores are allowed). Existing library names should not be re-used (see the Starlink Software Index for a list of names currently in use) and potentially confusing names should be avoided. In particular, names or terms which are used for other purposes (e.g. command names), or which have potentially ambiguous meanings, should not be used as library names. Library prefixes.  The library prefix LIB should consist of three alphabetic characters4 chosen, where possible, to be an abbreviation of the library name. If the library name itself consists of just three characters, then both the name and its abbreviation should be the same. The prefixes for the libraries above are:

CHR, EMS, HDS, IDI, PRM, SGS

The library prefix is intended for use not only as part of the naming conventions described in this document, but also as a prefix for the subroutines, functions and symbolic constants within the library (according to the Starlink subroutine naming conventions described in SGP/16). Thus, routines in the SGS library have names such as:

SGS_LINE, SGS_SHTX,etc.

In some libraries, more than one routine prefix may be used to sub-divide the routines into separate facilities. In such cases the library prefix should be chosen from amongst the routine prefixes in use. For instance, the HDS library currently uses all the following routine prefixes, some of them internally:

CMP, DAT, DAU, EXC, HDS, PRO, REC

but only “HDS” is used as the library prefix.

To avoid conflicts, routine prefixes which are already in use are documented in an appendix to SGP/16 which is periodically updated. A note of prefixes allocated since the last revision of SGP/16 is held at RAL and a new prefix may be reserved by contacting any member of the Starlink project team at RAL.

2The names of symbolic constants differ slightly in using a double underscore ‘__’. 3Some existing libraries (e.g. PAR) are not distributed as separate software items, but all new libraries should be designed with separate distribution in mind.

4Some existing libraries do not adhere to these conventions, but they should be observed by all new software.