Copyright Digital Equipment Corp. All rights reserved.

Description

   The LBR$OUTPUT_HELP routine provides a simple, one-call method
   to initiate an interactive help session. Help library bookkeeping
   functions, such as LBR$INI_CONTROL and LBR$OPEN, are handled
   internally. You should not call LBR$INI_CONTROL or LBR$OPEN
   before you issue a call to LBR$OUTPUT_HELP.

   LBR$OUTPUT_HELP accepts help keys in the same format as LBR$GET_
   HELP, with the following qualifications:

   o  If the keyword HELP is supplied, help text on HELP is output,
      followed by a list of HELP subtopics available.

      If no help keys are provided or if the line_desc argument is
      0, a list of topics available in the root library is output.

   o  If the line_desc argument contains a list of help keys, then
      each key must be separated from its predecessor by a slash
      (/)  or by one or more spaces.

   o  The first key can specify a library to replace the main
      library as the root library (the first library searched) in
      which LBR$OUTPUT_HELP searches for help. A key used for this
      purpose must have the form <@filespec>, where filespec is
      subject to the same restrictions as the library_name argument.
      If the specified library is an enabled user-defined default
      library, then filespec can be abbreviated as any unique
      substring of that default library's logical name translation.

   In default library searches, you can define one or more default
   libraries for LBR$OUTPUT_HELP to search for help information not
   contained in the root library. Do this by equating logical names
   (HLP$LIBRARY, HLP$LIBRARY_1, . . . ,HLP$LIBRARY_999) to the file
   specifications of the default help libraries. You can define
   these logical names in the process, group, or system logical name
   table.

   If default library searching is enabled by the flags argument,
   LBR$OUTPUT_HELP uses those flags to determine which logical
   name tables are enabled and then automatically searches any
   user default libraries that have been defined in those logical
   name tables. The library search order proceeds as follows: root
   library, main library (if specified and different from the root
   library), process libraries (if enabled), group libraries (if
   enabled), system libraries (if enabled). If the requested help
   information is not found in any of these libraries, LBR$OUTPUT_
   HELP returns to the root library and issues a "help not found"
   message.

   To enter an interactive help session (after your initial request
   for help has been satisfied), you must set the HLP$M_PROMPT bit
   in the flags argument.

   You can encounter four different types of prompt in an
   interactive help session. Each type represents a different level
   in the hierarchy of help available to you.

   1. If the root library is the main library and you are not
      currently examining HELP for a particular topic, the prompt
      Topic? is output.

   2. If the root library is a library other than the main library
      and if you are not currently examining HELP for a particular
      topic, a prompt of the form @<library-spec>Topic? is output.

   3. If you are currently examining HELP for a particular topic
      (and subtopics), a prompt of the form <keyword...>subtopic? is
      output.

   4. A combination of 2 and 3.

   When you encounter one of these prompt messages, you can respond
   in any one of several ways. Each type of response and its effect
   on LBR$OUTPUT_HELP in each prompting situation is described in
   the following table:

                      Action in the Current Prompt Environment
   Response           (Keyed to the prompt in the preceding list)

   keyword [ . . . ]  (1,2)  Search all enabled libraries for these
                      keys.
                      (3,4)  Search additional help for the current
                      topic (and subtopic) for these keys.
   @filespec          (1,2)  Same as above, except that the root
   [keyword[ . . . ]] library is the library specified by filespec.
                      If the specified library does not exist, treat
                      @filespec as a normal key.
                      (3,4)  Same as above; treat @filespec as a
                      normal key.
   ?                  (1,2)  Display a list of topics available in
                      the root library.
                      (3,4)  Display a list of subtopics of the
                      current topic (and subtopics) for which help
                      exists.
   Carriage Return    (1)  Exit from LBR$OUTPUT_HELP.
                      (2)  Change root library to main library.
                      (3,4)  Strip the last keyword from a list of
                      keys defining the current topic (and subtopic)
                      environment.
   Ctrl/Z             (1,2,3,4) Exit from LBR$OUTPUT_HELP.