DLL Programmer's Guide for TNS/E Systems

Essential DLL Facility Controls
DLL Programmer’s Guide for TNS/E Systems527252-006
2-5
File-Name Qualification
OSS - If it is "absolute" (begins with a /), take it as is; otherwise append it to the
current working directory.
Win32 - As above, except for drive: and \ issues.
The distinctions become more important for file names specified by the -lib (-l) option.
In this case, only unqualified names are subject to searching through the list of paths.
Partially or fully qualified names are treated as above.
Notes About MAP DEFINES
In General
A DEFINE is a collection of attributes to which a common name has been assigned.
These attributes can be passed to a process simply by referring to the DEFINE name
from within the process. The =_DEFAULTS DEFINE cited above is an example of such
a DEFINE; this DEFINE passes the default node name, volume, and subvolume to a
process.
The DEFINE mechanism can be used for passing file names to processes; this kind of
DEFINE is called a CLASS MAP DEFINE. The following example creates a CLASS
MAP DEFINE called =MYFILE and gives it a FILE attribute equal to
\SWITCH.$DATA.MESSAGES.ARCHIVE:
1> SET DEFINE CLASS MAP, FILE \SWITCH.$DATA.MESSAGES.ARCHIVE
2> ADD DEFINE =MYFILE
Whenever your process accesses the DEFINE =MYFILE, it gets the name of the file
specified in the DEFINE. For example, when your process opens =MYFILE, the file
that actually gets opened is \SWITCH.$DATA.MESSAGES.ARCHIVE.
eld Specifics
There are various items on the eld command line that are filenames. These include
the parameters of various options, such as -o, -l, -strip, etc., as well as
filenames that are just written directly on the command line. For such command line
items, eld checks if they begin with equal signs. If so, in the Guardian case, the linker
will immediately do the expansion of the DEFINE, so that all uses thereafter will be the
same as if the expanded name had been given originally (with one special case
described below). The expansion of the name should also be done in uppercase, and
the linker will put out an informational message. If the specified string cannot be
expanded as a MAP DEFINE, that is an error. And, on other platforms, such as the PC
or OSS, if a filename parameter begins with an equal sign, that is unconditionally an
error.
On the other hand, there are certain items on the command line that are not filenames,
although they look similar to filenames. In such cases, if the string starts with an equal
sign, that is always an error, even on Guardian. Examples of this include the names of
subvolumes specified in options such as -L and -rpath, and the DLL name specified
by the -soname option.