The following discussion uses an example of an SDA extension
that invokes the MBX command to output a formatted display of
the status of the mailbox devices in the system. The source file,
MBX$SDA.C, is provided in SYS$EXAMPLES.
An SDA extension consists of a shareable image, in this case
MBX$SDA.EXE, either located in the directory SYS$LIBRARY or
found by translating the logical name MBX$SDA. It contains two
universal symbols: SDA$EXTEND, the entry point; and SDA$EXTEND_
VERSION, the address of a longword that contains the version of
the interface used (in the format of major/minor ident), which
allows SDA to confirm it has activated a compatible extension.
The image contains at least two modules: MBX$SDA, the user-
written module that defines the two symbols and provides the
code and data necessary to produce the desired formatted output;
and SDA_EXTEND_VECTOR, which provides jackets for all of the
callable SDA routines, and is found in SYS$LIBRARY:VMS$VOLATILE_
PRIVATE_INTERFACES.OLB. The user-written portion can be split
into multiple modules.
Whenever SDA receives an unrecognized command, like "SDA> MBX",
it attempts to activate the shareable image MBX$SDA at the
SDA$EXTEND entry point. If you choose a command name that matches
the abbreviation of an existing command, SDA can be forced to
activate the extension using the "DO" command. For example, if
you had an SDA extension called VAL$SDA, you could not activate
it with a command like "SDA> VAL" as SDA would interpret that
as an abbreviation of its VALIDATE command. But VAL$SDA can be
activated by issuing "SDA> DO VAL".
With or without the "DO" prefix, the rest of the command line
is passed to the extension; it is up to the extension to parse
it. The example extension MBX$SDA includes support for commands
of the form "SDA> MBX SUMMARY" and "SDA> MBX <address>" to
demonstrate this. If the extension is invoked with no arguments,
it should do no more than display a simple announcement message,
or prompt for input. This assists in the debugging of the
extension, as described in Debugging an Extension.
Compiling and Linking an SDA Extension describes how to compile,
link, and invoke an SDA extension, and describes what an SDA
extension should contain.
Additional Information:
explode
extract