Copyright Digital Equipment Corp. All rights reserved.

Description

   The catopen function opens the message catalog identified by
   name.

   If name contains a colon (:),  a square opening bracket ([), or
   an angle bracket (<),  or is defined as a logical name, then it
   is assumed that name is the complete file specification of the
   catalog.

   If it does not include these characters, catopen assumes that
   name is a logical name pointing to an existing catalog file. If
   name is not a logical name, then the logical name NLSPATH is used
   to define the file specification of the message catalog. NLSPATH
   is defined in the user's process. If the NLSPATH logical name is
   not defined, or no message catalog can be opened in any of the
   components specified by the NLSPATH, then the SYS$NLSPATH logical
   name is used to search for a message catalog file.

   Both NLSPATH and SYS$NLSPATH are comma-separated lists of
   templates. The catopen function uses each template to construct a
   file specification. For example, NLSPATH could be defined as:

DEFINE NLSPATH SYS$SYSROOT:[SYS$I18N.MSG]%N.CAT,SYS$COMMON:[SYSMSG]%N.CAT

   In this example, catopen first searches the directory
   SYS$SYSROOT:[SYS$I18N.MSG] for the named catalog. If the named
   catalog is not found there, the directory SYS$COMMON:[SYSMSG] is
   searched. The catalog name is constructed by substituting %N with
   the name passed to catopen, and adding the .cat suffix. %N is
   known as a substitution field. The following substitution fields
   are valid:


   Field Meaning

   %N    Substitute the name passed to catopen
   %L    Substitute the locale name.

         The period (.)  and at-sign (@)  characters in the locale
         name are replaced by an underscore (_)  character.

         For example, the "zh_CN.dechanzi@radical" locale name
         results in a substitution of ZH_CN_DECHANZI_RADICAL.
   %l    Substitute the language part of the locale name. For
         example, the language part of the en_GB.ISO8859-1 locale
         name is en.
   %t    Substitute the territory part of the locale name. For
         example, the territory part of the en_GB.ISO8859-1 locale
         is GB.
   %c    Substitute the codeset name from the locale name. For
         example, the codeset name of the en_GB.ISO8859-1 locale
         name is ISO8859-1.

   If the oflag argument is set to NL_CAT_LOCALE, then the
   current locale as defined for the LC_MESSAGES category is
   used to determine the substitution for the %L, %l, %t, and %c
   substitution fields. If the oflag argument is set to 0, then the
   value of the LANG environment variable is used as a locale name
   to determine the substitution for these fields. Note that using
   NL_CAT_LOCALE conforms to the XPG4 specification while a value of
   0 (zero) exists for the purpose of preserving XPG3 compatibility.
   Note also, that catopen uses the value of the LANG environment
   variable without checking whether the program's locale can be set
   using this value. That is, catopen does not check whether this
   value can serve as a valid locale argument in the setlocale call.

   If the substitution value is not defined, an empty string is
   substituted.

   A leading comma or two adjacent commas (,,) is equivalent to
   specifying %N. For example,

   DEFINE NLSPATH ",%N.CAT,SYS$COMMON:[SYSMSG.%L]%N.CAT"

   In this example, catopen searches in the following locations in
   the order shown:

   1. name (in the current directory)

   2. name.cat (in the current directory)

   3. SYS$COMMON:[SYSMSG.locale_name]name.cat