VMS Help
CC

 *Conan The Librarian (sorry for the slow response - running on an old VAX)

  Online Help for COMPAQ C V6.4

  The CC command invokes the Compaq C compiler to compile C source
  programs.  The syntax is:

       CC file-spec,...  +library-file-spec/LIBRARY...

  An HTML version of this online help is available in:

  SYS$COMMON:[SYSHLP.CC$VAX_HELP_064]

  1 - Command Parameters

  file-spec,...

      One or more Compaq C source files separated by plus signs or
      commas.  If plus signs are used, the input files are
      concatenated into a single object file.  If commas are used,
      each file is compiled separately to create separate object
      files.  If no input file extension is specified, Compaq C
      assumes the .C default file extension.

  library-file-spec

      A text library containing #include modules referenced in one or
      more of the source files.  A library file specification must be
      concatenated with a file specification with a plus sign and
      qualified using the /LIBRARY qualifier.  If the input file
      extension is not specified, Compaq C assumes the .TLB default
      file extension.

  2 - Qualifiers

  Indicate special actions to be performed by the compiler or special
  input file properties.  Compiler qualifiers can apply to either the
  CC command or to the specification of the file being compiled.
  When a qualifier follows the CC command, it applies to all the
  files listed.  When a qualifier follows the file specification, it
  applies only to the file immediately preceding it.

  The following list shows all the qualifiers available with the CC
  command:

   o  /ACCEPT(option[,...])

   o  /[NO]ANALYSIS_DATA[=file-spec]

   o  /ASSUME=(option[,...])

   o  /COMMENTS={AS_IS | SPACE}

   o  /[NO]CROSS_REFERENCE

   o  /[NO]DEBUG[=(option[,...])]

   o  /DECC

   o  /[NO]DEFINE=(identifier[=definition][,...])

   o  /[NO]DIAGNOSTICS[=file-spec]

   o  /ERROR_LIMIT[=number]

   o  /EXTERN_MODEL=option

   o  /FLOAT=option

   o  /[NO]G_FLOAT

   o  /[NO]INCLUDE_DIRECTORY=(pathname[,...])

   o  /LIBRARY

   o  /[NO]LINE_DIRECTIVES

   o  /[NO]LIST[=file-spec]

   o  /[NO]MACHINE_CODE[=option]

   o  /[NO]MEMBER_ALIGNMENT

   o  /[NO]MMS_DEPENDENCIES[=(option[,option])]

   o  /NAMES=(option1,option2)

   o  /NESTED_INCLUDE_DIRECTORY[=option]

   o  /[NO]OBJECT[=file-spec]

   o  /[NO]OPTIMIZE[=option]

   o  /PRECISION={SINGLE | DOUBLE}

   o  /[NO]PREFIX_LIBRARY_ENTRIES

   o  /[NO]PREPROCESS_ONLY[=filename]

   o  /[NO]PROTOTYPE[=(option[,...])]

   o  /REPOSITORY=option

   o  /[NO]SHARE_GLOBALS

   o  /SHOW[=(option[,...])]

   o  /[NO]STANDARD=(option)

   o  /[NO]UNDEFINE=(identifier[,...])

   o  /[NO]UNSIGNED_CHAR

   o  /VAXC

   o  /[NO]VERSION

   o  /[NO]WARNINGS[=(option[,...])]

3 - /ACCEPT

     /ACCEPT=(option[,option])

  Allows the compiler to accept C language syntax that it might not
  normally accept.

  Compaq C accepts slightly different syntax depending upon the
  compilation mode specified with the /STANDARD qualifier.  The
  /ACCEPT qualifier can fine tune the language syntax accepted by
  each /STANDARD mode.

  Specify one of the following qualifier options:

   [NO]C99_KEYWORDS      Controls whether or not the C99 Standard
                         keywords inline and restrict (which are are
                         in the C89 namespace for user identifiers)
                         are accepted without double leading
                         underscores.  The spelling with two leading
                         underscores (__inline, __restrict) is in the
                         namespace reserved to the compiler
                         implementation and is always recognized as a
                         keyword regardless of this option.

                         In /STANDARD=RELAXED_ANSI89 mode, the
                         default is C99_KEYWORDS.  In all other
                         compiler modes, the default is
                         NOC99_KEYWORDS.

   [NO]GCCINLINE         The gcc compiler implements an inline
                         function qualifier for functions with
                         external linkage that gives similar
                         capabilites as the C9x extern inline feature
                         for functions, but the usage details are
                         somewhat different:  the combination of
                         extern and inline keywords makes an inline
                         definition, instead of the exlusive use of
                         the inline keyword without the extern
                         keyword.  This option controls which
                         variation of the feature is implemented.

                         In all compiler modes, the default is
                         NOGCCINLINE.

   [NO]VAXC_KEYWORDS     Controls whether or not the compiler
                         recognizes the VAX C keywords (such as
                         "readonly") regardless of the /STANDARD mode
                         used.

   [NO]RESTRICT_KEYWORD  Controls whether or not the compiler
                         recognizes the C9x standard restrict keyword
                         regardless of the /STANDARD mode used.

                         This only affects recognition of the
                         spelling of the keyword as proposed for
                         inclusion in the C9x standard.  The spelling
                         with two leading underscores, __restrict, is
                         in the namespace reserved to the compiler
                         implementation, and it is always recognized
                         as a keyword regardless of this option.

                         Note that [NO]RESTRICT_KEYWORD is a subset
                         of [NO]C99_KEYWORDS.  They have the same
                         compiler-mode defaults.

 The default values are based upon the settings of the /STANDARD
 qualifier:

 For /STANDARD=RELAXED_ANSI89, the default is:
  /ACCEPT=(VAXC_KEYWORDS,C99_KEYWORDS,NOGCCINLINE)

 For /STANDARD=VAXC, the default is:
  /ACCEPT=(VAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE)

 In all other modes, the default is:
  /ACCEPT=(NOVAXC_KEYWORDS,NOC99_KEYWORDS,NOGCCINLINE)

4 - /ANALYSIS_DATA

     /ANALYSIS_DATA[=file-spec]
     /NOANALYSIS_DATA (D)

  Controls whether the compiler generates a file of source code
  analysis information.  The default file name is the file name of
  the primary source file; the default file type is .ANA.

5 - /ASSUME

     /ASSUME=(option[,...])

  Controls compiler assumptions.  You may select the following
  options:

     [NO]EXACT_CDD_OFFSETS

        Controls the alignment of Control Data Dictionary records.

        If /ASSUME=EXACT_CDD_OFFSETS is specified, the records input
        from the CDD are given the exact alignment (relative to the
        start of the record) specified by the CDD definition.  This
        alignment is independent of the current compiler
        member-alignment setting.

        If /ASSUME=NOEXACT_CDD_OFFSETS is specified, the compiler may
        modify the offsets specified in a CDD record according to the
        current member-alignment setting.

        The default is /ASSUME=NOEXACT_CDD_OFFSETS.

     [NO]HEADER_TYPE_DEFAULT

        Specifies whether the default file-type mechanism (.h) for
        header files is enabled (HEADER_TYPE_DEFAULT) or disabled
        (NOHEADER_TYPE_DEFAULT).

        The default is /ASSUME=HEADER_TYPE_DEFAULT.

     [NO]WRITABLE_STRING_LITERALS

        Stores string constants in a writable psect.  Otherwise, such
        constants will be placed in non-writable psect.

        For /STANDARD=VAXC or /STANDARD=COMMON, the default is
        /ASSUME=WRITABLE_STRING_LITERALS.  For all other compiler
        modes, the default is /ASSUME=NOWRITABLE_STRING_LITERALS.

6 - /COMMENTS

     /COMMENTS={AS_IS | SPACE}
     /COMMENTS=SPACE (D) (ANSI89, RELAXED_ANSI89, and MIA compiler
 modes)
     /NOCOMMENTS (D) (all other compiler modes)

  Governs whether or not comments appear in preprocess output files
  and, if they are to appear, whether they appear themselves or are
  replaced by a single space.  Specify one of the following qualifier
  options:

   AS_IS     Specifies that the comment appears in the output file.

   SPACE     Specifies that a single space replaces the comment in
             the output file.

 NOCOMMENTS specifies that nothing replaces the comment in the output
 file.  This can result in inadvertent token pasting.

 The Compaq C preprocessor might replace a comment at the end of a
 line or on a line by itself with nothing, even if /COMMENTS=SPACE is
 specified.  Doing so does not change the meaning of the program.

 The default is /COMMENTS=SPACE for the ANSI89, RELAXED_ANSI89, and
 MIA compiler modes.  The default is /NOCOMMENTS for all other
 compiler modes.

 Specifying just /COMMENTS defaults to /COMMENTS=AS_IS.

7 - /CROSS_REFERENCE

     /NOCROSS_REFERENCE (D)

  Specifies whether the compiler generates cross-references.  If you
  specify /CROSS_REFERENCE, the compiler lists, for each variable
  referenced in the procedure, the line numbers of the lines on which
  the variable is referenced.  You must use the /CROSS_REFERENCE
  qualifier with either the /SHOW=SYMBOLS or the /SHOW=BRIEF
  qualifiers.  To obtain any type of listing, you must specify /LIST.

8 - /DEBUG

     /DEBUG[=(option[,...])]
     /DEBUG=(TRACEBACK,NOINLINE,NOSYMBOLS) (D)
     /NODEBUG

  Includes information in the object module for use by the OpenVMS
  Debugger.  You can select the following options:

  ALL            Includes all possible debugging information.

                 On Alpha systems, /DEBUG=ALL is equivalent to
                 /DEBUG=(TRACEBACK,SYMBOLS).

                 On VAX systems, /DEBUG=ALL is equivalent to
                 /DEBUG=(TRACEBACK,SYMBOLS,INLINE).

  INLINE         Causes a STEP command to STEP/INTO an inlined
                 function call.

  NOINLINE       Causes a STEP command to STEP/OVER an inlined
                 function call.

  NONE           Excludes any debugging information.

  NOSYMBOLS      Suppresses generation of symbol table records.

  SYMBOLS        Generates symbol table records.

  NOTRACEBACK    Suppresses generation of traceback records.

  TRACEBACK      Generates traceback records.

  Specifying /DEBUG with no options is equivalent to specifying
  /DEBUG=ALL.

  If the /DEBUG qualifier is not specified, the default is
  /DEBUG=(TRACEBACK,NOINLINE,NOSYMBOLS).

9 - /DECC

  The CC command is used to invoke either the VAX C or Compaq C
  compiler.  If your system has a VAX C compiler already installed on
  it, the Compaq C installation procedure provides the option of
  specifying which compiler will be invoked by default when just the
  CC command verb is used.  To invoke the compiler that is not the
  default, use the CC command with the appropriate qualifier:
  CC/DECC for the Compaq C compiler, or CC/VAXC for the VAX C
  compiler.

  If your system does not already have a VAX C compiler installed on
  it, the CC command will invoke the Compaq C compiler.

10 - /DEFINE

     /DEFINE=(identifier[=definition][,...])
     /NODEFINE (D)

  Performs the same function as the #define preprocessor directive.
  That is, /DEFINE defines a token string or macro to be substituted
  for every occurrence of a given identifier in the program.

  DCL converts all input to uppercase unless it is enclosed in
  quotation marks.

  The simplest form of a /DEFINE definition is:

  /DEFINE=true

  This results in a definition like the one that would result from
  the following definition:

  #define TRUE 1

  Macro definitions must be enclosed in quotation marks as shown in
  the following definition:

  /DEFINE="funct(a)=a+sin(a)"

  This definition produces the same results as the following
  definition:

  #define funct(a) a+sin(a)

  When more than one /DEFINE is present on the CC command line or in
  a single compilation unit, only the last /DEFINE is used.

  When both /DEFINE and /UNDEFINE are present in a command line,
  /DEFINE is evaluated before /UNDEFINE.

  The default is /NODEFINE.

11 - /DIAGNOSTICS

     /DIAGNOSTICS[=file-spec]
     /NODIAGNOSTICS (D)

  Creates a file containing compiler diagnostic messages.  The
  default file extension for a diagnostics file is .DIA.  The
  diagnostics file is used with the DEC Language-Sensitive Editor
  (LSE).  To display a diagnostics file, enter the command
  REVIEW/FILE=file-spec while in LSE.

12 - /ERROR_LIMIT

     /ERROR_LIMIT[=number]
     /NOERROR_LIMIT

  Limits the number of Error-level diagnostic messages that are
  acceptable during program compilation.  Compilation terminates when
  the limit (number) is exceeded.  /NOERROR_LIMIT specifies that
  there is no limit on error messages.

  The default is /ERROR_LIMIT=30, which specifies that compilation
  terminates after 31 error messages.

13 - /EXTERN_MODEL

     /EXTERN_MODEL=option
     /EXTERN_MODEL=RELAXED_REFDEF (D)

  In conjunction with the /SHARE_GLOBALS qualifier, controls the
  initial extern model of the compiler.  Conceptually, the compiler
  behaves as if the first line of the program being compiled was a
  #pragma extern_model directive with the model and psect name, if
  any, specified by the /EXTERN_MODEL qualifier and with the shr or
  noshr keyword specified by the /SHARE_GLOBALS qualifier.

  For example, assume the command line contains the following
  qualifier:

       /EXTERN_MODEL=STRICT_REFDEF="MYDATA"/NOSHARE

  The compiler will act as if the program began with the following
  line:

       #pragma extern_model strict_refdef "MYDATA" noshr

  See also #pragma extern_model.

  The /EXTERN_MODEL qualifier takes the following options, which have
  the same meaning as for the #pragma extern_model directive:

  COMMON_BLOCK

  RELAXED_REFDEF

  STRICT_REFDEF

  STRICT_REFDEF="NAME"

  GLOBALVALUE

  The default model on Compaq C is relaxed/refdef with the noshare
  attribute.  This is different from the model used by VAX C, which
  is common block, share.

14 - /FLOAT

     /FLOAT=option

  Controls the format of floating-point variables.  On OpenVMS VAX
  systems, if you omit both /FLOAT and /G_FLOAT from the command
  line, double variables are represented in D_FLOAT format (unless
  /MIA is specified, in which case the default format is G_FLOAT).

  If you are linking against object-module libraries, a program
  compiled with G_FLOAT format must be linked with the object library
  VAXCRTLG.OLB.

  Options:

   D_FLOAT         Double variables are represented in D_FLOAT
                   format.

   G_FLOAT         Double variables are represented in G_FLOAT
                   format.

15 - /G_FLOAT

     /G_FLOAT
     /NOG_FLOAT

  Controls the format of floating-point variables.

  The /[NO]G_FLOAT qualifier is replaced by the /FLOAT qualifier, but
  is retained for compatibility.

  If you specify /NOG_FLOAT, double variables are represented in
  D_floating format.  On OpenVMS VAX systems, if you omit both /FLOAT
  or /G_FLOAT from the command line, double variables are represented
  in D_FLOAT format (unless /MIA is specified, in which case the
  default format is G_FLOAT).

  If you are linking against object-module libraries, a program
  compiled with G_FLOAT format must be linked with the object library
  VAXCRTLG.OLB.

16 - /INCLUDE_DIRECTORY

     /INCLUDE_DIRECTORY=(place[,...])
     /NOINCLUDE_DIRECTORY (D)

  Provides similar functionality to the -I option of the cc command
  on DIGITAL UNIX systems.  This qualifier allows you to specify
  additional places to search for include files.  A place can be one
  of the following:

   o  OpenVMS file-spec to be used as a default file-spec to RMS file
      services (example:  DISK$:[directory])

   o  UNIX style pathname in quotation marks (example:  "/sys")

   o  Empty string ("")

  If one of the places is specified as an empty string, the compiler
  is not to search any of its conventionally-named places
  (DECC$USER_INCLUDE, DECC$SYSTEM_INCLUDE, DECC$LIBRARY_INCLUDE,
  SYS$COMMON:[DECC$LIB.INCLUDE.*], DECC$TEXT_LIBRARY,
  DECC$RTLDEF.TLB, SYS$STARLET_C.TLB).  It searches only places
  specified explicitly on the command line by the /INCLUDE_DIRECTORY
  and /LIBRARY qualifiers (or by the location of the primary source
  file, depending on the /NESTED_INCLUDE_DIRECTORY qualifier).

  The basic search order depends on the form of the header-file name
  (after macro expansion).  Additional aspects of the search order
  are controlled by other command-line qualifiers and the presence or
  absence of logical name definitions.

  All forms of header-file inclusion are affected:

   o  In quotes (example:  "stdio.h")

   o  In angle brackets (example:  <stdio.h>)

   o  An identifier to be treated as a text-module name (example:
      stdio)

  Except where otherwise specified, searching a "place" means that
  the string designating the place is used as the default file-spec
  in a call to an RMS system service (for example, $SEARCH/$PARSE),
  with a file-spec consisting of the name in the #include directive
  without enclosing delimiters.  The search terminates successfully
  as soon as a file can be opened for reading.

  For the quoted form, the search order is:

  1.  One of the following:

       o  If /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE (the default) is
          in effect, search the directory containing the file in
          which the #include directive itself occurred.  The meaning
          of "directory containing" is:  the RMS "resultant string"
          obtained when the file in which the #include occurred was
          opened, except that the filename and subsequent components
          are replaced by the default file type for headers (".H", or
          just "." if /ASSUME=NOHEADER_TYPE_DEFAULT is in effect).
          The "resultant string" will not have translated any
          concealed device logical.

       o  If /NESTED_INCLUDE_DIRECTORY=PRIMARY_FILE is in effect,
          search the default file type for headers using the context
          of the primary source file.  This means that just the file
          type (".H" or ".") is used for the default file-spec but,
          in addition, the chain of "related file-specs" used to
          maintain the sticky defaults for processing the next
          top-level source file is applied when searching for the
          include file.

       o  If /NESTED_INCLUDE_DIRECTORY=NONE is in effect, this entire
          step (Step 1) is bypassed.

  2.  Search the places specified in the /INCLUDE_DIRECTORY
      qualifier, if any.  A place that can be parsed successfuly as
      an OpenVMS file-spec and that does not contain an explicit file
      type or version specification is edited to append the default
      header file type specification (".H" or ".").

      A place containing a "/" character is considered to be a
      UNIX-style name.  If the name in the #include directive also
      contains a "/" character that is not the first character and is
      not preceded by a "!" character (that is, it is not an absolute
      UNIX-style pathname), then the name in the #include directive
      is appended to the named place, separated by a "/" character,
      before applying the decc$to_vms pathname translation function.

  3.  If "DECC$USER_INCLUDE" is defined as a logical name, search
      "DECC$USER_INCLUDE:.H", or just "DECC$USER_INCLUDE:." if
      /ASSUME=NOHEADER_TYPE_DEFAULT is in effect.

  4.  If the file is not found, follow the steps for the
      angle-bracketed form of inclusion.

  For the angle-bracketed form, the search order is:

  1.  Search the place "/".  This is a UNIX-style name that can
      combine only with UNIX names specified explicitly in the
      #include directive.  It causes a specification like
      <sys/types.h> to be considered first as /sys/types.h, which is
      translated to SYS:TYPES.H.

  2.  Search the places specified in the /INCLUDE_DIRECTORY
      qualifier, exactly as in Step 2 for the quoted form of
      inclusion.

  3.  If "DECC$SYSTEM_INCLUDE" is defined as a logical name, search
      "DECC$SYSTEM_INCLUDE:.H", or just "DECC$SYSTEM_INCLUDE:." if
      /ASSUME=NOHEADER_TYPE_DEFAULT is in effect.

  4.  If "DECC$LIBRARY_INCLUDE" is defined as a logical name and
      "DECC$SYSTEM_INCLUDE" is NOT defined as a logical name, search
      "DECC$LIBRARY_INCLUDE:.H", or just "DECC$LIBRARY_INCLUDE:." if
      /ASSUME=NOHEADER_TYPE_DEFAULT is in effect.

  5.  If neither "DECC$LIBRARY_INCLUDE" nor "DECC$SYSTEM_INCLUDE" are
      defined as logical names, then search the default list of
      places for plain text-file copies of compiler header files as
      follows:

      SYS$COMMON:[DECC$LIB.INCLUDE.DECC$RTLDEF].H
      SYS$COMMON:[DECC$LIB.INCLUDE.SYS$STARLET_C].H

      If the file is not found, perform the text library search
      described in the next step.

  6.  Extract the simple filename and file type from the #include
      specification and use the filename as the module name to search
      a list of text libraries associated with that file type.

      For any file type, the initial text libraries searched consist
      of those named on the command line with /LIBRARY qualifiers.

      If the /INCLUDE_DIRECTORY qualifier contained an empty string,
      no further text libraries are searched.  Otherwise,
      DECC$TEXT_LIBRARY is searched for all file types.

      If "DECC$LIBRARY_INCLUDE" is defined as a logical name, then no
      further text libraries are searched.  Otherwise, the subsequent
      libraries searched for each file type are:

           For ".H" or ".":

             SYS$LIBRARY:DECC$RTLDEF.TLB
             SYS$LIBRARY:SYS$STARLET_C.TLB

           For any file type other then ".H" or ".":

             SYS$LIBRARY:SYS$STARLET_C.TLB

  7.  If the previous step fails, search:

      SYS$LIBRARY:.H

      Under /ASSUME=NOHEADER_TYPE_DEFAULT, the default file type is
      modified as usual.

 For the text-module (non-portable) form of #include:

 The name can only be an identifier.  It, therefore, has no
 associated "file type".  The identifier is used as a module name to
 search the following:

      1.  The text libraries named on the command line with /LIBRARY
          qualifiers, in left-to-right order.

      2.  The following list of text libraries in the order shown
          (unless the /INCLUDE_DIRECTORY qualifier contains an empty
          string, in which case no further text libraries are
          searched):

          DECC$TEXT_LIBRARY
          SYS$LIBRARY:DECC$RTLDEF.TLB
          SYS$LIBRARY:SYS$STARLET_C.TLB

17 - /LIBRARY

  Indicates that the associated input file is a library containing
  source text modules specified in #include directives.  The compiler
  searches the specified library for all #include module names that
  are not enclosed in angle brackets or quotation marks.  The name of
  the library must be concatenated with the file specification using
  a plus sign.  For example:

  CC DATAB/LIBRARY+APPLIC

18 - /LINE_DIRECTIVES

     /LINE_DIRECTIVES (D)
     /NOLINE_DIRECTIVES

  Controls whether or not #line directives appear in preprocess
  output files.

19 - /LIST

     /LIST[=file-spec] (Batch default)
     /NOLIST (Interactive default)

  Controls whether a listing file is produced.  The default output
  file extension is .LIS.

  (Note:  To suppress compiler messages to the terminal or to a batch
  log file, use the /SHOW=NOTERMINAL qualifier.)

20 - /MACHINE_CODE

     /MACHINE_CODE[=option]
     /NOMACHINE_CODE (D)

  Controls whether the listing produced by the compiler includes the
  machine language code generated during the compilation.  If you use
  this qualifier you also need to use the /LIST qualifier.  You can
  select the following options:

  AFTER          The machine code produced during compilation prints
                 after the source code listing.

  BEFORE         The machine code prints before the source code
                 listing.

  INTERSPERSED   The lines of machine code print alternately with the
                 lines of source code.

  The default option is INTERSPERSED.

21 - /MEMBER_ALIGNMENT

     /MEMBER_ALIGNMENT (D)
     /NOMEMBER_ALIGNMENT

  Directs the compiler to naturally align data structure members.
  This means that data structure members are aligned on the next
  boundary appropriate to the type of the member, rather than on the
  next byte.  For instance, a long variable member is aligned on the
  next longword boundary; a short variable member is aligned on the
  next word boundary.

  Any use of the #pragma member_alignment or #pragma
  nomember_alignment directives within the source code overrides the
  setting established by this qualifier.  Specifying
  /NOMEMBER_ALIGNMENT causes data structure members to be
  byte-aligned (with the exception of bit-field members).

  For OpenVMS Alpha systems, the default is /MEMBER_ALIGNMENT.

  For OpenVMS VAX systems, the default is /NOMEMBER_ALIGNMENT.

22 - /MMS_DEPENDENCIES

     /MMS_DEPENDENCIES[=(option[,option)]]
     /NOMMS_DEPENDENCIES (D)

  Directs the compiler to produce a dependency file.  The format of
  the dependency file is identical to that on OSF:

     object_file_name :<tab><source file name>
     object_file_name :<tab><full path to first include file>
     object_file_name :<tab><full path to second include file>

  You can specify none, one, or both of the following qualifier
  options:

   FILE[=filespec]        Specifies where to save the dependency
                          file.  The default file extension for a
                          dependency file is .mms.  Other than using
                          a different default extension, this
                          qualifier uses the same procedure that
                          /OBJECT and /LIST use for determining the
                          name of the output file.

   SYSTEM_INCLUDE_FILES   Specifies whether or not to include
                          dependency information about system include
                          files (that is, those included with
                          #include <filename>).  The default is to
                          include dependency information about system
                          include files.

                          Note that the /OBJECT qualifier has no
                          impact on the dependency file.

23 - /NAMES

     /NAMES=(option1,option2)
     /NAMES=(UPPERCASE,TRUNCATED) (D)

  Option1 converts all definitions and references of external symbols
  and psects to the specified case:

   o  /NAMES=UPPERCASE (default) converts to uppercase.

   o  /NAMES=LOWERCASE converts to lowercase.

   o  /NAMES=AS_IS leaves the case unchanged.

  Option2 controls whether or not long external names greater than 31
  characters get truncated or shortened:

   o  /NAMES=TRUNCATED (default) truncates long external names

   o  /NAMES=SHORTENED shortens long external names.

      A shortened name consists of the first 24 characters of the
      name followed by a 7-character Cyclic Redundancy Check (CRC)
      computed by looking at the full name.

  By default, the compiler issues a warning and truncates the name to
  31 characters.

  The /NAMES qualifier does not affect the names of the $CODE and
  $DATA psects.

24 - /NESTED_INCLUDE_DIRECTORY

     /NESTED_INCLUDE_DIRECTORY[=option]
     /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE (D)

  Controls the first step in the search algorithm the compiler uses
  when looking for files included using the quoted form of the
  #include preprocessing directive:  #include "file-spec"

  /NESTED_INCLUDE_DIRECTORY has the following options:

  PRIMARY_FILE   Directs the compiler to search the default file type
                 for headers using the context of the primary source
                 file (the .C file).  This means that just the file
                 type (".H" or ".") is used for the default file-spec
                 but, in addition, the chain of "related file-specs"
                 used to maintain the sticky defaults for processing
                 the next top-level source file is applied when
                 searching for the include file.

  INCLUDE_FILE   Directs the compiler to search the directory
                 containing the file in which the #include directive
                 itself occurred.  The meaning of "directory
                 containing" is:  the RMS "resultant string" obtained
                 when the file in which the #include occurred was
                 opened, except that the filename and subsequent
                 components are replaced by the default file type for
                 headers (".H", or just "." if
                 /ASSUME=NOHEADER_TYPE_DEFAULT is in effect).  The
                 "resultant string" will not have translated any
                 concealed device logical.

  NONE           Directs the compiler to skip the first step of
                 processing #include "file.h" directives.  The
                 compiler starts its search for the include file in
                 the /INCLUDE_DIRECTORY directories.

  See also /INCLUDE_DIRECTORY.

25 - /OBJECT

     /OBJECT[=file-spec] (D)
     /NOOBJECT

  Controls whether the compiler produces an output object module.
  The default output file extension is .OBJ.

  Note that the /OBJECT qualifier has no impact on the output file of
  the /MMS_DEPENDENCIES qualifier.

26 - /OPTIMIZE

     /OPTIMIZE[=option] (D)
     /NOOPTIMIZE

  Controls whether or not the compiler performs code optimization.
  /OPTIMIZE has the following options:

  [NO]DISJOINT   Directs the compiler to optimize the generated
                 machine code.

  [NO]INLINE     Specifies whether the compiler is allowed to perform
                 the function inline optimization.

27 - /PRECISION

     /PRECISION={SINGLE | DOUBLE}

  Controls whether floating-point operations on float variables are
  performed in single or double precision.

  The default is /PRECISION=DOUBLE for /STANDARD=VAXC and
  /STANDARD=COMMON modes.

  The default is /PRECISION=SINGLE for /STANDARD=ANSI89 and
  /STANDARD=RELAXED_ANSI89 modes.

28 - /PREFIX_LIBRARY_ENTRIES

  Controls the Compaq C RTL name prefixing.

  The Compaq C Run-Time Library (RTL) shareable image (DECC$SHR.EXE)
  resides in IMAGELIB.OLB with a DECC$ prefix for its entry points.
  Every external name in IMAGELIB.OLB has a DECC$ prefix, and,
  therefore, has an OpenVMS conformant name space (a requirement for
  inclusion in IMAGELIB).  The /[NO]PREFIX_LIBRARY_ENTRIES qualifier
  lets you control the Compaq C RTL name prefixing.

  The qualifier options are:

  EXCEPT=(name,...)    The names specified are not prefixed.

  ALL_ENTRIES           All Compaq C RTL names are prefixed.

  ANSI_C89_ENTRIES     Only ANSI library names are prefixed.

  RTL="name"            Generates references to the C RTL indicated
                        by the "name" keyword.  If no keyword is
                        specified, then references to the Compaq C
                        RTL are generated by default.  To use an
                        alternate RTL, see its documentation for the
                        name to use.

  If you want no names prefixed, specify /NOPREFIX_LIBRARY_ENTRIES.

  The defaults on both OpenVMS Alpha and VAX systems are:

   o  For /STANDARD=ANSI89, the default is /PREFIX=ANSI_C89_ENTRIES.

   o  Alpha only:  For /STANDARD=C99 or /STANDARD=RELAXED_ANSI89, the
      default is /PREFIX=C99_ENTRIES.

   o  For all other compiler modes, the default is /PREFIX=ALL.

29 - /PREPROCESS_ONLY

     /PREPROCESS_ONLY[=filename]
     /NOPREPROCESS_ONLY (D)

  Causes the compiler to perform only the actions of the preprocessor
  phase and write the resulting processed text out to a file.

30 - /PROTOTYPE

     /PROTOTYPE[=(option[,...])]
     /NOPROTOTYPE (D)

  Creates an output file containing function prototypes for all
  global functions defined in the module being compiled.

  The qualifier options are:

  [NO]IDENTIFIERS       Indicates that identifier names are to be
                        included in the prototype declarations that
                        appear in the output file.  The default is
                        NOIDENTIFIERS.

  [NO]STATIC_FUNCTIONS  Indicates that prototypes for static function
                        definitions are to be included in the output
                        file.  The default is NOSTATIC_FUNCTIONS.

  FILE=filename         Specifies the output file name.  When not
                        specified, the output file name has the same
                        defaults as the listing file, except that the
                        file extension is .CH instead of .LIS.

  The default is /NOPROTOTYPES.

31 - /REPOSITORY

  Specifies a repository for the compiler to store shortened external
  name information.  When /NAMES=SHORTENED is specified, the compiler
  stores to the repository any external names that were shortened.
  The demangler utility can then be used to map the shortened names
  back to the names used in the original C program.

  By default, the qualifier is not active unless /NAMES=SHORTENED has
  been specified, in which case the default is
  /REPOSITORY=[.CXX_REPOSITORY].

  Note that the default name of the repository is the same as that
  used by the Compaq C++ compiler for decoding mangled names.  This
  is intentional.  A C++ mangled name cannot match a shortened name,
  so a single repository can be used by both the Compaq C and Compaq
  C++ compilers.

32 - /SHARE_GLOBALS

     /NOSHARE_GLOBALS (D)

  Performs two functions:

   o  Controls whether the compiler treats declarations of objects
      with the globaldef keyword as shared or not shared.

   o  Controls whether the initial extern_model is shared or not
      shared (for those extern_models where it is allowed).  The
      initial extern_model of the compiler is a fictitious pragma
      constructed from the settings of the /EXTERN_MODEL and
      /SHARE_GLOBALS.

  The default value is /NOSHARE_GLOBALS.  This default value is
  different from VAX C (which treated externs as SHR by default), and
  has the following impact:

  1.  When linking old object files or object libraries with newly
      produced object files, you might get "conflicting attributes
      for psect" messages, which can be safely ignored as long as you
      are not building shareable libraries.

  2.  The /NOSHARE_GLOBALS default makes building shareable libraries
      easier.

  3.  When linking your extern symbols against FORTRAN common blocks,
      specify /SHARE_GLOBALS to suppress "conflicting attributes for
      psect" messages, which can otherwise be ignored.

33 - /SHOW

     /SHOW=(option[,...])
     /SHOW=SOURCE (D)

  Used with the /LIST qualifier to set or cancel specific listing
  options.  You can select the following options:

  ALL               Print all listing information.

  [NO]BRIEF         Print a brief symbol table, listing only those
                    identifiers that are referenced in the program.

  [NO]CROSS_REFERENCE
                    Specifies whether the compiler generates
                    cross-references.  If you specify
                    /SHOW=CROSS_REFERENCE, the compiler lists, for
                    each variable referenced in the procedure, the
                    line numbers of the lines on which the variable
                    is referenced.

                    You may use /SHOW=CROSS_REFERENCE with
                    /SHOW=SYMBOLS.  Otherwise, specifying
                    /SHOW=CROSS_REFERENCE also gives you /SHOW=BRIEF.
                    To obtain any type of listing, you must specify
                    /LIST.  /SHOW=CROSS_REFERENCE is the same as
                    specifying /[NO]CROSS_REFERENCE.  (D =
                    NOCROSS_REFERENCE)

  [NO]DICTIONARY    Print/do not print Common Data Dictionary
                    definitions.  (D = NODICTIONARY)

  [NO]EXPANSION     Print/do not print macro expansions.
                    (D = NOEXPANSION)

  [NO]HEADER        Print/do not print header lines at the top of
                    each page.  (D = HEADER)

  [NO]INCLUDE       Print/do not print contents of #include files.
                    (D = NOINCLUDE)

  [NO]INTERMEDIATE  Print/do not print intermediate macro.
                    expansions (D = NOINTERMEDIATE)

  [NO]MESSAGES      Print/do not print a list of all messages that
                    are in effect at compilation (based on the
                    settings of /STANDARD, /WARNINGS, and #pragma
                    message).  (D = NOMESSAGES)

  NONE              Print no listing information.

  [NO]SOURCE        Print/do not print source file statements.
                    (D = SOURCE)

  [NO]STATISTICS    Print/do not print compiler performance
                    statistics.  (D = NOSTATISTICS)

  [NO]SYMBOLS       Print/do not print symbol table information in
                    the listing file.  (D = NOSYMBOLS)

  [NO]TERMINAL      Display/do not display compiler messages at the
                    terminal.  If NOTERMINAL is specified, only the
                    summary message is displayed.  (D = TERMINAL)

  [NO]TRANSLATION   Display/do not display the translation of a UNIX*
                    system file specification to an OpenVMS file
                    specification.  (D = NOTRANSLATION)

 ----------
 * UNIX is a trademark of The Open Group.

34 - /STANDARD

     /STANDARD=(option)
     /STANDARD=RELAXED_ANSI89 (equivalent to /NOSTANDARD) (D)
     /NOSTANDARD (D)

  Defines the compilation mode.  You can select the following
  options:

  ANSI89            Places the compiler in strict ANSI C Standard 89
                    (C89) mode.  This mode compiles the C language as
                    defined by the American National Standard for C,
                    along with any extensions not prohibited by that
                    standard.

  C99               On OpenVMS Alpha systems, places the compiler in
                    strict ISO/IEC C Standard 99 (C99) mode.  This
                    mode accepts just the C99 language without
                    extensions, and diagnoses violations of the C99
                    standard.

                    On OpenVMS VAX systems, produces a warning and
                    places the compiler in /STANDARD=REALXED ANSI89
                    mode.

  RELAXED_ANSI89    Places the compiler in relaxed ANSI C Standard
                    mode.  The compiler accepts ANSI/ISO C Standard
                    C89 and C99 features, as well as nearly all
                    language extensions (such as additional Compaq C
                    keywords and predefined macros that do not begin
                    with an underscore).  It excludes only K&R
                    (COMMON mode), VAX C, and Microsoft features that
                    conflict with standard C.

                    This is the default mode of the compiler, and is
                    equivalent to /NOSTANDARD.

  MS                Places the compiler in Microsoft compatibility
                    mode, which interprets source programs according
                    to certain language rules followed by the C
                    compiler provided with the Microsoft Visual C++
                    compiler product.

  ISOC94            Places the compiler in ISO C 94 mode, which
                    enables digraph processing and defines the
                    predefined macro __STDC_VERSION__=199409.

                    This option can be specified alone or with any
                    other /STANDARD option except VAXC.  If it is
                    specified alone, the default major mode is
                    RELAXED_ANSI89.

  COMMON            Places the compiler in K & R language mode; that
                    is, compatibility with older UNIX compilers such
                    as pcc and gcc.  This mode is close to a subset
                    of /STANDARD=VAXC mode.

  VAXC              Places the compiler in VAX C mode.  There are
                    differences in the C language as implemented in
                    previous versions of VAX C and the C language as
                    defined by ANSI (the differences are primarily
                    concerned with how the preprocessor works).  This
                    mode provides compatibility for programs that
                    depend on old VAX C behavior.

  PORTABLE          Places the compiler in RELAXED_ANSI89 mode, and
                    enables the issuance of diagnostics that warn of
                    any nonportable usages encountered.

                    Note that /STANDARD=PORTABLE is supported for
                    VAX C compatibility only.  It is equivalent to
                    the recommended combination of qualifiers
                    /STANDARD=RELAXED_ANSI89
                    /WARNINGS=ENABLE=PORTABLE.

  MIA               Places the compiler in strict ANSI C mode with
                    the following behavior differences to conform to
                    the Multivendor Integration Architecture (MIA)
                    standard:

                    o  On OpenVMS VAX systems, G_FLOAT becomes the
                       default floating-point format for double
                       variables.  (On OpenVMS Alpha systems, G_FLOAT
                       is already the default.)

                    o  In structures, zero-length bit fields cause
                       the next bit field to start on an integer
                       boundary, rather than on a character boundary.

  The default is /NOSTANDARD, which is equivalent to
  /STANDARD=RELAXED_ANSI89.

  With one exception, the /STANDARD qualifier options are mutually
  exclusive.  Do not combine them.  The exception is that you can
  specify /STANDARD=ISOC94 with any other option except VAXC.

  Compaq C modules compiled in different modes can be linked and
  executed together.

35 - /UNDEFINE

     /UNDEFINE=(identifier[,...])
     /NOUNDEFINE (D)

  Performs the same function as the #undef preprocessor directive:
  it cancels a macro definition.

  The /UNDEFINE qualifier is useful for undefining the predefined
  Compaq C preprocessor constants.  For example, if you use a
  preprocessor constant (such as vaxc, VAXC, VAX11C, or vms) to
  conditionally compile segments of code specific to Compaq C for
  OpenVMS Systems, you can undefine constants to see how the portable
  sections of your program execute.  For example:

  /UNDEFINE="vaxc"

  When both /DEFINE and /UNDEFINE are present on the CC command line,
  /DEFINE is evaluated before /UNDEFINE.

  The default is /NOUNDEFINE.

36 - /UNSIGNED_CHAR

     /NOUNSIGNED_CHAR (D)

  Changes the default for all char types from signed to unsigned.
  This qualifier causes all plain char declarations to have the same
  representation and set of values as signed char declarations.  The
  default is /NOUNSIGNED_CHAR.

37 - /VAXC

  The CC command is used to invoke either the VAX C or Compaq C
  compiler.  If your system has a VAX C compiler already installed on
  it, the Compaq C installation procedure provides the option of
  specifying which compiler will be invoked by default when just the
  CC command verb is used.  To invoke the compiler that is not the
  default, use the CC command with the appropriate qualifier:
  CC/DECC for the Compaq C compiler, or CC/VAXC for the VAX C
  compiler.

  If your system does not already have a VAX C compiler installed on
  it, the CC command will invoke the Compaq C compiler.

38 - /VERSION

     /VERSION
     /NOVERSION (D)

  Directs the compiler to print out the compiler version and
  platform.  The compiler version is the same as in the listing file.

  This qualifier helps you to report what compiler you are using.

  When this qualifier is specified, the compiler just prints its
  version and exits.  No other qualifiers are processed, no source
  file is read, and no object module is produced.

  The syntax for using this qualifier is:

     CC/DECC/VERSION

  The default is /NOVERSION.

39 - /WARNINGS

     /WARNINGS[=(option[,...])]
     /WARNINGS (D)
     /NOWARNINGS

  Controls the issuance of compiler diagnostic messages, or groups of
  messages.  The default qualifier, /WARNINGS, enables all warning
  and informational messages for the compiler mode you are using.
  The /NOWARNINGS qualifier suppresses the informational and warning
  messages.  Also see the #pragma message preprocessor directive.

  The options are:

  DISABLE=msg-list          Suppresses the issuance of the indicated
                            messages.

                            Only messages of severity Warning (W) or
                            Information (I) can be disabled.  If the
                            message has severity of Error (E) or
                            Fatal (F), it is issued regardless of any
                            attempt to disable it.

  ENABLE=msg-list           Enables the issuance of the indicated
                            messages.

  NOINFORMATIONALS          Suppresses informational messages.

  EMIT_ONCE=msg-list        Emits the specified messages only once
                            per compilation.  Errors and Fatals are
                            always emitted.  You cannot set them to
                            EMIT_ONCE.

  EMIT_ALWAYS=msg-list      Emits the specified messages at every
                            occurrence of the condition.

  ERRORS=msg-list           Sets the severity of each message in the
                            message-list to Error.

                            Note that supplied Error messages and
                            Fatal messages cannot be made less
                            severe.  (Exception:  A message can be
                            upgraded from Error to Fatal, then later
                            downgraded to Error again, but it can
                            never be downgraded from Error.)

                            Warnings and Informationals can be made
                            any severity.

  FATALS=msg-list           Sets the severity of each message on the
                            message-list to Fatal.

  INFORMATIONALS=msg-list   Sets the severity of each message in the
                            message-list to Informational.  Note that
                            Fatal and Error messages cannot be made
                            less severe.

  WARNINGS=msg-list         Sets the severity of each message in the
                            message-list to Warning.  Note that Fatal
                            and Error messages cannot be made less
                            severe.

  VERBOSE                   Displays the full message information for
                            every compiler message encountered.  This
                            information includes the message
                            description and user action, as well as
                            the identifier, severity, and message
                            text.

                            When /WARNINGS=VERBOSE is used with
                            /LIST/SHOW=MESSAGES, a list of all
                            messages in effect at compilation are
                            added to the listing file, showing the
                            full information for each message.

  The msg-list can be any one of the following:

   o  A single message identifier (within parentheses, or not).  The
      message identifier is the name following the severity at the
      start of a line when a message is issued.  For example, in the
      following message, the message identifier is GLOBALEXT:

                %CC-W-GLOBALEXT, a storage class of globaldef,
                globalref, or globalvalue is a language extension.

   o  A single message-group name (within parentheses, or not).
      Message-group names are:

           ALL             All the messages in the compiler

           ALIGNMENT       Messages about unusual or inefficient data
                           alignment.

           C_TO_CXX        Messages reporting the use of C features
                           that would be invalid or have a different
                           meaning if compiled by a C++ compiler.

           CDD             Messages about CDD (Common Data
                           Dictionary) support.

           CHECK           Messages reporting code or practices that,
                           although correct and perhaps portable, are
                           sometimes considered ill-advised because
                           they can be confusing or fragile to
                           maintain.  For example, assignment as the
                           test expression in an "if" statement.

                           NOTE:  The check group gets defined by
                           enabling LEVEL5 messages.

           DEFUNCT         Messages reporting the use of obsolete
                           features:  ones that were commonly
                           accepted by early C compilers but were
                           subsequently removed from the language.

           NEWC99          Messages reporting the use of the new C99
                           Standard features.

           NOANSI          This is a deprecated message group.  It is
                           an obsolete synonym for NOC89.  Also see
                           message groups NEWC99, NOC89, NOC99.

           NOC89           Messages reporting the use of non-C89
                           Standard features.

           NOC99           Messages reporting the use of non-C99
                           Standard features.

           OBSOLESCENT     Messages reporting the use of features
                           that are valid in ANSI Standard C, but
                           which were identified in the standard as
                           being obsolescent and likely to be removed
                           from the language in a future version of
                           the standard.

           OVERFLOW        Messages that report assignments and/or
                           casts that can cause overflow or other
                           loss of data significance.

           PERFORMANCE     Messages reporting code that might result
                           in poor run-time performance.

           PORTABLE        Messages reporting the use of language
                           extensions or other constructs that might
                           not be portable to other compilers or
                           platforms.

           PREPROCESSOR    Messages reporting questionable or
                           non-portable use of preprocessing
                           constructs.

           QUESTCODE       Messages reporting questionable coding
                           practices.  Similar to the CHECK group,
                           but messages in this group are more likely
                           to indicate a programming error rather
                           than just a non-robust style.

                           Enabling the QUESTCODE group provides
                           lint-like checking.

           RETURNCHECKS    Messages related to function return
                           values.

           UNINIT          Messages related to using uninitialized
                           variables.

           UNUSED          Messages reporting expressions,
                           declarations, header files, CDD records,
                           static functions, and code paths that are
                           not used.

   o  A single message-level name (within parentheses, or not).

      Note:  There is a core of very important compiler messages that
      are enabled by default, regardless of what you specify with
      /WARNINGS or #pragma message.  Referred to as message level 0,
      it includes all messages issued in header files, and comprises
      what is known as the nostandard group.  All other message
      levels add additional messages to this core of enabled
      messages.

      You cannot modify level 0 (You cannot disable it, enable it,
      change its severity, or change its EMIT_ONCE characteristic).
      However, you can modify individual messages in level 0,
      provided such modification is allowed by the action.  For
      example, you can disable a warning or informational in level 0,
      or you can change an error in level 0 to a fatal, and so on.
      (See above restrictions on modifying individual messages.)

      Message-level names are:

           LEVEL1          Important messages.  These are less
                           important than the level 0 core messages,
                           because messages in this group are not
                           displayed if #pragma nostandard is active.

           LEVEL2          Moderately important messages.

           LEVEL3          Less important messages.  LEVEL3 is the
                           default message level.

           LEVEL4          Useful check/portable messages.

           LEVEL5          Not so useful check/portable messages.

           LEVEL6          Additional "noisy" messages.

        Enabling a level also enables all the messages in the levels
        below it.  So enabling LEVEL3 messages also enables messages
        in LEVEL2 and LEVEL1.

        Disabling a level also disables all the messages in the
        levels above it.  So disabling LEVEL4 messages also disables
        messages in LEVEL5 and LEVEL6.

   o  A comma-separated list of message identifiers, group names, and
      messages levels, freely mixed, enclosed in parentheses.

  The default is /WARNINGS.  This enables all diagnostic messages for
  the selected compiler mode.

  Notes:

   o  If a message is on both the enabled and disabled list, it is
      disabled.

   o  If a message is on both the EMIT_ONCE and the EMIT_ALWAYS list,
      it is considered to be on the EMIT_ONCE list.

   o  If a message is on more than one of the FATALS, ERRORS,
      WARNINGS, or INFORMATIONALS lists, the message is given the
      least severe level.

   o  The NOINFORMATIONALS option is not the negation of
      INFORMATIONALS=msg-list.  It is valid to say:

      /WARN=(INFORMATIONALS=message_list,NOINFORMATIONALS)

      This has the effect of making the messages on the message_list
      informationals, and causing the compiler to suppress any
      informational messages.

  40 - Message Groups

 Compaq C compiler message groups

 The following tables list all compiler messages by message group.
 For a description of each compiler message, see the Messages section
 of this online help.

 40.1 - 64BIT

 CVTU32TO64          FUNCMIXPTR          LONGLONGSUFX
 LONGLONGTYPE        POINTERINTCAST      PRAGIGNORE
 PTRINTTOLONG        PTRLONGTOINT        TRUNCLONGCAST
 TRUNCLONGINT

 40.2 - 64BITPOINTERS

 POINTERINTCAST

 40.3 - ALIGNMENT

 ALIGNCONST          ALIGNEXT            MISALGNDMEM
 MISALGNDSTRCT       NONMULTALIGN        UNALIGNEXT

 40.4 - C_TO_CXX

 CLASSNOINIT         CONSTNOINIT         CONSTSTOCLS
 CXXKEYWORD          INTIMPLIED          KNRFUNC
 NESTEDENUM          NESTEDTYPE          NONEWTYPE
 NONULINIT           NOPARMLIST          STORCLSDCL
 STORMODDCL          TENTREDEF

 40.5 - CDD

 CDDEXT              TEXTARRAY           TEXTARRAYN
 TEXTCHAR

 40.6 - DEFUNCT

 DEFPARMTYPE         DUPENUM             EMBEDCOMMENT
 LONGFLOATEXT        MAINPROGEXT         READONLYEXT

 40.7 - NEWC99

 ADDRCONSTEXT        ARRNOTLVALUE        BOOLEXT
 COMPLEXEXT          CXXCOMMENT          DECLAFTERSTMT
 DECLINFOR           DESIGNATORUSE       DOLLARID
 DUPTYPQUAL          FUTUREKEYWD2        FUTUREKEYWORD
 INCOMPARRY1         INTCONSTSIGNED      LONGLONGSUFX
 LONGLONGTYPE        NEEDCONSTEXT        RESTRICTEXT2
 TRAILCOMMA          TYPQUALNOT2         VLAEXTENSION
 XTRALARGE

 40.8 - NOC89

 ADDRCONSTEXT        ADDRSUBCONST        ALIGNEXT
 ARGADDR             ARRNOTLVALUE        ASSIGNEXT
 BADCMMNTPSTNG       BADREGISTER         BITNOTINT
 BOOLEXT             CDDEXT              CMPPTRFUNVOID
 COMPLEXEXT          CONSTCOMPLIT        CONSTFUNC
 CONVARASLIT         CXXCOMMENT          DECLAFTERSTMT
 DECLINFOR           DECLSPECEXT         DESIGNATORUSE
 DOLLARID            DUPENUM             DUPTYPEDEF
 DUPTYPQUAL          ELLIPSEARG          ELLIPSEPARM
 EMPTYCHARCONST      ENUMSNOTCOMPAT      EXPANDEDDEFINED
 EXTENDTYPE          FUNCREDECL          FUTUREKEYWD2
 FUTUREKEYWORD       GLOBALEXT           HEXOCTSIGN
 IDINPARENSEXT       INCARRAYPARM1       INCOMPARRY
 INCOMPARRY1         INCOMPDEREF         INLINESTOCLSMOD
 INTCONSTTOOBIG      LABELWOSTMT         LONGFLOATEXT
 LONGLONGSUFX        LONGLONGTYPE        LVALUECAST
 MACROREDEF          MAINNOTINT          MAINPROGEXT
 MISMATPARAM         MISPARAMCOUNT       MIXFUNCVOID
 NEEDCONSTEXT        NODCL               NONAMEMEMBERS
 NONOCTAL            NONPORTLINEDIR      NONSTANDCAST
 NOSEMISTRUCT        NOSHAREEXT          NOTADDRCAST
 OKCPPINARGS         PARENLITERAL        PRAGMAIDENT
 PRAGMAMOD           PTRMISMATCH1        READONLYEXT
 RESTRICTEXT         RESTRICTEXT1        RESTRICTEXT2
 SAMEASTYPEDEF       SWITCHLONG          TEXTMODULE
 TRAILCOMMA          TYPEDEFNA           TYPEOFEXT
 TYPQUALNOT2         UNALIGNEXT          UNDEFENUM
 UNSIGNEDPRES        UNSTRUCTMEM         VARIANTEXT
 VLAEXTENSION        VOLATILEFUNC        XTRALARGE

 40.9 - NOC99

 ADDRSUBCONST        ALIGNEXT            ARGADDR
 ASSIGNEXT           BADCMMNTPSTNG       BADREGISTER
 BITNOTINT           CDDEXT              CMPPTRFUNVOID
 CONSTCOMPLIT        CONSTFUNC           CONVARASLIT
 DECLSPECEXT         DUPENUM             DUPTYPEDEF
 ELLIPSEARG          ELLIPSEPARM         EMPTYCHARCONST
 ENUMSNOTCOMPAT      EXPANDEDDEFINED     EXTENDTYPE
 FUNCREDECL          GLOBALEXT           HEXOCTSIGN
 IDINPARENSEXT       INCARRAYPARM1       INCOMPARRY
 INCOMPDEREF         INLINESTOCLSMOD     INTCONSTTOOBIG
 INTCONSTUNSIGN      LABELWOSTMT         LONGFLOATEXT
 LVALUECAST          MACROREDEF          MAINNOTINT
 MAINPROGEXT         MISMATPARAM         MISPARAMCOUNT
 MIXFUNCVOID         NODCL               NONAMEMEMBERS
 NONOCTAL            NONPORTLINEDIR      NONSTANDCAST
 NOSEMISTRUCT        NOSHAREEXT          NOTADDRCAST
 OKCPPINARGS         PARENLITERAL        PRAGMAIDENT
 PRAGMAMOD           PTRMISMATCH1        READONLYEXT
 RESTRICTEXT         RESTRICTEXT1        SAMEASTYPEDEF
 SWITCHLONG          TEXTMODULE          TYPEDEFNA
 TYPEOFEXT           UNALIGNEXT          UNDEFENUM
 UNSIGNEDPRES        UNSTRUCTMEM         VARIANTEXT
 VOLATILEFUNC

 40.10 - OBSOLESCENT

 DEFRETURNTYPE       INTIMPLIED          KNRFUNC
 STONOTFIRST

 40.11 - OVERFLOW

 BITCONSTSIGN        INPTRTYPE           INTCONCASTSGN
 INTCONCASTTRU       INTCONSTSIGN        INTCONSTTRUNC
 MAYHIDELOSS         NONOCTAL            OUTSTRINGTYPE
 OUTTYPELEN          RIGHTSHIFTOVR       TRUNCFLTASN
 TRUNCFLTINT         TRUNCINTASN         TRUNCINTCAST

 40.12 - PERFORMANCE

 BLTINIMPLRET        MISALGNDMEM         MISALGNDSTRCT
 NONMULTALIGN

 40.13 - PORTABLE

 ADDRCONSTEXT        ADDRSUBCONST        ALIGNCONST
 ALIGNEXT            ARGADDR             ARRNOTLVALUE
 ASSIGNEXT           BADCMMNTPSTNG       BADREGISTER
 BITNOTINT           BOOLEXT             CDDEXT
 CMPPTRFUNVOID       COMPLEXEXT          CONSTCOMPLIT
 CONSTFUNC           CONVARASLIT         CXXCOMMENT
 DECLAFTERSTMT       DECLINFOR           DECLSPECEXT
 DESIGNATORUSE       DOLLARID            DUPENUM
 DUPSTORCLS          DUPTYPEDEF          DUPTYPQUAL
 ELLIPSEARG          ELLIPSEPARM         EMBEDCOMMENT
 EMPTYCHARCONST      ENUMSANDINT         ENUMSNOTCOMPAT
 EXPANDEDDEFINED     EXTENDTYPE          FUNCREDECL
 FUTUREKEYWD2        FUTUREKEYWORD       GLOBALEXT
 HEXOCTSIGN          HEXOCTUNSIGN        IDINPARENSEXT
 INCARRAYPARM        INCARRAYPARM1       INCOMPARRY
 INCOMPARRY1         INCOMPDEREF         INCOMPELMNT
 INLINESTOCLSMOD     INTCONSTSIGNED      INTCONSTTOOBIG
 INTCONSTUNSIGN      LABELWOSTMT         LONGFLOATEXT
 LONGLONGSUFX        LONGLONGTYPE        LVALUECAST
 MACROREDEF          MAINNOTINT          MAINPROGEXT
 MISMATPARAM         MISPARAMCOUNT       MIXFUNCVOID
 MULTICHAR           NAMESHORTENED       NEEDCONSTEXT
 NONAMEMEMBERS       NONOCTAL            NONPORTLINEDIR
 NONSTANDCAST        NOSEMISTRUCT        NOSHAREEXT
 NOTADDRCAST         OKCPPINARGS         PARENLITERAL
 PRAGMA              PRAGMAIDENT         PRAGMAMOD
 READONLYEXT         RESTRICTEXT         RESTRICTEXT1
 RESTRICTEXT2        SAMEASTYPEDEF       SWITCHLONG
 TEXTMODULE          TRAILCOMMA          TYPEDEFNA
 TYPEOFEXT           TYPQUALNOT2         UNALIGNEXT
 UNDEFENUM           UNSTRUCTMEM         VALUEPRES
 VARIANTEXT          VLAEXTENSION        VOLATILEFUNC

 40.14 - PREPROCESSOR

 BADCMMNTPSTNG       CDDEXT              EMBEDCOMMENT
 EXPANDEDDEFINED     MACROREDEF          NESTINCL
 NONPORTLINEDIR      OKCPPINARGS         PRAGMAIDENT
 PRAGMAMOD           TEXTMODULE          UNKNOWNMACRO
 UNNECCDD            UNNECINCL           UNUSEDCDD
 UNUSEDINCL          UNUSEDTOP           VAARGSBODY
 XTRALARGE

 40.15 - QUESTCODE

 BADCMMNTPSTNG       BADREGISTER         BITCONSTSIGN
 CONSTFUNC           CONSTNOINIT         CONTROLASSIGN
 DUPENUM             ELLIPSEARG          ELLIPSEPARM
 EMPTYCHARCONST      ENUMCALC            ENVIRSTKDIRTY
 EXPRNOTUSED         FALLOFFEND          FUNCMIXPTR
 FUNCREDECL          IMPFNCFALLOFF       IMPFNCMSSNGRET
 INCOMPDEREF         INTCONCASTSGN       INTCONCASTTRU
 INTCONSTSIGN        INTCONSTTRUNC       INTIMPLIED
 LVALUECAST          MACROREDEF          MULTICHAR
 NESTEDCOMMENT       NODCL               NONOCTAL
 NONULINIT           NORETURNVAL1        OKCPPINARGS
 PTRMISMATCH1        QUALFUNCRET         QUESTCOMPARE
 QUESTCOMPARE1       QUESTCOMPARE2       RIGHTSHIFTOVR
 SAMEASTYPEDEF       SHORTCIRCUIT        SUBSCRBOUNDS1
 SUBSCRBOUNDS2       TYPEDEFNA           UNDEFENUM
 UNDEFESCAP          UNINIT2             UNINIT3
 UNINIT4             UNINIT5             UNKNOWNMACRO
 UNREACHCODE         VOLATILEFUNC

 40.16 - RETURNCHECKS

 DEFRETURNTYPE       FALLOFFEND          IGNORECALLVAL
 IMPFNCFALLOFF       IMPFNCMSSNGRET      NORETURNVAL1
 QUALFUNCRET

 40.17 - UNINIT

 UNINIT2             UNINIT3             UNINIT4
 UNINIT5

 40.18 - UNUSED

 CONSTFUNC           EXPNOTRES           EXPRNOTUSED
 NESTEDCOMMENT       NESTINCL            PRAGIGNORE
 QUALFUNCRET         SHORTCIRCUIT        UNCALLED
 UNNECCDD            UNNECINCL           UNREACHCODE
 UNREFADECL          UNREFDECL           UNREFSDECL
 UNREFSFUNC          UNREFTYP            UNUSEDCDD
 UNUSEDINCL          UNUSEDTOP           VOLATILEFUNC

  41 - Messages

 Compiler messages

 Some compiler messages substitute information from the program into
 the message text.  In this online help, the portion of the text to
 be substituted is shown in angle brackets (<>).

 Often, the same message is issued in different contexts within a
 program.  In this online help, the message context is indicated by
 the word <context> within the message.  The actual message issued by
 the compiler will contain one of the following phrases substituted
 for <context>:

      In this declaration,
      In the initializer for
      In the declaration of "<name>",
      In the definition of the function "<name>",
      In the declaration of an unnamed object,
      In this statement,

 You can control the messages issued with the /[NO]WARNINGS command
 line qualifier or the #pragma message preprocessor directive.  Note
 that some messages are not produced directly by the compiler; they
 are produced by other software that the compiler uses.  Messages not
 produced directly by the compiler are not included in this list and
 can not be controlled by /[NO]WARNINGS or #pragma message.

 41.1 - ABSTRACTDCL

 Message        Invalid abstract declarator.

 Description    An identifier was encountered in an abstract
                declarator.  An abstract declarator is used to
                specify a type only and must not contain an
                identifier that specifies a declarator.

 User Action    Correct the abstract declarator.

 41.2 - ADDRARRAY

 Message        <Context> & before array "<expression>" is ignored.

 Description    In certain modes, Compaq C will ignore an address-of
                operator used on an entire array.  This is for
                compatibility with other compilers that have this
                behavior.

 User Action    Remove the address-of operator.

 41.3 - ADDRCONSTEXT

 Message        <Context> "<name>" does not have a constant address,
                but occurs in a context that requires an address
                constant.  This is an extension of the language.

 Description    The C89 standard requires that an initializer for a
                pointer-type member of an automatic aggregate or
                union-type object have an initializer that is an
                address constant.  Other C compilers might not
                successfully compile a program that uses this
                extension.

 User Action    Be aware of this if you wish to port the program.

 41.4 - ADDRSUBCONST

 Message        <Context> accepting the expression "<expr>" as a
                constant is a language extension.

 Description    In many cases Compaq C accepts the subtraction of two
                addresses within the same array or struct/union as a
                constant.  The C standard does not consider such an
                expression to be a constant.  Therefore, this program
                does not conform to the standard and may be rejected
                by other compilers.

 User Action    Change the expression to be a constant.

 41.5 - ALIGNCONST

 Message        Integer constant alignment <number> is not
                necessarily supported on all platforms.

 Description    Although the specified alignment value is valid on
                this system, it might not be valid on other systems.
                For example, 16 is a valid alignment value on Alpha
                systems but would not be valid on VAX systems.

 User Action    Be aware of this potential portability issue.

 41.6 - ALIGNEXT

 Message        _align is a language extension.

 Description    The _align storage class modifier is a language
                extension of Compaq C.  Other C compilers might not
                successfully compile a program that uses the
                extension.

 User Action    Be aware of this extension if you wish to port the
                code.

 41.7 - ALIGNPOP

 Message        This "restore" has underflowed the member alignment's
                stack.  No corresponding "save" was found.

 Description    The member_alignment stack, managed by the #pragma
                member_alignment and #pragma environment directives,
                contains more restores than saves.  This could
                signify a coding or logic error in the program.

 User Action    Make sure each restore has a corresponding save.

 41.8 - ALREADYTLS

 Message        The identifier "<name>" has already appeared in an
                omp threadprivate directive.

 Description    The same identifier appears more than once in a
                single omp threadprivate directive, or appears in
                more than one omp threadprivate clause.

 User Action    Remove the duplicate identifiers

 41.9 - ANSIALIASCAST

 Message        <Context> a pointer to <type1> is being cast to a
                pointer to <type2>.  Using ANSI aliasing rules, the
                compiler may subsequently assume that the two pointer
                types are pointing to different storage locations.

 Description    The C standard allows a compiler to assume that these
                two pointer types will point to different storage
                locations.  The compiler will make this assumption
                whenever ansi aliasing is enabled on the command
                line, either directly or via another switch.  The
                cast in itself does not violate aliasing rules, e.g.
                you might cast the pointer value back to an allowed
                type before you use it to access memory.  But the
                compiler cannot generally determine whether or not
                you do that.  If your code accesses the memory
                designated by this pointer value using both of these
                pointer types, you may get unexpected results when
                ansi aliasing is enabled.

 User Action    Casting through pointer to void will silence this
                message.  But if the end result is that the same
                memory still gets accessed through different types
                that are not permitted under the aliasing rules, you
                may still get unexpected results.  If compiling
                without ansi aliasing corrects the behavior of your
                program, your code almost certainly violates the
                aliasing rules in a way that the compiler cannot
                detect.

 41.10 - ARGADDR

 Message        <Context> taking the address of the constant
                expression "<expression>" in an argument list is a
                language extension.

 Description    The Compaq C compiler will allow the address of a
                constant to be passed as an argument to a function
                call.  This is an extension to standard C.  Other C
                compilers might not successfully compile a program
                that uses this extension.

 User Action    Assign the constant to a variable, and pass the
                address of the variable.

 41.11 - ARGLISGTR255

 Message        <Context> the function call specifies an argument
                list whose length exceeds maximum specified by the
                calling standard.  Any use of va_count by the called
                function will be wrong.

 Description    The OpenVMS calling standard uses a byte-sized field
                to specify the size of the argument list.  The
                argument list to this function call requires more
                storage than can be represented in this size.  As a
                result, any use of va_count in the called function
                will return inaccurate information.

 User Action    Either reduce the size of the argument list, or do
                not use va_count in the called function.

 41.12 - ARGLISTOOLONG

 Message        <Context> the function call specifies an argument
                list whose length exceeds the VAX architecture limit.
                This call allocates stack space that is never
                deallocated by the called program.

 Description    The OpenVMS VAX Calling Standard requires that the
                called program deallocate the storage allocated for
                its arguments.  This is done by looking at the
                byte-size value that holds the argument list size.
                However, the argument list to this function call
                requires more storage than can be represented in a
                byte.  As a result, the called function will not
                deallocate the proper amount of storage.  This could
                result in unpredictable behavior.

 User Action    Reduce the size of the argument list.

 41.13 - ARGSIZE

 Message        <Context> the argument being passed to this function
                is too small.

 Description    A function parameter of array type has been declared
                with the keyword "static" in its outermost bound to
                indicate that the function may generate code that
                assumes that when it is called the actual argument
                will have at least as many elements as specified in
                the parameter declaration.  The argument provided in
                this call has fewer array elements than specified in
                the parameter declaration with static bound.

 User Action    Check the size of the argument passed to the function
                and/or modify or remove the static bound on the
                function parameter.

 41.14 - ARRAYBRACE

 Message        <Context> a required set of braces is missing.

 Description    The initializer for this array was not enclosed in
                braces.  While some compilers allow this, standard C
                requires braces around the initializer.

 User Action    Enclose the initializer in braces.

 41.15 - ARRAYLIMITSUP

 Message        <Context> Compaq C provides only limited support for
                array types larger than <n> bytes.

 Description    This array type is larger than can be represented by
                size_t.  While Compaq C will allow a type declared to
                be this size, uses of the type are not fully
                supported and may cause unpredictable behavior.

 User Action    Reduce the size of the array type.  It may be
                possible to use a pointer type instead of a large
                array.  The storage can still be accessed using array
                syntax.

 41.16 - ARRAYOVERFLOW

 Message        Integer overflow occurred when computing the size of
                an array type.

 Description    An array type is larger than allowed on this
                platform.

 User Action    Reduce the size of the array type.  It may be
                possible to use a pointer type instead of a large
                array.  The storage can still be accessed using array
                syntax.

 41.17 - ARRNOTLVALUE

 Message        <Context> accepting a non-lvalue array in a subscript
                operator is an extension to the C89 standard.

 Description    The C89 standard states that one of the operands to
                the subscript operator must be a pointer.  However,
                the array used in this operator could not be
                converted to a pointer because it is not an lvalue.
                Therefore this code does not conform to the C89
                standard and may not be accepted by other compilers.
                Note that the C99 standard allows this because all
                arrays are converted to pointers, not just lvalue
                arrays.

 User Action    Be aware of this difference if you plan to port this
                source to another compiler.

 41.18 - ASMCOMEXP

 Message        Comma expected while processing <text> instruction

 Description    The asm directive parser was expecting a comma, but
                one was not found.

 User Action    Correct the asm directive.

 41.19 - ASMENDEXP

 Message        Semicolon or asm end expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a semicolon to
                end an instruction, but one was not found.

 User Action    Correct the asm directive.

 41.20 - ASMFIMMDOTS

 Message        Floating point load-immediate instructions require a
                .s file

 Description    Using a floating point load immediate instruction in
                this asm directive will require the compiler to
                produce an .s file and invoke the assembler to
                process this source.

 User Action    Do not use floating point load immediate instructions
                in asm directives.

 41.21 - ASMFREGEXP

 Message        Float register expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a valid
                floating register, but one was not found.

 User Action    Correct the asm directive.

 41.22 - ASMHINTDOTS

 Message        Hint on <text> instruction requires a .s file

 Description    Using a hint in a transfer instruction in this asm
                directive will require the compiler to produce an .s
                file and invoke the assembler to process this source.

 User Action    Do not use hints in asm directives.

 41.23 - ASMICONEXP

 Message        Integer constant expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a valid
                integer constant, but one was not found.

 User Action    Correct the asm directive.

 41.24 - ASMIDEXP

 Message        Identifier expected while processing <text>
                instruction

 Description    The asm directive parser was expecting an identifier,
                but one was not found.

 User Action    Correct the asm directive.

 41.25 - ASMINSTEXP

 Message        Instruction mnemonic expected (found <text>)

 Description    The asm directive parser was expecting an instruction
                mnemonic, but one was not found.

 User Action    Correct the asm directive.

 41.26 - ASMLABEXP

 Message        Label expected while processing <text> instruction

 Description    The asm directive parser was expecting a label, but
                one was not found.

 User Action    Correct the asm directive.

 41.27 - ASMLABMULDEF

 Message        Multiple definitions of label in asm (<text>)

 Description    The asm directive parser has detected the same label
                defined more than once.

 User Action    Change one of the label names.

 41.28 - ASMLABUNDEF

 Message        Reference to undefined label in asm (<text>)

 Description    The asm directive parser has detected a reference to
                an undefined label.

 User Action    Correct the asm directive.

 41.29 - ASMLDGPDOTS

 Message        Unusual ldgp requires a .s file

 Description    This indicates that a ldgp pseudo-instruction was
                encountered in an unusual place or with unusual
                arguments.  The assembler will be invoked on the .s
                file.

 User Action    Correct the asm directive.

 41.30 - ASMLPAREXP

 Message        Left paren expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a left paren,
                but one was not found.

 User Action    Correct the asm directive.

 41.31 - ASMNOTINST

 Message        <text> instruction is not supported in asms on <text>

 Description    The asm directive parser does not recognizes a
                pseudo-opcode on this platform.

 User Action    Correct the asm directive.

 41.32 - ASMNOTREG

 Message        <text> is not a register name on <text>

 Description    The asm directive parser has noticed that a special
                register used in the directive is not valid on this
                platform.

 User Action    Correct the asm directive.

 41.33 - ASMNOTSUP

 Message        Support for <text> (<text>) in asms is not
                implemented on <text>

 Description    The asm directive parser does not support the feature
                in question on this platform.

 User Action    Rewrite the asm so that the feature is not used.

 41.34 - ASMPALTRUNC

 Message        PALcode function has been truncated to <number>

 Description    The asm directive call_pal instruction is followed by
                an integer beyond the range of call_pal values
                expected by the compiler.

 User Action    Use a valid call_pal argument.

 41.35 - ASMRAWREG

 Message        <text> uses <text> before it is defined

 Description    The asm directive parser has noticed that an
                instruction uses a register as a source before it is
                given a value.

 User Action    Correct the asm directive.

 41.36 - ASMREGEXP

 Message        Fixed register expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a valid
                integer register, but one was not found.

 User Action    Correct the asm directive.

 41.37 - ASMREGOVRLAPSC

 Message        Destination register overlaps input for <text>
                (software completion) instruction

 Description    An asm directive contains an instruction that may
                require a software completion routine in case of a
                runtime exception.  Such an instruction requires that
                the result register be different than any input
                register.

 User Action    Modify the asm so that the destination register is
                different than the sources.

 41.38 - ASMRPAREXP

 Message        Right paren expected while processing <text>
                instruction

 Description    The asm directive parser was expecting a right paren,
                but one was not found.

 User Action    Correct the asm directive.

 41.39 - ASMSYMDOTS

 Message        Use of symbolic addresses with <text> instruction
                requires a .s file

 Description    Using a symbolic operand in this asm directive will
                require the compiler to produce an .s file and invoke
                the assembler to process this source.

 User Action    Do not use symbolic operands in asm directives.

 41.40 - ASMUNKNOWNARCH

 Message        Unknown architecture (<text>) specified in <text>
                assembler directive

 Description    The asm directive parser has detected an unexpected
                argument to a .tune or .arch directive.

 User Action    Correct the asm directive.

 41.41 - ASMUNKSETOPT

 Message        Unsupported or illegal .set option (<text>)

 Description    The asm directive parser has detected an unexpected
                argument to a .set directive.

 User Action    Correct the asm directive.

 41.42 - ASSERTFAIL

 Message        The assertion "<assertion>" was not true, <reason>.

 Description    The expression in a #pragma assert
                non_zero(expression) directive was found to be zero.

 User Action    Correct the condition that caused the expression to
                be zero.

 41.43 - ASSERTION

 Message        <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.44 - ASSIGNEXT

 Message        <Context> relaxed struct or union type compatibility
                is a language extension.

 Description    In certain modes, the compiler will allow assignments
                or comparisons between structs or unions of different
                types if their sizes are the same.  This is an
                extension to standard C.  Other C compilers might not
                successfully compile a program that uses this
                extension.

 User Action    Recode the operation to use one of the memxxx
                run-time library functions.

 41.45 - ASSUMEONEELEM

 Message        The type of the tentatively-defined array "<name>" is
                incomplete at the end of the compilation unit.  The
                compiler will assume one array element.

 Description    The C standard requires that the type of all
                tentative definitions must be completed before the
                end of the compilation unit.  For compatibility with
                some other C compilers, Compaq C will give the array
                one element.

 User Action    Complete the type.

 41.46 - AUTOALIGN

 Message        The alignment boundary of an automatic cannot be
                greater than <longword or octaword>.

 Description    For automatic variables, the storage class modifier
                _align cannot specify an alignment greater than
                octaword on Alpha or longword on VAX.  The alignment
                will be set to the octaword on Alpha or longword on
                VAX.

 User Action    Decrease the alignment.  If a larger alignment is
                required, declare the variable with static storage
                class.

 41.47 - AUTOEXTERNAL

 Message        <Context> a storage class of "auto" or "register" is
                illegal at file scope.

 Description    The storage classes auto and register can only be
                used in a declaration that appears inside a function.
                They cannot be used in a declaration at file scope.

 User Action    Remove the storage class specifier or move the
                declaration inside a function body.

 41.48 - BADALIAS

 Message        Reference through restricted pointer <text> uses a
                pointer value based on different restricted pointer,
                <text>

 Description    The C language requires that restricted pointers
                always point to different storage.  The compiler has
                detected a case where an access using a restricted
                pointer is referencing memory pointed to a different
                restricted pointer.  This may cause unexpected
                behavior.

 User Action    Make sure restricted pointers point at unique
                storage.

 41.49 - BADALIGN

 Message        Invalid alignment boundary.

 Description    The _align storage class modifier was given an
                invalid value.  See documentation for valid values on
                each platform.

 User Action    Supply a correct value or remove the _align storage
                class modifier.

 41.50 - BADANSIALIAS

 Message        This statement uses the type "<type>" to reference
                the same storage location as the statement at <loc>,
                which uses the type "<type>".  This does not conform
                to the ANSI aliasing rules.

 Description    The standard allows a compiler to assume that since
                these two statements use different types, these two
                statements reference different storage locations.
                The Compaq C compiler does so whenever ansi aliasing
                is enabled.  Since your code relies on these two
                statements referencing the same storage location you
                should disable ansi aliasing.  If you do not do so,
                optimization may result in your program exhibiting
                unexpected behavior.

 User Action    Specify noansi_alias on the command line.

 41.51 - BADBOUNDCHK

 Message        <Context> pointer arithmetic was performed more than
                once in computing an array element.  The bounds
                checking code output by the compiler will only verify
                the "<expr>" expression.

 Description    When an array is accessed using pointer arithmetic
                and run-time array bounds checking is enabled, the
                Compaq C compiler is only able to output the checking
                code for the first pointer arithmetic operation
                performed on the array.  This can result in an
                incorrect check if the resulting pointer value is
                again operated on by pointer arithmetic.  Consider
                the expression a = b + c - d; where a is a pointer, b
                an array, and c and d integers.  When bounds checking
                is enabled the compiler will output a check to verify
                that c within the bounds of the array.  This will
                lead to an incorrect runtime trap in cases where c is
                outside the bounds of the array and c - d is not.

 User Action    Recode the pointer expression so that the integer
                part is in parenthesis.  This way the expression will
                contain only one pointer arithmetic operation.  In
                the earlier example the expression would be changed
                to a = b + (c - d);

 41.52 - BADBOUNDS

 Message        <Context> the array bounds are incorrectly specified.

 Description    A multi-dimensional array declaration contains a
                missing dimension specifier in a dimension other than
                the first.

 User Action    Correct the declaration.

 41.53 - BADBREAK

 Message        This break statement is not within a for, while, do,
                or switch statement.

 Description    A break statement can only appear inside a for,
                while, do, or switch statement.

 User Action    Remove the break statement, or replace it with a goto
                statement.

 41.54 - BADCHARSINHDR

 Message        Illegal characters after header name.

 Description    While processing an #include directive whose argument
                did not start with either a '<' or '"' character, the
                compiler encountered a character it did not expect.
                This most often occurs when the directive argument is
                a macro and there is an error during the expansion of
                that macro.

 User Action    Correct the argument to the #include directive.

 41.55 - BADCMMNTPSTNG

 Message        Token concatenation with comments might not be
                portable -- use ## operator.

 Description    A macro body contains a comment between two tokens
                with no white space either before or after the
                comment.  Older C compilers allowed this as a form of
                token pasting.  This type of token pasting might not
                give the desired results with newer compilers.

 User Action    Use the standard C form of token pasting by replacing
                the comment with the ## token pasting operator.

 41.56 - BADCOMLITTYPE

 Message        <Context> the type "<type>" cannot be used to specify
                the type of a compound literal.

 Description    The type of a compound literal must be an object type
                or an array of unknown size.

 User Action    Use a valid type.

 41.57 - BADCOMPLEXTYPE

 Message        <Context> "<spelling>" is an invalid complex type
                specifier.

 Description    The valid complex type specifiers are float _Complex,
                double _Complex, and long double _Complex.

 User Action    Use on of the valid complex type specifiers.

 41.58 - BADCONDIT

 Message        <Context> a common type could not be determined for
                the 2nd and 3rd operands ("<true expression>" and
                "<false expression>") of a conditional operator.

 Description    The types of the second and third operands of the
                conditional operator must conform to a set of rules
                that define what the type of the result of the
                conditional operator itself will be.  If the types of
                these operands do not conform to those rules, the
                compiler cannot determine the type of the result,
                which is an error.  Refer to the language
                documentation for a complete list of valid
                combinations of types for the second and third
                operands of the conditional operator.

 User Action    Modify the conditional expression so that the types
                of the second and third operands conform to the
                language rules.

 41.59 - BADCONSTEXPR

 Message        Syntax error in constant expression.

 Description    A preprocessing constant expression contained a
                syntax error.  The preprocessor was expecting to find
                a constant value or a left parenthesis.  The
                preprocessor will assume a value of zero was
                encountered.

 User Action    Correct the preprocessing constant expression.

 41.60 - BADCONTINUE

 Message        This continue statement is not within a for, while,
                or do statement.

 Description    A continue statement can only appear inside a for,
                while, or do statement.

 User Action    Remove the continue statement, or replace it with a
                goto statement.

 41.61 - BADCONVSPEC

 Message        <Context> this argument to <function name> contains a
                bad conversion specification "<incorrect conversion>"
                that will cause unpredictable behavior.

 Description    The compiler has detected an illformed conversion
                specification (flags, width, precision, length
                modifier) or an unknown conversion specifier (not
                diouxefgcspn...) that will cause unpredictable
                behavior.  This might not have been what you
                intended.

 User Action    Review the documentation for this function and modify
                the conversion specification as appropriate.

 41.62 - BADDCL

 Message        The name "<name>" cannot be undefined.

 Description    The code has tried to #undef a macro that is
                predefined by the C standard.  This is not allowed.
                The #undef will be ignored.

 User Action    Remove the #undef directive.

 41.63 - BADDECLSPEC

 Message        Invalid argument to __declspec.  Valid arguments are
                "thread" or "__thread".

 Description    The only valid arguments to the __declspec storage
                class modifier are "thread" or "__thread".

 User Action    Either use one of the valid arguments, or remove the
                storage class modifier.

 41.64 - BADDEFARG

 Message        Bad argument for "defined" operator.

 Description    The defined preprocessing operator was given an
                invalid argument.  The operator expects an identifier
                optionally enclosed in parenthesis.  The value of the
                operator is undefined.

 User Action    Supply a valid argument to the preprocessing
                operator.

 41.65 - BADENUM

 Message        Invalid enumerator.

 Description    While processing an enumerator list, the compiler was
                expecting to encounter an identifier, but it found
                something else instead.

 User Action    Correct the program syntax.

 41.66 - BADEXPR

 Message        Invalid expression.

 Description    An invalid expression was encountered.

 User Action    Correct the program syntax.

 41.67 - BADFATCOMMENT

 Message        The compiler cannot recover.

 Description    In certain cases, the compiler cannot proceed after
                an unterminated comment.  In these cases this message
                will be issued.  Note that this message is always
                output after the opencomment error has been output.

 User Action    Terminate the comment before the end-of-file.

 41.68 - BADFBDAT

 Message        <text> contains invalid feedback data

 Description    A feedback file contains data, but it was corrupt and
                could not be used.

 User Action    Create a new feedback file.

 41.69 - BADFBFILE

 Message        Invalid feedback file:  <text>

 Description    The compiler was unable to read information from the
                specified feedback file.

 User Action    Make sure the feedback file contains valid feedback
                information.

 41.70 - BADFBTYP

 Message        Unexpected file type for feedback file <text>

 Description    The file specified in the -feedback option does not
                have the file type expected by the compiler.

 User Action    Use a valid feedback file.

 41.71 - BADFLOATTYPE

 Message        <Context> this floating point type "<type>" is not
                supported on this platform.

 Description    The IEEE floating types __s_float and __t_float are
                not supported on the VAX platform.

 User Action    Change the type to a floating type that is supported
                on VAX, or compile the application on a platform that
                does support IEEE floating.

 41.72 - BADFORMALPARM

 Message        This token may not appear in a formal parameter list.

 Description    While processing the formal parameter list of a macro
                definition, the compiler encountered an invalid
                formal parameter specifier.  The macro will be be
                defined and this token will ignored, but that may not
                have been what you intended.

 User Action    Correct the formal parameter list so that it consists
                of a comma separated list of identifiers.

 41.73 - BADFORSTOCLS

 Message        The declaration in a for loop can only have storage
                class auto or register.

 Description    The declaration in a for loop contains a storage
                class specifier other than auto or register.  This is
                not allowed.

 User Action    Correct the storage class.

 41.74 - BADFUNCSTOCLS

 Message        The storage class of function <name> cannot be
                <storage_class>.  This storage class has been changed
                to 'extern'.

 Description    The globalref storage class cannot be used with a
                function declaration.  The compiler will use the
                storage class extern.

 User Action    Remove the globalref storage class from the function
                declaration.

 41.75 - BADGLOBALTYPE

 Message        This declaration has type "<type>", which is invalid
                for a globalvalue.  The extern_model strict_refdef
                will be used instead.

 Description    An object with globalvalue storage class can only
                have a type of integer, enum, or pointer type.  In
                other cases, the compiler will change the storage
                class from globalvalue to strict_refdef.

 User Action    Change the data type to be one that is valid for a
                globalvalue.

 41.76 - BADHEADERNM

 Message        Invalid include file or header name specification.

 Description    An #include directive was not followed by a valid
                argument.  The directive will be ignored.  The
                #include directive should be followed by either a
                file specification enclosed in angle brackets, a file
                specification enclosed in quotes, or an identifier
                that specifies a text module (OpenVMS only), or a
                macro to be expanded.

 User Action    Supply a valid argument to the #include directive.

 41.77 - BADHEXCONST

 Message        Hex constant value too large.

 Description    A hex constant used in a preprocessor directive is
                too large.  The value of the constant will be
                undefined.

 User Action    Decrease the value of the constant.

 41.78 - BADIFDEF

 Message        An #ifdef or #ifndef is not followed by an
                identifier.

 Description    An #ifdef or #ifndef preprocessing directive was not
                followed by an identifier.  The compiler will
                consider the preprocessor argument to be an
                identifier that is not defined.  Therefore, in these
                cases an #ifdef will always be FALSE, and an #ifndef
                will always be TRUE.

 User Action    Supply a valid identifier to the directive.

 41.79 - BADIFNDEFARG

 Message        #ifndef argument is not an identifier.

 Description    An #ifndef preprocessing directive was not followed
                by an identifier.  The compiler will consider this to
                be a TRUE condition.

 User Action    Supply a valid identifier to the directive.

 41.80 - BADINCLUDE

 Message        An #include directive has illegal syntax.

 Description    An #include directive was not followed by a valid
                argument.  This message occurs when the argument
                starts with a '<' or '"' character, but does not end
                with a matching delimiter.  In this case the compiler
                will add the matching delimiter to the end of the
                argument and process the directive normally.

 User Action    Correct the argument to the #include directive.

 41.81 - BADLINEDIR

 Message        Missing argument for #line directive.

 Description    An argument was not supplied to a #line preprocessing
                directive.  This directive must be followed by a
                digit sequence that specifies the line number or a
                macro that expands to a digit sequence.  The
                directive will be ignored.

 User Action    Supply a valid argument to the directive.

 41.82 - BADLINEDIRTV

 Message        Illegal token in #line directive.

 Description    A #line directive was followed by an invalid
                argument.  The #line directive should be followed by
                either a digit sequence or a digit sequence followed
                by a string literal.  The #line directive will be
                ignored.

 User Action    Supply a valid argument to the #line directive.

 41.83 - BADLINKREG

 Message        Invalid register "<register>" for linkage pragma.
                Pragma is ignored.

 Description    The compiler encountered bad register specifier in a
                #pragma linkage directive.  The message should point
                at the offending specifier.  The compiler will ignore
                the entire pragma.

 User Action    Correct the directive.

 41.84 - BADLINNUM

 Message        Ignoring the line number for the #line directive --
                too small.

 Description    A #line preprocessing directive specified a line
                value that is either zero or less than zero.  This is
                not valid.  The directive will be ignored.

 User Action    Either remove the directive or supply a positive
                value to the line specifier.

 41.85 - BADLOCALE

 Message        The compiler could not set its locale to either the
                locale-specific native environment or the "C" locale.

 Description    During start-up, the compiler was unable to set its
                locale.  As part of its initialization, the compiler
                will issue the call setlocale(LC_ALL, "").  If this
                call fails, the compiler will try to issue the call
                setlocale(LC_ALL, "C).  If this call also fails, the
                compiler will issue this message and abort.

 User Action    The best way to determine why the compiler is failing
                is to write a small program that contains the same
                library calls the compiler is making and then examine
                the return values.

 41.86 - BADMACROINLN

 Message        Illegal token from macro call in #line directive.

 Description    A #line directive was followed by a macro whose
                expansion did not form a valid argument to the
                directive.  The #line directive should be followed by
                either a digit sequence or a digit sequence followed
                by a string literal.  The #line directive will be
                ignored.

 User Action    Supply a valid argument to the #line directive.

 41.87 - BADMACRONAME

 Message        "<directive>" directive is not followed by an
                identifier and is being ignored.

 Description    A #define or #undef preprocessing directive was not
                followed by an identifier.  The first argument to
                these directives must be an identifier that specifies
                the macro to define or undefine.  The compiler will
                ignore the directive.

 User Action    Correct the argument to the preprocessing directive.

 41.88 - BADMBCOMMENT

 Message        An invalid multibyte character was encountered in a
                comment.

 Description    An invalid multibyte character was found in a
                comment.  While this will not affect the program
                execution, it might not have been what you intended.

 User Action    Correct the multibyte character.

 41.89 - BADMCRORECURS

 Message        Recursive expansion of macro "<name>" exceeded <num>
                levels and was terminated.

 Description    In certain cases, the compiler will allow a macro to
                be recursively expanded.  In these cases, the
                compiler limits the level of the recursion to prevent
                the compiler from looping to the point where it
                consumes all available memory.  When this level has
                been reached, this message is output.

 User Action    Rewrite either the macro definition or the macro
                invocation so that the recursion ends before the
                compiler limit is reached.  Note that the use of
                recursive macros is not a feature of the C standard,
                and most other C compilers will not support this.

 41.90 - BADMEMBER

 Message        Invalid member declaration.

 Description    A struct or union contains an invalid member
                declaration.  In most cases this error occurs when a
                semi-colon was omitted from the previous member
                declaration.

 User Action    Correct the declaration.

 41.91 - BADMEMOFF

 Message        <Context> multiple definitions of member "<name>"
                found with different offsets.

 Description    In certain modes, the compiler will allow a struct or
                union reference whose right operand is not a member
                of the struct or union type of the left operand.
                This is allowed for compatibility with other
                compilers.  However, in these cases the right operand
                must specify a member name that is declared with the
                same type and at the same offset in every struct or
                union type that declares it.  This message is issued
                when the compiler finds member name it is looking for
                declared with a different offset in more than one
                struct or union type.

 User Action    Compaq recommends that the left operand or a struct
                or union reference specify a member that is a member
                of the type of the struct or union specified by the
                right operand.  If this modification cannot be made
                then the member specified by the left operand must be
                declared at the same offset and with the same data
                type in all struct or union declarations that declare
                that member.

 41.92 - BADMEMTYP

 Message        <Context> multiple definitions of member "<name>"
                found with different types.

 Description    In certain modes, the compiler will allow a struct or
                union reference whose right operand is not a member
                of the struct or union type of the left operand.
                This is allowed for compatibility with other
                compilers.  However, in these cases the right operand
                must specify a member name that is declared with the
                same type and at the same offset in every struct or
                union type that declares it.  This message is issued
                when the compiler finds a member name it is looking
                for declared at the same offset but with different
                types in more than one struct or union type.

 User Action    Compaq recommends that the left operand or a struct
                or union reference specify a member that is a member
                of the type of the struct or union specified by the
                right operand.  If this modification cannot be made
                then the member specified by the left operand must be
                declared at the same offset and with the same data
                type in all struct or union declarations that declare
                that member.

 41.93 - BADMODULEID

 Message        Invalid identifier found immediately following
                "#pragma module" or "#module" directive.

 Description    The #pragma module or #module directive must be
                followed by an identifier that specifies the module
                name used by the linker.

 User Action    Correct the directive.

 41.94 - BADMULTIBYTE

 Message        An invalid multibyte character was encountered <in
                type of construction>.

 Description    An invalid multibyte character was encountered.  The
                message will provide additional information about the
                location and attempted use of the character.

 User Action    Correct the multibyte character.

 41.95 - BADNUM

 Message        <text> Qualifier value '<text>' is not an integer

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.96 - BADOCTCONST

 Message        Octal constant value too large.

 Description    An octal constant used in a preprocessor directive is
                too large.  The value of the constant will be
                undefined.

 User Action    Decrease the value of the constant.

 41.97 - BADOPCCAP

 Message        <text> instruction used is not in the selected
                instruction set

 Description    The compiler has output an instruction that is not in
                the instruction set selected on the command line.
                One way this can happen is to compile a program which
                contains a floating point operation and specifying
                that no floating point instructions should be
                generated.

 User Action    Either modify the source so the instruction will not
                be necessary, or use a different instruction set.

 41.98 - BADOPENBRACE

 Message        This open brace may be missing a close brace and
                causing the syntax error at <location>.

 Description    This message is always output to the terminal after
                another syntax error.  It is intended to provide the
                programmer with additional information that may
                identify the cause of the syntax error.  This message
                may, or may not, provide useful information.  In
                general, the more consistent the coding style in the
                source function, the more likely this message will be
                accurate.

 User Action    Correct the program syntax.

 41.99 - BADPARSEDECL

 Message        In this declaration, "<id>" must specify a type.

 Description    In processing a declaration, the type of the
                declarator has not been declared as a typedef.

 User Action    Either declare the type as a typedef, or correct the
                spelling of the type specifier in this declaration.

 41.100 - BADPARSEPARAM

 Message        In this parameter list, "<param>" must either be a
                type or must be followed by a ",".

 Description    In processing a function declaration, the compiler
                has found a case where the parameter list begins with
                two identifiers not separated by a comma and where
                the first identifier is not a type specifier.  If
                this is an old-style declaration the two identifiers
                must be separated by a comma.  If this is a prototype
                declaration, the first identifier must specify a
                type.

 User Action    Correct the function parameter specifiers.

 41.101 - BADPPDIR

 Message        File ends in an unfinished pp directive.

 Description    An unexpected end-of-file was encountered during a
                preprocessing directive.

 User Action    Correct the directive.

 41.102 - BADPRAGMAARG

 Message        Unexpected or missing argument to #pragma <pragma
                name>.  Pragma is ignored.

 Description    An argument to a #pragma preprocessing directive is
                either missing or is not correct.  The compiler will
                ignore the directive.

 User Action    Correct the directive.

 41.103 - BADPRAGMAARG1

 Message        Unexpected token encountered in pragma.  Found
                "<found>" when expecting <expecting>.  The pragma
                will be ignored.

 Description    While parsing a #pragma directive, the compiler has
                encountered something unexpected.  The message will
                contain information about what the compiler was
                expecting as well as what it found.

 User Action    Correct the offending directive.

 41.104 - BADPRAGMALINK

 Message        A bad linkage pragma was specified.  Pragma is
                ignored.

 Description    The compiler encountered a bad #pragma linkage
                directive.  The error message should point to the
                place in the pragma that the compiler considers bad.
                The compiler will ignore the entire pragma.

 User Action    Correct the directive.

 41.105 - BADPRAGNAMES

 Message        Invalid argument to the pragma names directive.
                Pragma is ignored.

 Description    An invalid argument has been specified for the
                #pragma names preprocessing directive.

 User Action    Correct the argument to the pragma.

 41.106 - BADPREFIX

 Message        Argument to extern_prefix is not a recognized keyword
                or a quoted string.  Pragma is ignored.

 Description    An invalid argument has been specified for the
                #pragma extern_prefix preprocessing directive.  The
                directive expects either the identifiers "save",
                "__save", "restore", "__restore", or a string
                constant that specifies the external prefix to use.
                The compiler will ignore the pragma.

 User Action    Correct the argument to the pragma.

 41.107 - BADPROTYP

 Message        Unexpected file type for profile file <text>

 Description    The file specified in the -feedback option does not
                have the file type expected by the compiler.

 User Action    Use a valid feedback file.

 41.108 - BADPTRARITH

 Message        <Context> performing pointer arithmetic on a pointer
                to void or a pointer to function is not allowed.  The
                compiler will treat the type as if it were pointer to
                char.

 Description    Pointer arithmetic is not allowed on pointers to
                function or void types For compatibility with some
                other compilers, an output file is still created.
                The result produced will be the same as if the
                pointer were a pointer to char.  This may or may not
                be compatible with other compilers that accept this
                syntax.

 User Action    Cast the pointer type to a pointer to object type
                before performing the arithmetic.

 41.109 - BADREGISTER

 Message        <Context> "<name>" has register storage class, but
                occurs in a context that precludes register storage.
                The storage class has been changed to auto.

 Description    An object that was declared with register storage
                class has been referenced in a way that is not valid
                for a register.  The most common example is taking
                the address of an object declared with register
                storage class.  As certain array accesses also
                require taking the address of an array, this message
                can also be output for accessing the element of an
                array declared with register storage class.  The
                compiler will change the storage class from register
                to auto.

 User Action    Either remove the register storage class from the
                declaration, or change the reference to be one that
                is valid for objects with register storage class.

 41.110 - BADRETURNTYPE

 Message        <Context> a function cannot return <type> type.

 Description    A function return type cannot be an array or function
                type.

 User Action    Correct the function declaration so that the return
                type is valid.

 41.111 - BADSEVERITY

 Message        The severity of message id <name> cannot be made less
                severe.  The severity for this message was not
                changed.

 Description    The severities of the compiler's error and fatal
                messages cannot be changed to a severity that is less
                severe.  The compiler's fatal messages cannot be
                changed to any other severity.  The compiler's error
                messages can only be changed to fatals.

 User Action    Remove the pragma or compiler option that tried to
                change the severity.

 41.112 - BADSTATICCVT

 Message        <Context> the address cannot be converted to the
                destination type.

 Description    A static initialization tried to convert a link-time
                address to another type.  However, the linker on this
                platform will not support such a conversion.

 User Action    Rewrite the static initialization, or perform the
                initialization using runtime code.

 41.113 - BADSTMT

 Message        Invalid statement.

 Description    An invalid statement was encountered.  The most
                common cause of this error is when a declaration
                appears after the first statement in a compound
                statement.

 User Action    Correct the program syntax.

 41.114 - BADSTMT1

 Message        Invalid statement.  This condition may have been
                caused by an open brace without a matching close
                brace.  The compiler will attempt to identify open
                braces that might be missing a close brace.

 Description    An invalid statement was encountered.  This condition
                may have been caused missing close brace.  This
                message is followed by some number of additional
                messages that attempt to identify

 User Action    Correct the program syntax.

 41.115 - BADSUBSCRIPT

 Message        <Context> an array subscript expression is either
                less than zero or greater than the largest value that
                can be represented by the size_t type.

 Description    The compiler has detected an array subscript
                expression that is outside the bounds of any valid
                array.  The array access might cause unpredictable
                behavior.

 User Action    Specify a valid array subscript.

 41.116 - BADTKEN

 Message        Lexically invalid token.

 Description    An invalid token was encountered in a preprocessing
                directive.

 User Action    Correct the preprocessing directive.

 41.117 - BADUNKNOWNVLA

 Message        <Context> a "*" bounds specifier is invalid.  Using a
                "*" to specify a variable-length array of unknown
                size is only valid in declarations with function
                prototype scope.

 Description    Using a "*" as a bounds specifier to designate a
                variable-length array with unknown size is only valid
                in declarations with function prototype scope.

 User Action    Supply a valid bound specifier.

 41.118 - BADUNROLLVAL

 Message        The #pragma unroll directive takes a value from zero
                to 255.  The value "<val>" is outside that range.
                The directive will be ignored.

 Description    The value supplied to a #pragma unroll is outside the
                range allowed for the directive.  The #pragma
                directive will be ignored.

 User Action    Use a valid value for the unroll count.

 41.119 - BADUSELINK

 Message        A bad use_linkage pragma was specified.  Pragma is
                ignored.

 Description    The compiler encountered a bad #pragma use_linkage
                directive.  The error message should point to the
                place in the pragma that the compiler considers bad.
                The compiler will ignore the entire pragma.

 User Action    Correct the directive.

 41.120 - BADUSERMACRO

 Message        The name "<name>" cannot be a user-defined macro.

 Description    The code has tried to #define either a macro that is
                predefined by the C standard or the DEFINED
                preprocessing keyword.  This is not allowed.  The
                #define will be ignored.

 User Action    Remove the #define directive.

 41.121 - BADVASTART

 Message        <Context> old-style parameter "<name>", with type
                that requires default argument promotion, cannot be
                used with va_start.

 Description    It is invalid for the parameter specified in va_start
                to be one that requires default argument promotion.

 User Action    The recommended fix is to recode the function
                definition to use a prototype-format definition.  It
                is also possible to change the parameter declaration
                to use one of the default types, for example double.

 41.122 - BIFENABLED

 Message        The function "<routine name>" is a builtin function
                reserved to the compiler, and does not require a
                #pragma intrinsic.  The function will continue to be
                treated as a builtin.

 Description    A function identifier specified in a #pragma function
                intrinsic is the name of a builtin function.  These
                functions cannot be explicitly enabled, they are
                always handled as builtin functions.

 User Action    Remove the inappropriate use of the pragma.

 41.123 - BIFPROTO

 Message        <Context> the built-in function, "<name>", requires a
                prototype declaration from <filename>.

 Description    Invoking a built-in function requires that the
                function be declared before it is invoked.  This
                should be done by including the header file noted in
                the message.

 User Action    Include the header file before the function is
                invoked.

 41.124 - BITARRAY

 Message        The CDD description for <name> specifies that it is
                an array of bitfields; It has been converted to a
                scalar bitfield.

 Description     Compaq C does not allow arrays of bitfields.  The
                resulting C declaration will be a bitfield of the
                same total size as that specified in the CDD
                description.

 User Action     If a bitfield type is acceptable, then no user
                action is necessary.  If, however, the bitfield type
                is not acceptable, then the CDD description should be
                altered.

 41.125 - BITBADREP

 Message        <Context> the bitfield type is not an integral type.

 Description    A bitfield has been declared with a non-integral
                type.  Standard C requires that all bitfields be
                declared with either int, unsigned int, or signed int
                type.

 User Action    Change the type of the bitfield.

 41.126 - BITCONSTSIGN

 Message        <Context> the integer constant "<constant>" does not
                have the same sign as the 1-bit bitfield it is being
                converted to.

 Description    Either an unsigned 1-bit bitfield was assigned -1, or
                a signed 1-bit bitfield was assigned 1.  This may not
                be what you intended.

 User Action    Change the constant to be the appropriate sign.

 41.127 - BITFIELDSIZE

 Message        The CDD description for bitfield <name> specifies a
                size greater than 32; The excess is declared
                separately.

 Description     Compaq C does not allow individual bitfields larger
                than 32.  As a result, a series of bitfields have
                been declared whose total size matches that of the
                CDD definition.

 User Action    If the generated definitions are acceptable, then no
                user action is necessary.  If, however, the generated
                definitions are not acceptable, then the CDD
                description should be altered.

 41.128 - BITNOTINT

 Message        <Context> the bitfield type is not an int, signed
                int, unsigned int or _Bool.

 Description    A bitfield has been declared with a type other than
                int, signed int, unsigned int or _Bool.  This is not
                allowed by the C standard.

 User Action    Change the declaration to use one of the allowed
                types or compile with a standard mode that allows
                this behavior.

 41.129 - BITWIDTH

 Message        <Context> the bitfield width expression
                "<expression>" is outside the range <lower> to
                <upper>.

 Description    A bitfield width specifier was either less than zero,
                or is greater than the number of bits in an int.  In
                some modes, the compiler will assume a width
                specifier equal to the number of bits in an int.

 User Action    Use a valid bitfield width specifier.

 41.130 - BITWIDTHTYP

 Message        <Context> the bitfield width expression
                "<expression>" does not have an integral type.

 Description    A bitfield width specifier does not have an integral
                type.  A bitfield width specifier must be an integral
                constant expression.

 User Action    Correct the width specifier.

 41.131 - BLOCKEXTVLA

 Message        <Context> the block scope identifier "<name>" cannot
                be declared with a variably modified type because it
                has extern storage class.

 Description    Only ordinary identifiers with block scope and
                without storage class extern, or ordinary identifiers
                with function prototype scope can be declared with a
                variably modified type.

 User Action    Correct the declaration.

 41.132 - BLOCKINL

 Message        Block level declarations of inline functions are not
                allowed.

 Description    In C99 standard, block level declaration of inline
                functions are prohibited.

 User Action    Move the inline function declaration to file scope.

 41.133 - BLTINARGCNT

 Message        <Context> an incorrect number of arguments were
                passed to the builtin function, "<function
                expression>".

 Description    This message is output on OpenVMS systems when the
                number of arguments passed to the builtin function is
                not one.

 User Action    Correct the call to the builtin function.

 41.134 - BLTINIMPLRET

 Message        <Context> for the function "<name>", the implicit
                return type of "<type>" is not consistent with the
                expected type of "<type>".  It will be treated as an
                ordinary implicitly defined external function.

 Description    A function that could be handled internally by the
                compiler has not been declared, so an implicit
                declaration has been created for the function.  The
                return value for the function is being used, and the
                implicit return type does not agree with what the
                compiler expected to see.  In such cases, the
                function will not be handled internally, but will
                instead be called at run time in the usual manner.
                This could result in a performance loss, or possibly
                incorrect results if the implicit return type is
                incorrect.

 User Action    If the function is intended to refer to the runtime
                library routine, the appropriate header file should
                be included in the source.  Alternatively, a correct
                prototype could be provided privately in the source
                file.  If the function is intended to be a
                replacement for the runtime library routine, disable
                the intrinsic version by specifying "#pragma
                function(function_name)" in the source file.

 41.135 - BOOLEXT

 Message        The _Bool data type is a new feature in the C99
                standard.  Other C compilers may not support this
                feature.

 Description    This is a new language feature in C99.  While having
                a standard specification for portability, the feature
                may not yet be available in all of the compilers you
                use.

 User Action    Determine whether or not the use of this feature will
                cause portability problems for this code.

 41.136 - BOOLNA

 Message        The _Bool keyword is not supported in this language
                mode.  It will be treated as an identifier in this
                compilation.

 Description    Support for the _Bool keyword is only available in
                certain language modes.  Support is not present when
                the compiler is in VAX C, K & R (common), or strict
                ANSI89 standard modes.  In these language modes _Bool
                will be treated as an identifier.

 User Action    Compile using one of the other compilation modes.

 41.137 - BOUNDADJ

 Message        The CDD description for <name> specifies
                non-zero-origin dimension bound(s); The bound(s) are
                adjusted to zero-origin.

 Description    The CDD description specifies lower bounds(s) for an
                array that is non-zero.  The resulting C definition
                will have the upper bound(s) adjusted for lower
                bound(s) of zero.

 User Action    Verify that all subscript expressions are referencing
                the correct array element(s).

 41.138 - BOUNDNOTINT

 Message        <Context> the array bound "<expression>" does not
                have an integral type.

 Description    The compiler has encountered an array-bounds
                specifier that is not an integral type.  Array-bounds
                specifiers must be positive integer constants.

 User Action    Correct the array-bounds specifier

 41.139 - BUGCHECK

 Message        Compiler bugcheck.  Submit an SPR with a problem
                description.

 Description    An unexpected condition occurred in the compiler.
                This is most likely caused by a compiler bug.

 User Action    Reduce the program that is causing the failure as
                much as possible.  This often leads to a small test
                case.  Please submit a problem report containing
                enough information for Engineering to reproduce the
                problem.  The problem report should include the small
                test case.

 41.140 - C99NAONVAX

 Message        Full C99 is not supported on this platform.  Language
                mode set to "relaxed_ansi89", which includes the C99
                features supported on this platform.

 Description    The Compaq C compiler on OpenVMS VAX does not support
                the C99 standard and will therefore not accept the
                /STANDARD=C99 qualifier.  The compiler will use
                /STANDARD=RELAXED_ANSI.  This mode includes all C99
                features that are supported on OpenVMS VAX.

 User Action    Do not use /STANDARD=C99 on this platform.

 41.141 - CANNOTREDEF

 Message        Cannot #define a macro that is currently expanding.

 Description    The program is trying to #define the same macro it is
                currently expanding.  The #define will be ignored.

 User Action    Remove the #define, or move it after the expansion of
                the macro.

 41.142 - CANNOTUNDEF

 Message        Cannot #undef a macro that is currently expanding.

 Description    The program is trying to #undef the same macro it is
                currently expanding.  The #undef will be ignored.

 User Action    Remove the #undef, or move it after the expansion of
                the macro.

 41.143 - CANTDISABLE

 Message        The message id <name> cannot be disabled.

 Description    The compiler's error and fatal messages cannot be
                disabled.

 User Action    Remove this message id from the list of messages
                being disabled on the command line or in the #pragma
                message line.

 41.144 - CANTMKRPSTORY

 Message        Attempt to create repository "<string>" for shortend
                names failed; OpenVMS status:  <reason>.

 Description    A compilation that used the /NAMES=SHORTENED
                qualifier could not open the repository used to store
                the shortened names.  This could be because an
                invalid name was specified in the /REPOSITORY
                qualifier.  The message will give additional
                information about the failure.

 User Action    Correct whatever caused the failure.

 41.145 - CDDATTR

 Message        One or more field descriptions in this CDD record
                specify an attribute that is being ignored.

 Description    The CDD description specifies an attribute that is
                not supported in Compaq C.  The attribute is ignored.

 User Action     No action is required.

 41.146 - CDDBADID

 Message        An invalid identifier, <name>, is being ignored in
                the dictionary directive.

 Description    An unexpected identifier follows the dictionary
                pathname in a dictionary preprocessing directive.
                The identifier is ignored.

 User Action    Remove the invalid identifier(s) in the dictionary
                directive.

 41.147 - CDDEXT

 Message        #dictionary is a language extension.

 Description    The #dictionary directive is an extension of Compaq
                C/C++ on OpenVMS.  The program might not compile with
                other compilers or on other platforms.

 User Action    Be aware of this if you wish to port the program.

 41.148 - CDDPATH

 Message        A valid CDD pathname was not found.  The CDD
                directive has been ignored.

 Description    The #dictionary preprocessing directive was not
                followed by an argument.  The directive must be
                followed by a character string that gives the path
                name of a CDD record, or a macro that expands to the
                path name of the record.

 User Action    Supply a valid argument to #dictionary.  Compaq also
                recommends that the #dictionary preprocessing
                directive be replaced by the #pragma dictionary
                operator.

 41.149 - CDDTOODEEP

 Message        The attributes for the Common Data Dictionary record
                description <name> exceed the implementation's limit
                for record complexity.

 Description    The CDD description specifies more attributes than
                the interface between the CDD and the compiler can
                handle.

 User Action    Simplify the record description.

 41.150 - CHARCONST

 Message        Ill-formed character constant.

 Description    An invalid character constant was encountered.

 User Action    Correct the character constant.

 41.151 - CHAROVERFL

 Message        A character constant value requires more than
                sizeof(int) bytes of storage.

 Description    A character constant is too long to fit in an int.
                The compiler will ignore the extra characters.

 User Action    Remove the extra characters from the character
                constant.

 41.152 - CHKEXPAND

 Message        <number> integrity check error(s) after IL expansion
                of routine <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.153 - CHKINIT

 Message        <number> integrity check error(s) in initial IL & ST
                for module <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.154 - CHKOPT

 Message        <number> integrity check error(s) after <text>
                optimization phase for routine <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.155 - CLASSNOINIT

 Message        <Context> the struct or union object "<name>" is
                uninitialized and has a const member.

 Description    An object of struct or union type has a const member
                and has not been initialized.  This might not have
                been what you intended.  Compaq recommends that you
                initialize all objects with the const attribute.  The
                missing initializer will make this an invalid
                declaration in C++.

 User Action    Initialize the struct or union object.

 41.156 - CLOSBRACKET

 Message        Missing "]".

 Description    The compiler was expecting a closing bracket, but one
                was not found.

 User Action    Correct the program syntax.

 41.157 - CLOSEBRACE

 Message        Missing "}".

 Description    The compiler was expecting a closing brace, but one
                was not found.

 User Action    Correct the program syntax.

 41.158 - CLOSEPAREN

 Message        Missing ")".

 Description    The compiler was expecting a closing parenthesis, but
                one was not found.

 User Action    Correct the program syntax.

 41.159 - CMPPTRFUNVOID

 Message        <Context> accepting the [in]equality comparison of a
                pointer to void and a pointer to function type is a
                language extension.

 Description    Under the C standard, it is a constraint violation to
                perform an [in]equality comparison between a pointer
                to void and a pointer to function type.  Therefore
                this code may not be accepted by other compilers.

 User Action    Cast one of the pointers to the type of the other.

 41.160 - COLMAJOR

 Message        The CDD description for <name> specifies that it is a
                column-major array; It has been converted to a
                one-dimensional array.

 Description    The Compaq C compiler supports only row-major arrays.
                Therefore the column-major array description in the
                CDD has been converted to a one-dimensional array of
                the same total size and with the same total number of
                elements.

 User Action    Verify that all subscript references to the array
                reference the correct array element.

 41.161 - COMMANDMACRO

 Message        Extraneous text "<text>" at the end of the command
                line macro "<macro>" is ignored.

 Description    A command line macro define contains an invalid macro
                name.  The compiler will define the macro name listed
                in the message.

 User Action    Correct the command line invocation.

 41.162 - COMPILERBUG

 Message        Bug found in compiler:  <bug>.

 Description    This message indicates that the compiler detected a
                bug within itself.

 User Action    Please report the compiler bug and include an example
                program that reproduces the problem.

 41.163 - COMPLEXEXT

 Message        The complex data type is a new feature in the C99
                standard.  Other C compilers may not support this
                extension.

 Description    This is a new language feature in the C99 revision of
                the standard.  While having a standard specification
                for portability, the feature may not yet be available
                in all of the compilers you use.

 User Action    Determine whether or not the use of this feature will
                cause portability problems for this code.

 41.164 - COMPLEXNA

 Message        The complex data types are not supported in this
                language mode.  This will be treated as an identifier
                in this compilation.

 Description    Support for the complex data types is only available
                in certain language modes.  Support is not present
                when the compiler is in VAX C, K & R (common), or
                strict ANSI89 standard modes.  In these language
                modes _Complex and _Complex_I will be treated as
                identifiers.

 User Action    Compile using one of the other compilation modes.

 41.165 - COMPLEXNA1

 Message        The complex data types are not supported on this
                platform.  This will be treated as an identifier in
                this compilation.

 Description    The complex data type is not supported on the VAX
                platform.

 User Action    Remove use of the complex types or compile the
                application on a platform that does support the
                complex data types.

 41.166 - CONLINKREG

 Message        Conflicting register usage between "<first set>" and
                "<second set>".  Pragma is ignored.

 Description    The same register was specified in two different
                register lists of a #pragma linkage directive.  The
                compiler will ignore the entire pragma.

 User Action    Correct the directive.

 41.167 - CONPSECTATTR

 Message        Conflicting psect attribute overrides previous
                attribute.

 Description    A psect attribute specified in a #pragma extern_model
                directive contradicts an attribute specified earlier
                in the directive.  This attribute will override the
                one specified earlier.

 User Action    Remove one of the contradictory psect attributes.

 41.168 - CONSTCOMPLIT

 Message        <Context> accepting a compound literal as a constant
                is a language extension.  The compound literal will
                be treated as a cast expression.

 Description    A compound literal appears in a context where a
                constant expression is required.  The C standard does
                not list compound literals as a form of operand that
                is allowed in a constant expression, so using a
                compound literal in this context is not maximally
                portable.  The compiler will treat the compound
                literal as if it were a cast expression, which is a
                form of operand that the standard lists as being
                allowed in constant expressions.

 User Action    For maximum portability, replace the compound literal
                with a cast expression.

 41.169 - CONSTFOLDNS

 Message        <Context> the libraries on this platform do not yet
                support compile-time evaluation of the constant
                expression "<expression>".

 Description    Compile-time evaluation of constant expressions
                requires underlying support in the libraries
                available to the compiler at compile-time, and this
                expression contains an operator that is not yet
                implemented in those libraries.

 User Action    If possible, replace part of the constant expression
                with a variable of the same value.

 41.170 - CONSTFUNC

 Message        Ignoring const type qualifier in declaration of
                <name>.

 Description    The const type qualifier cannot be used with a
                function type.  The compiler will ignore the type
                qualifier.

 User Action    Remove the type qualifier.

 41.171 - CONSTINWRT

 Message        Const variable resides in wrt extern model.

 Description    The current extern model places all external objects
                in a modifiable section.  Placing an object with a
                const type qualifier in such a section means that
                there is no run-time protection against writing to
                the object.  This might not have been what you
                intended.

 User Action    Place const objects in sections that cannot be
                modified.

 41.172 - CONSTNOINIT

 Message        <Context> the const object "<name>" is uninitialized.

 Description    A defined or tentatively-defined const object has not
                been initialized.  This would not be valid in C++.
                It is also considered good programming practice to
                initialize all const objects with their value.

 User Action    Either remove the const type modifier, or supply an
                initializer for the object.

 41.173 - CONSTSTOCLS

 Message        <Context> the const object "<name>" has no explicit
                storage class.  In C, its storage class defaults to
                "extern"; in C++, it defaults to "static".  Add an
                explicit "extern" or "static" keyword.

 Description    One of the more signifcant and confusing differences
                between C and C++ is their treatment of file scope
                const objects declared without a storage class.  C
                will give the object extern storage class, making the
                object visible in other compilation units.  C++ will
                give the object static storage class.  This can cause
                an undefined symbol error when other compilation
                units try to reference the symbol.

 User Action    Add an explicit "extern" or "static" keyword to the
                declaration.

 41.174 - CONTFILE

 Message        A file ends with a continuation character.

 Description    All source files, even those included via the
                #include preprocessing directive, must not end with a
                backslash continuation character.

 User Action    Either remove the continuation character or add an
                additional line to the source program that does not
                end in a continuation character.

 41.175 - CONTROLASSIGN

 Message        <Context> the assignment expression "<expression>" is
                used as the controlling expression of an if, while or
                for statement.

 Description    A common user mistake is to accidentally use
                assignment operator "=" instead of the equality
                operator "==" in an expression that controls a
                transfer.  For example saying if (a = b) instead of
                if (a == b).  While using the assignment operator is
                valid, it is often not what was intended.  When this
                message is enabled, the compiler will detect these
                cases at compile-time.  This can often avoid long
                debugging sessions needed to find the bug in the
                user's program.

 User Action    Make sure that the assignment operator is what is
                expected.

 41.176 - CONVARASLIT

 Message        <Context> the use of the const variable "<name>" in
                place of a literal constant is a language extension.

 Description    Compaq C will allow a non-volatile const variable
                that has been initialized to be used in contexts
                where a constant is required.  For example, as the
                bounds specifier to a file scope array.  This is an
                extension to standard C.  Other C compilers might not
                successfully compile a program that uses this
                extension.

 User Action    Use the constant value instead of the variable.

 41.177 - CRXCOND

 Message        Common Data Dictionary description extraction
                condition.

 Description    Something went wrong while trying to get the CDD
                record description from the CDD.  The error message
                that follows gives more information about the nature
                of the problem.

 User Action    If necessary, correct the indicated condition in the
                CDD record description or with the user environment.

 41.178 - CVIDXOVFL

 Message        module uses more than 65536 CodeView type indices

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.179 - CVTDIFTYPES

 Message        <Context> "<expression>" of type "<type>", is being
                converted to "<target type>".

 Description    In certain modes, the compiler will allow assignments
                or comparisons between pointer and integer types.
                This is an extension to standard C.  Other C
                compilers might not successfully compile a program
                that uses this extension.

 User Action    Use a cast operator to convert one operand to the
                other.

 41.180 - CVTU32TO64

 Message        <Context> an unsigned 32-bit integer constant that
                has its high-order bit set has been converted to a
                signed 64-bit type.  The conversion will not
                sign-extend.

 Description    This message indicates a conversion that may produce
                unexpected results on this platform because the
                destination type is a 64-bit type instead of a 32-bit
                type.

 User Action    If this is the intended behavior, first cast the
                constant to an unsigned 64-bit type.

 41.181 - CXXCOMMENT

 Message        C++ style comments (//) may not be portable.

 Description    C++ style comments have been detected on this line.
                Although they have been accepted by Compaq C in this
                language mode, they will not be accepted by all
                compilers or by Compaq C in strict C89 standard mode.

 User Action    Replace C++ style line comments (//) with equivalent
                C comments (/* ...  */) if portability is a concern.

 41.182 - CXXKEYWORD

 Message        "<C++ keyword>" is a keyword in C++.  Using it as an
                identifier in your C program will prevent porting
                your program to C++.

 Description    This identifier is a keyword in C++.  The program is,
                therefore, not a valid C++ program.

 User Action    Choose a different name for the identifier.

 41.183 - CXXPRAGMANA

 Message        The Compaq C++ pragma "<pragma name>" is not
                supported by Compaq C.  The pragma will be ignored.

 Description    The compiler has encountered a pragma that is
                supported by Compaq C++ but is not supported by
                Compaq C.  The compiler will ignore the pragma.

 User Action    Remove the pragma or compile the program with Compaq
                C++.

 41.184 - DCLMISMATLNK

 Message        The declaration of "<name>" has <number> parameter(s)
                but its linkage "<name>" has <number>.  Standard
                linkage will be used.

 Description    The number of parameters specified in a declaration
                does not match the number of parameters specified by
                the special linkage associated with this function or
                typedef.  The special linkage was specified via the
                #pragma use_linkage directive.  Because of this
                mismatch, the compiler will ignore the special
                linkage and use the standard linkage instead.

 User Action    Make sure the number of parameters specified by the
                special linkage match the number of parameters in the
                function.

 41.185 - DCLMISMATLNK0

 Message        The declaration of "<name>" has an unknown number of
                parameters and cannot be used with the linkage
                "<name>".  Standard linkage will be used.

 Description    If a special linkage specifies parameter information,
                the declaration must not specify an unknown or
                variable number of parameters.  The special linkage
                was specified via the #pragma use_linkage directive.
                Because of this mismatch, the compiler will ignore
                the special linkage and use the standard linkage
                instead.

 User Action    Make sure the number of parameters specified by the
                special linkage match the number of parameters in the
                function type.

 41.186 - DCLMISMATLNK1

 Message        <where> "<name>" <modifier>has a floating type but
                its linkage "<name>" specifies an integer register.
                Standard linkage will be used.

 Description    A parameter or return value of a function type is a
                floating type, but the corresponding parameter or
                return value in the special linkage specifies an
                integer register.  The special linkage was specified
                via the #pragma use_linkage directive.  Because of
                this mismatch, the compiler will ignore the special
                linkage and use the standard linkage instead.

 User Action    Make sure the register specified by the special
                linkage matches the type of of the corresponding
                parameter and return value of the function type.

 41.187 - DCLMISMATLNK2

 Message        <where> "<name>" <modifier>requires an integer
                register but its linkage "<name>" specifies a
                floating register.  Standard linkage will be used.

 Description    A parameter or return value of a function type is an
                integer type, but the corresponding parameter or
                return value in the special linkage specifies a
                floating register.  The special linkage was specified
                via the #pragma use_linkage directive.  Because of
                this mismatch, the compiler will ignore the special
                linkage and use the standard linkage instead.

 User Action    Make sure the register specified by the special
                linkage matches the type of of the corresponding
                parameter and return value of the function type.

 41.188 - DCLMISMATLNK3

 Message        <where> "<name>" has a size that is incompatible with
                the number of registers specified by its linkage
                "<name>".  Standard linkage will be used.

 Description    The size of a parameter or return value of a function
                type is incompatible with the size specified by the
                special linkage.  The special linkage was specified
                via the #pragma use_linkage directive.  Because of
                this mismatch, the compiler will ignore the special
                linkage and use the standard linkage instead.

 User Action    Make sure the number of registers specified by the
                special linkage match the type of the corresponding
                parameter and return value.

 41.189 - DCLMISMATLNK4

 Message        <where> "<name>" <modifier>has a type that is not
                allowed because the it has the linkage "<name>".
                Standard linkage will be used.

 Description    Using a special linkage places certain restrictions
                on the type of a function's parameters and return
                value.  In general, the type must be a scalar type
                that can be represented by a register or registers on
                this platform.  In cases where some other type is
                used, the compiler will ignore the special linkage
                and use the standard linkage instead.

 User Action    Either remove the name from the #pragma use_linkage
                directive that specified the special linkage, or
                modify the type to be acceptable to the special
                linkage.

 41.190 - DCLMISMATLNK5

 Message        "<name>" has a void return type but its linkage
                "<name>" specifies a return location.  Standard
                linkage will be used.

 Description    If a special linkage specifies return value
                information, the declaration must not specify a void
                return type.  The special linkage was specified via
                the #pragma use_linkage directive.  Because of this
                mismatch, the compiler will ignore the special
                linkage and use the standard linkage instead.

 User Action    Make sure the return value specified by the special
                linkage matches the return type.

 41.191 - DECCONSTLARGE

 Message        Decimal constant value too large.

 Description    A decimal constant used in a preprocessor directive
                is too large.  The value of the constant will be
                undefined.

 User Action    Decrease the value of the constant.

 41.192 - DECLAFTERSTMT

 Message        Placing a declaration after a statement is a new
                feature in the C99 standard.  Other C compilers may
                not support this feature.

 Description    This is a new language feature in the C99 revision of
                the standard.  While having a standard specification
                for portability, the feature may not yet be available
                in all of the compilers you use.

 User Action    Determine whether or not the use of this feature will
                cause portability problems for this code.

 41.193 - DECLARATOR

 Message        Invalid declarator.

 Description    A declaration did not contain an identifier that
                specifies the item to be declared.

 User Action    Specify a declarator in the declaration.

 41.194 - DECLINFOR

 Message        Placing a declaration in a for loop is a new feature
                in the C99 standard.  Other C compilers may not
                support this extension.

 Description    This is a new language feature in the C99 revision of
                the standard.  While having a standard specification
                for portability, the feature may not yet be available
                in all of the compilers you use.

 User Action    Determine whether or not the use of this feature will
                cause portability problems for this code.

 41.195 - DECLSPECEXT

 Message        __declspec is a language extension.

 Description    The __declspec storage class modifier is a language
                extension of Compaq C.  Other C compilers might not
                successfully compile a program that uses the
                extension.

 User Action    Be aware of this extension if you wish to port the
                code.

 41.196 - DEFINOTHER

 Message        Another file in this compilation contains an external
                definition of a function named "<name>", or declares
                it as a variable with external linkage, at <where>.

 Description    In a compilation where interfile optimization has
                been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on
                OpenVMS), the compiler has detected more than one
                definition of a function using the same external
                name, or has found that a function and a variable
                have the same external name.  An external function
                can have only a single definition.  And a given
                identifier with external linkage can refer either to
                a function or to a variable, but not both.

 User Action    Remove or rename one of the names.

 41.197 - DEFINOTHER1

 Message        The external variable "<name>" was defined as an
                external function in another module of this
                compilation at <where>.

 Description    In a compilation where interfile optimization has
                been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on
                OpenVMS), the compiler has detected a name with
                external linkage defined as a variable in one
                compilation unit and a function in another.

 User Action    Remove or rename one of the definitions.

 41.198 - DEFINOTHER2

 Message        This declaration of "<name>" specifies a different
                type than the declaration in another module of this
                compilation at <where>.

 Description    In a compilation where interfile optimization has
                been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on
                OpenVMS), the compiler has detected a name with
                external linkage declared with different types in two
                different modules.  Although the runtime behavior may
                be as intended and match the behavior when the
                modules are separately compiled without interfile
                optimization, the behavior is not well defined unless
                the types are compatible.

 User Action    Modify one or more of the declarations to make the
                types compatible.

 41.199 - DEFINOTHER3

 Message        This declaration of "<name>" specifies a different
                thread-local attribute than a declaration in another
                module of this compilation at <where>.

 Description    In a compilation where interfile optimization has
                been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on
                OpenVMS), the compiler has detected a name with
                external linkage declared thread-local in one module
                and not thread-local in another.  This can lead to
                unexpected results at runtime.

 User Action    Modify one the declarations to make the thread-local
                attributes match.

 41.200 - DEFPARMTYPE

 Message        There is no declaration for the old-style function
                parameter "<name>".  Type defaulted to int.  This is
                a violation of the C99 standard.

 Description    The parameter of an old-style function definition was
                not declared.  It will default to int type.  Omitting
                the type specifier is not valid in C99, and is often
                considered poor programming practice.

 User Action    Declare the parameter.  Compaq also recommends that
                old-style function definitions be replaced by
                prototype-format definitions.

 41.201 - DEFRETURNTYPE

 Message        The type of the function <name> defaults to "int".

 Description    A function definition did not include a type
                specifier for the function's return value.  It will
                default to int.  This might not be what you intend.

 User Action    It is a good programming practice to give all
                function definitions explicit return types.

 41.202 - DESIGBADARR

 Message        <Context> , a struct/union designator cannot be used
                with an object of array type.

 Description    An initialization designator must match the type of
                the object being initialized.  In this
                initialization, the current object is an array so a
                struct/union designator is not allowed.

 User Action    Correct the initialization.

 41.203 - DESIGBADCOMP

 Message        <Context> , an array designator cannot be used with
                an object of struct or union type.

 Description    An initialization designator must match the type of
                the object being initialized.  In this
                initialization, the current object is a struct or
                union, so an array designator is not allowed.

 User Action    Correct the initialization.

 41.204 - DESIGBADIND

 Message        <Context> , the constant expression "<expression>" in
                an array element designator is not a positive
                integer.

 Description    An array-element designator must be an constant
                expression that yields a positive integer value.

 User Action    Correct the element designator.

 41.205 - DESIGBADIND1

 Message        <Context> , the array element designator
                "[<expression>]" specifies an element beyond the end
                of the array.

 Description    An array element designator must specify a valid
                array element.

 User Action    Correct the element designator.

 41.206 - DESIGNATIONNA

 Message        The use of a designation in an initializer list is
                not supported in this compilation mode.

 Description    Initializer lists that contain designations are a new
                feature in the C99 revision of the C standard.
                Compaq C will only support this extension in relaxed
                mode and strict c99 mode.

 User Action    Use a compilation mode that supports the use of
                designations.

 41.207 - DESIGNATORUSE

 Message        The use of a designation in an initializer list is a
                new feature in the C99 standard.

 Description    Initializer lists that contain designations are a new
                feature in the C99 revision of the C standard.  Other
                compilers may not support this feature.

 User Action    Be aware of this portablility issue.

 41.208 - DESIGNOMEMB

 Message        <Context> , the component designator "<name>" is not
                a member of the current structure or union object
                being initialized.

 Description    An initialization designator specifies a struct or
                union member that is not a member of the current
                struct or union object.

 User Action    Correct the initialization.

 41.209 - DESIGSCALAR

 Message        <Context> , a designator cannot be used with an
                object of scalar type.

 Description    An initialization designator can only be used on
                objects of array, structure, or union type.  In this
                initialization, the current object being initialized
                is a scalar type so a designator is not allowed.

 User Action    Correct the initialization.

 41.210 - DIFFEXMODEL

 Message        This redeclaration of "<name>" specifies a different
                extern model than a previous declaration of the
                variable at <location>.

 Description    Two declarations of the same variable use different
                extern models.  The extern model is specified by a
                #pragma extern_model directive that appears before
                the declaration in the source.  This redeclaration
                may cause unexpected behavior.

 User Action    All declarations of a variable should use the same
                extern model.

 41.211 - DIFFTYPEQUALS

 Message        <Context> the type of "<name>" has different type
                qualifiers than the previous declaration at
                <location>.  The resulting type will be the composite
                of the two types.

 Description    The C standard permits redeclaration and formation of
                a composite type only when the two types being
                considered are compatible, and types with different
                type qualifiers are not compatible.  Compaq C allows
                this redeclaration for consistency with some other C
                compilers, and will form a composite type with all of
                the type qualifiers from both declarations.  Be aware
                that these declarations may not be accepted by other
                C compilers.

 User Action    Modify the declarations so that they use identically
                qualified types.

 41.212 - DIRECTVNOCPP

 Message        "<Directive text>" is not recognized as a
                preprocessing directive in nopreprocessing mode, and
                is being ignored.

 Description    An invalid preprocessing directive was encountered in
                a compilation performed with the -nocpp option.  When
                using the -nocpp option, only a limited number of
                preprocessing directives, such as #pragma and #line,
                can appear in the program.  The compiler will ignore
                the rest of the line.

 User Action    Either remove the directive or compile without the
                -nocpp option.

 41.213 - DISREDECL

 Message        <Context> the type of the external "<name>" is not
                compatible with the type of a declaration of "<name>"
                in another name scope at <location>.

 Description    The same external identifier has been declared in
                different scopes with incompatible types.  This might
                not have been what you intended.

 User Action    Change all declarations of the same external
                identifier to use the same type.

 41.214 - DOLLARID

 Message        Extension:  A '$' was encountered in an identifier.

 Description    Accepting a "$" character in an identifier is an
                extension of Compaq C/C++.  The program might not
                compile with other C/C++ compilers.

 User Action    Be aware of this if you wish to port the program.

 41.215 - DUPCASE

 Message        The switch statement containing this case label
                already has a case label for "<number>".

 Description    A switch statement contains more than one case label
                for the same case value.

 User Action    Remove the duplicate case label.

 41.216 - DUPDEFAULT

 Message        The switch statement containing this default label
                already has a default label.

 Description    A switch statement can contain only one default
                label.

 User Action    Remove the duplicate default label.

 41.217 - DUPENUM

 Message        <Context> the enumerator "<name>" is not unique.

 Description    An enumerator constant is declared more than once
                with the same value.  While this is accepted by
                Compaq C, it is not allowed by the C standard.

 User Action    Either use a different enumerator name or remove the
                previous declaration of the name.

 41.218 - DUPEXTERN

 Message        The declaration of "<name1>" will map to the same
                external name as the declaration of "<name2>" at
                <where>.

 Description    The compiler has detected a case where two different
                names in a program will map to the same external name
                in the output object file.  This can cause
                unpredictable results at runtime.  This will most
                often happen when the /NAMES=UPPERCASE or
                /NAMES=LOWERCASE qualifier causes two names with
                different case spellings to map to the same external
                name.

 User Action    Either use the /NAMES=AS_IS qualifier, or modify one
                of the names.

 41.219 - DUPLABEL

 Message        The label "<name>" is already defined in this
                procedure at <location>.

 Description    A label has already been defined.  Each function can
                define each label only once.

 User Action    Remove the duplicate label definition.

 41.220 - DUPLINK

 Message        Duplicate linkage pragmas for linkage name "<linkage
                name>".

 Description    The same linkage specifier has been defined in more
                than one #pragma linkage directive.

 User Action    Declare each linkage only once.

 41.221 - DUPLPRAGASS

 Message        #pragma assert directive specified for the function
                name <name> while different #pragma assert was
                specified for its type.

 Description    Duplicate assertion can't be specified for a
                function.  Check whether #pragma assert was
                mistakenly specified for the same function more than
                once, or function's type is declared in a typedef
                which in turn has its own #pragma assert directive.

 User Action    Either remove duplicate #pragma assert directive, or
                change assertions, or fix spelling of the function
                name or typedef.

 41.222 - DUPPARM

 Message        <Context> "<name>" is a duplicate parameter name.

 Description    The parameter identifier list of an old-style
                function definition uses the same identifier more
                than once.

 User Action    Each identifier in the parameter list must be unique.
                Compaq also recommends that old-style function
                definitions be replaced by prototype-format
                definitions.

 41.223 - DUPSTATIC

 Message        There is a redundant use of the keyword "static" in
                this array declaration.

 Description    In C99 the keyword "static" may appear at most once
                in the outermost array-bounds specifier of a function
                parameter in a function prototype.

 User Action    Remove redundant occurrences(s) of "static" from the
                array declaration

 41.224 - DUPSTORCLS

 Message        <Context> the same storage class modifier occurs more
                than once.

 Description    This declaration specifies the same storage class
                modifier more than once.

 User Action    Remove the extra uses of the storage class modifier.

 41.225 - DUPTYPEDEF

 Message        <Context> "<name>" has a duplicate typedef at
                <where>.  This might not be portable.

 Description    The same typedef has been declared to the same type
                more than once.  Standard C does not allow this and
                other compilers might not accept it.

 User Action    Remove the redundant declaration.

 41.226 - DUPTYPESPEC

 Message        <Context> the same type specifier occurs more than
                once.

 Description    The same type specifier appears more than once in the
                same declaration.  The redundant specifier will be
                ignored.

 User Action    Remove the duplicate type specifier.

 41.227 - DUPTYPQUAL

 Message        <Context> there is a redundant use of type qualifier
                "<const or volatile>".

 Description    The same type qualifier appears more than once in a
                type specifier.  This violates the C89 standard.
                Other compilers may not accept this program.  Note
                that C99 will allow redundant qualifiers.

 User Action    Remove the redundant type qualifier.

 41.228 - ELIFIGNORED

 Message        Out of place #elif directive ignored.

 Description    An #elif preprocessing directive was encountered
                outside of an #if/#endif body.  The directive will be
                ignored.

 User Action    Remove the directive.

 41.229 - ELLIPSEARG

 Message        Standard C does not permit the use of an ellipsis as
                an only argument.

 Description    Standard C requires at least one formal parameter be
                declared before the ellipses.  This declaration might
                not be portable to other C compilers.

 User Action    Recode the function declaration to contain at least
                one formal parameter.

 41.230 - ELLIPSEPARM

 Message        <Context> a parameter with type "<type>" matches an
                ellipsis in previous declaration at <location>.

 Description    A function that has been previously declared as
                taking variable arguments is now redeclared as using
                a different number of formal parameters before the
                start of the variable argument list.  This
                redeclaration might not be portable to other C
                compilers.

 User Action    Recode the function declarations to match each other.

 41.231 - ELLIPSISEND

 Message        No tokens may follow ...  in a formal parameter list.

 Description    The ellipsis may only appear at the end of a formal
                parameter list.  Everything after that is being
                ignored.

 User Action    Remove the unexpected token.

 41.232 - ELSEIGNORED

 Message        Out of place #else directive ignored.

 Description    An #else preprocessing directive was encountered
                outside of an #if/#endif body.  The directive will be
                ignored.

 User Action    Remove the directive.

 41.233 - EMBEDCOMMENT

 Message        A comment is neither preceded nor followed by white
                space.

 Description    A comment is neither preceded nor followed by white
                space.  In certain modes the compiler will paste the
                tokens before and after the comment together to form
                a single token.  This behavior is not valid in
                standard C.  Writing programs that rely on this
                behavior might prevent the program from being
                compiled on other platforms.

 User Action    Add white space before or after the comment, or use
                the ## operator to paste tokens together.

 41.234 - EMPTYCHARCONST

 Message        Empty character constant.

 Description    In some modes the Compaq C/C++ compiler will allow a
                null character constant.  The compiler will give this
                constant a value of zero.  Accepting an empty
                character constant is a language extension.  Empty
                character constants are not valid in standard C.
                Writing programs that rely on this behavior might
                prevent the program from being compiled on other
                platforms.

 User Action    Replace the empty character constant with '\0'.

 41.235 - EMPTYFILE

 Message        Source file does not contain any declarations.

 Description    This source file contains no declarations.  This
                might not have been what you intended.  For example,
                perhaps a necessary macro was not defined.

 User Action    Every source program should contain at least one
                declaration.

 41.236 - EMPTYINIT

 Message        An initializer list without an expression is not
                valid.  The compiler will replace the empty
                expression with the constant 0.

 Description    The C standard requires that an initializer list
                contain an expression.  The compiler has encountered
                one without an expression.  The compiler will treat
                the empty list ({}) as if it contained a single zero
                ({0}).  This is for compatibility with some other C
                compilers.  Be aware that this syntax may not be
                accepted by other C compilers.

 User Action    Supply an expression to the initializer.

 41.237 - EMPTYOBJ

 Message        Empty object file due to errors.

 Description    An earlier condition will cause an empty object
                module to be created.

 User Action    Correct the condition that was reported earlier.

 41.238 - EMPTYSTRUCT

 Message        Allowing struct/union type with no members is a
                language extension.

 Description    The C standard requires that a struct/union type have
                at least one member.  The Compaq C compiler will
                accept this for compatibility with older compilers.
                The struct/union type will be treated as if it were
                declared { :  0; }

 User Action    Provide at least one member for the struct/union.

 41.239 - ENUM16BIT

 Message        <Context> the enumeration constant <name> is out of
                the range -32768 to 32767.  This might not be
                portable.

 Description    An enum constant is larger than can be represented in
                16 bits.  This would not be portable to a system with
                an int size of 16 bits.

 User Action    Be aware of this if you wish to port to a system with
                an int size of 16 bits.

 41.240 - ENUMCALC

 Message        <Context> the enum variable "<expression>" is used in
                an arithmetic operation.

 Description    An enumerated type variable was used in an arithmetic
                operation.  While this is valid in C, it might not
                have been what you intended.

 User Action    Verify the use of the enum variable.

 41.241 - ENUMINIT

 Message        <Context> the enumerator "<name>" is initialized to
                the nonintegral value "<expression>".

 Description    An enum declaration contains an enumeration constant
                initializer that does not have an integer type.  The
                initializer for an enumeration constant must be an
                integral constant expression.

 User Action    Correct the initializer.

 41.242 - ENUMRANGE

 Message        <Context> the enumeration constant "<name>" is out of
                range INT_MIN to INT_MAX and will be truncated.

 Description    An enumeration constant must be representable as an
                int type.  The specified value is outside the range
                of an int.  In modes where this is a warning, the
                compiler will use the low-order bits to form the int
                value.

 User Action    Use a valid constant value.

 41.243 - ENUMSANDINT

 Message        <Context> allowing an enumeration type and a signed
                int to be compatible may not be portable.

 Description    The standard states that enumeration types shall be
                compatible with an integer type.  Compaq C, along
                with most other C compilers, has chosen the signed
                int type to be compatible with enumeration types.
                Other compilers may chose another type such as
                unsigned int (the C standard even allows an
                implementation to choose different integer types
                depending on the values of the enumeration constants
                defined for the type).  Therefore this program may
                not be accepted by other C compilers.

 User Action    Insert a cast to make the types the same.

 41.244 - ENUMSNOTCOMPAT

 Message        <Context> allowing two different enumeration types to
                be compatible is a language extension.

 Description    The Compaq C compiler allows two objects of different
                enumeration types to be compatible.  The C standard
                specifies that enumeration types are distinct types.
                Therefore this program is not standard compliant and
                other C compilers may not accept it.

 User Action    Use the same enumeration type or cast one type to the
                other.

 41.245 - ENUMUSED

 Message        <Context> the enumerator name "<name>" has been used
                previously.

 Description    The specified enumerator name has been previously
                declared as something other than an enumerator.

 User Action    Either use a different enumerator name or remove the
                previous declaration of the name.

 41.246 - ENVIRSTKDIRTY

 Message        At the end of the compilation the pragma <name> stack
                was not empty.  This may indicate a coding error.

 Description    The program being compiled has saved the named pragma
                state more often than it has restored it.  Good
                coding practice calls for the pragma state to be
                restored some point after it has been saved.  This
                condition may indicate the accidental failure to
                restore the state.

 User Action    Make sure each pragma save has a corresponding pragma
                restore.

 41.247 - ERRORLIM

 Message        diagnostic message limit exceeded

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.248 - ERRORMESSAGE

 Message        #error<errormsg>

 Description    An #error directive was encountered.  This message
                will include the text that follows the directive in
                the source program.

 User Action    Remove the #error directive, or supply the proper
                macro definitions so that the compiler will skip the
                directive.

 41.249 - ESCOVERFL

 Message        Invalid escape sequence encountered.

 Description    An escape sequence in a character or string literal
                specifies a value outside the range of a character or
                wide character.

 User Action    Specify a valid escape sequence.

 41.250 - EXPANDEDDEFINED

 Message        Macro expansion includes the token "defined", which
                will be treated as an operator.  This might not be
                portable.

 Description    A macro expanded during the processing of a
                preprocessor #if directive included the token
                "defined".  The Compaq C/C++ compiler will treat this
                as the defined preprocessing operator.  Other
                compilers might treat this differently.

 User Action    Rewrite the macro not to use the "defined" operator.

 41.251 - EXPNOTRES

 Message        expression does not contribute to result

 Description    The compiler has detected a source expression that
                does not contribute to the result.  This may not be
                what you expected.

 User Action    Verify the expression is what you intend.

 41.252 - EXPRCVTINT

 Message        The expression "<expression>" has been converted to
                integer.

 Description    In certain modes, Compaq C will allow switch
                expressions or case constants to be non-integer
                types.  The expression or constant will be converted
                to int.  In one of these cases, this warning will be
                issued.

 User Action    Cast the switch expression to an integer type or use
                an integer case constant.

 41.253 - EXPRNOTINT

 Message        The expression "<expression>" has <type> type, which
                is not integral.

 Description    An expression that is required to have an integer
                type had a type that is not integral.  This is not
                valid.  An example of a situation where an integer is
                required is that in most modes Compaq C requires that
                the switch control expression have integer type.

 User Action    Modify or cast the expression so that it has integer
                type.

 41.254 - EXPRNOTUSED

 Message        <Context> the expression "<expr>" is never used.

 Description    The compiler has detected an expression that is not
                used, and might not have a side-effect.  This might
                not have been what you intended.

 User Action    If the expression has a desired side-effect, the
                message can be ignored.  Otherwise, you might want to
                consider removing the expression.

 41.255 - EXTENDTYPE

 Message        This platform specific type is a language extension.

 Description    The use of the types __int8, __int16, __int32,
                __int64, __f_float, __g_float, __s_float, __t_float
                might not be portable to other platforms or to other
                C compilers.

 User Action    Be aware of this portability concern.

 41.256 - EXTERNINIT

 Message        Compaq C allows the initialization of a variable with
                extern storage class.  This differs from the VAX C
                behavior.

 Description    VAX C does not allow a variable with extern storage
                class to be initialized.  Compaq C will allow this,
                even in vaxc mode.

 User Action    Be aware of this difference if you plan to compile
                the source with VAX C.

 41.257 - EXTERNPOP

 Message        This "restore" has underflowed the extern model's
                stack.  No corresponding "save" was found.

 Description    The extern_model stack, managed by the #pragma
                extern_model and #pragma environment directives,
                contains more restores than saves.  This could
                signify a coding or logic error in the program.

 User Action    Make sure each restore has a corresponding save.

 41.258 - EXTPREAFTER

 Message        This directive will not set the extern_prefix of
                "<name>" because there is a previous declaration of
                the identifer with external linkage at <where>.

 Description    When an identifier is specified in a #pragma
                extern_prefix, the declaration of that identifier
                must appear after the #pragma.

 User Action    Reorder the declaration and the #pragma so that the
                #pragma comes first.

 41.259 - EXTPREAGAIN

 Message        This directive overrides the extern_prefix for
                "<name>" specified by an earlier #pragma
                extern_prefix at <where>.

 Description    Two #pragma extern_prefix directives have specified
                different non-empty extern_prefixes for the same
                identifier.  In such cases the later directive will
                set the extern_prefix for the identifier.

 User Action    If it is necessary to respecify the extern_prefix for
                an identifier, first remove the prefix (by setting it
                to an empty string) and then specify the new prefix
                in a subsequent #pragma.

 41.260 - EXTPRENODECL

 Message        There is no identifier named "<name>" with external
                linkage declared in this compilation unit.

 Description    A #pragma extern_prefix directive specifies an extern
                prefix for an identifier that is not declared with
                external linkage in the compilation unit.  This may
                not have been what you intented.

 User Action    Remove the identifier from the #pragma extern_prefix,
                or declare it with external linkage, or set the
                prefix for this identifier to an empty string.

 41.261 - EXTRABRACES

 Message        <Context> is enclosed within too many pairs of
                braces.

 Description    An initializer contains too many open braces for the
                object being initialized.

 User Action    Reduce the number of braces.

 41.262 - EXTRAMODULE

 Message        Redundant "#pragma module" or "#module" directive
                ignored.

 Description    A compilation unit can contain only one #pragma
                module or #module directive.  All subsequent
                directives will be ignored.

 User Action    Remove the extra directives.

 41.263 - EXTRAPRAGARGS

 Message        Extra pragma arguments to #pragma <pragma> were
                found.  Pragma is ignored.

 Description    Unexpected arguments were found at the end of a
                #pragma directive.  The directive will be ignored.

 User Action    Remove the extra arguments.

 41.264 - EXTRASEMI

 Message        Extraneous semicolon.

 Description    An extra semicolon was found at the end of a
                declaration.  It will be ignored.

 User Action    Remove the extra semicolon.

 41.265 - FALLOFFEND

 Message        The last statement in non-void function "<name>" is
                not a return statement.

 Description    A function that returns a value does not end with a
                return statement.  If function execution reaches the
                end of the function, the implied return statement
                that executes will return an undefined value.  This
                might not have been what you intended.

 User Action    End the function with a return statement that
                specifies a return value.

 41.266 - FBFILENOTFOUND

 Message        Feedback file not found:  <text>

 Description    The specified feedback file could not be found by the
                compiler.

 User Action    Specify the correct file name.

 41.267 - FILECLOSE

 Message        An error occurred while attempting to close a source
                file:  <problem>.

 Description    An unexpected error occurred while closing a source
                file.  The message text will contain additional
                information about the failure.

 User Action    Correct the condition that caused the failure.

 41.268 - FILENOTFOUND

 Message        File not found:  <text>

 Description    The specified file could not be found by the
                compiler.

 User Action    Specify the correct file name.

 41.269 - FILEOPEN

 Message        An error occurred while attempting to open the source
                file:  <problem>.

 Description    An unexpected error occurred while opening a source
                file.  The message text will contain additional
                information about the failure.

 User Action    Correct the condition that caused the failure.

 41.270 - FILEREAD

 Message        An error occurred while attempting to read a source
                file:  <problem>.

 Description    An unexpected error occurred while reading a source
                file.  The message text will contain additional
                information about the failure.

 User Action    Correct the condition that caused the failure.

 41.271 - FILESCOPEVLA

 Message        <Context> the file-scope identifier "<name>" cannot
                be declared with a variably modified type.

 Description    Only ordinary identifiers with block scope and
                without storage class extern, or ordinary identifiers
                with function prototype scope can be declared with a
                variably modified type.

 User Action    Correct the declaration.

 41.272 - FINBRANCH

 Message        A goto to the label "<label>" branches into a finally
                handler.

 Description    A goto statement tried to transfer into a finally
                handler.  This is illegal.

 User Action    Modify the goto or move the label outside the
                handler.

 41.273 - FLOATCONSQUAL

 Message        The <float_const_qual> is not valid in strict ANSI
                mode and will be ignored.

 Description    The -float_const option cannot be used in strict ANSI
                mode.  The option will be ignored.

 User Action    Either remove the -float_const option or use a
                different mode.

 41.274 - FLOATCONST

 Message        Ill-formed floating constant.

 Description    An invalid floating constant was encountered.

 User Action    Correct the floating constant.

 41.275 - FLOATERR

 Message        <Context> a floating point error occurs in evaluating
                the expression "<expression>".

 Description    A floating-point error occurred while evaluating a
                constant expression.  This is often caused by an
                invalid floating-point number.  The value of the
                expression is undefined.

 User Action    Correct the floating-point constant expression.

 41.276 - FLOATOVERFL

 Message        <Context> floating-point overflow occurs in
                evaluating the expression "<expression>".

 Description    A floating-point overflow occurred while evaluating a
                constant expression.  The value of the expression is
                undefined.

 User Action    Correct the floating-point constant expression.

 41.277 - FLOATTOINT

 Message        <Context> "<expr>" is being converted from <type>
                type to int type.

 Description    The C language requires that this expression be of
                integer type.  In most cases the compiler will emit
                an error for this case.  In VAX C mode, the compiler
                emits this warning and converts the expression to int
                type.  This matches the behavior of VAX C.

 User Action    If the VAX C behavior is what you intended, cast the
                expression to int to silence the diagnostic.
                Otherwise, recode the expression to reflect your
                intent.

 41.278 - FMTNOTSTR

 Message        argument <number> of this function is not of type
                char * but corresponds to the format string specified
                by the #pragma assert directive at <location>.  The
                format func_attr will be ignored.

 Description    The format attribute causes the format string to be
                checked if it is a string constant.  The format
                parameter can't be a format string because it is not
                declared as a char * type.  The format attribute will
                be ignored.

 User Action    Either remove the format assertion from the
                directive, correct the position of the format
                argument in the assertion, or declare the format
                argument as a "char *" in the proper position in the
                function prototype.

 41.279 - FNAMETOOLONG

 Message        The file name "<name>" in this directive is too long.

 Description    A preprocessing directive has specified a file name
                that is too long for this platform.

 User Action    Supply a valid file name

 41.280 - FORMATATTR

 Message        <Context> the arguments to <function name> do not
                match the assertions of its format attribute.  The
                format argument or the argument preceeding the first
                argument to check is missing.

 Description    The format attribute of this function asserts that
                the format argument exists and will be checked if it
                is a string constant.  The first argument to check,
                if non-zero, identifies the argument corresponding to
                the ellipsis in the function declaration and asserts
                that the argument preceeding it exists.

 User Action    Modify either the function call or the format
                attribute so that they match.

 41.281 - FOUNDCR

 Message        A carriage-return character was encountered; it is
                being treated as white space.

 Description    The compiler encountered a carriage-return character
                some place other than inside a character or string
                constant.  The compiler will treat the
                carriage-return as white space.

 User Action    The source might have been created by some
                non-standard means.  If possible, replace all
                carriage-return characters outside of character or
                string constants with white space.

 41.282 - FUNCELEMENT

 Message        <Context> the element type of an array type is a
                function type.

 Description    The compiler has encountered an array with an element
                type of function.  An array element must be an object
                type.

 User Action    Change the type of the array element.

 41.283 - FUNCIDLIS

 Message        <Context> the identifier "<id>" is not the name of a
                type.  All parameter information in this declaration
                will be ignored.

 Description    The declaration is most likely a malformed
                prototype-style function declaration.  In a
                prototype-style declaration, each parameter must have
                a type.  The identifier named in the message might be
                intended to be the (optional) name of a formal
                parameter and the type specification was mistakenly
                omitted, or it might be intended to be the name of a
                type but no typedef declaration for it is visible.
                Alternatively, the declaration might be intended to
                correspond to an old-style function definition, and
                mistakenly contains a formal parameter name in the
                declaration.  Old-style function definitions list the
                names of formal parameters (without types) inside the
                parentheses, but old-style function declarations
                contain nothing inside the parentheses.

 User Action    Correct the declaration.

 41.284 - FUNCINIT

 Message        The declaration of the function "<name>" includes an
                initializer.

 Description    A function declaration cannot contain an initializer.

 User Action    Remove the initializer from the declaration.

 41.285 - FUNCMEM

 Message        The member <name> has a function type.

 Description    A struct or union member is declared with function
                type.  This is not valid.

 User Action    Correct the member declaration.

 41.286 - FUNCMIXPTR

 Message        <Context> function types differ because this
                declaration specifies "<type1>" and a previous
                declaration specifies "<type2>".

 Description    A function redeclaration differs from an earlier
                declaration of the same function because the pointer
                size of one of the arguments or the return result is
                different.

 User Action    Use the same pointer size for all declarations of the
                function.

 41.287 - FUNCNOTDEF

 Message        The function "<name>" has non-extern storage class,
                occurs in a context that requires its definition, and
                has no definition.  The storage class has been
                changed to extern.

 Description    In certain modes, the compiler will allow a static
                function to be declared within the scope of another
                function.  If this function is referenced, then it
                must also be defined in the compilation unit.  If the
                function is not defined, this message will be output,
                and the earlier static declaration will be changed to
                extern.

 User Action    Define the static function with compilation unit.

 41.288 - FUNCNOTFUNC

 Message        In this function definition, "<name>" has <type> type
                instead of a function type.

 Description    A function definition does not have a function type.
                This can occur if the definition did not contain an
                open/close parenthesis pair.

 User Action    Change the definition to specify a function type.

 41.289 - FUNCREDECL

 Message        <Context> function types differ because one has no
                argument information and the other has an ellipsis.

 Description    Two function types, used in an operation or a
                redeclaration of a function, are different because
                one uses ellipses and the other does not.  Older
                compilers will accept this, but it is not valid
                standard C.

 User Action    If used in an operation, a cast should be inserted.
                If used in a redeclaration, the redeclaration should
                be removed or modified.

 41.290 - FUNCSTORCLS

 Message        <Context> a function has an explicit storage class
                other than "static" or "extern".

 Description    This declaration specifies a storage class that is
                not valid for a function.  If an explicit storage
                class is used in a function declaration, it must be
                either static or extern.

 User Action    Either remove the storage class specifier, or use one
                of the valid storage classes.

 41.291 - FUNCSTORMOD

 Message        <Context> a function cannot have this storage class
                modifier.  Modifier ignored.

 Description    A function cannot be declared with this storage class
                modifier.  The only valid storage class modifier for
                a function declaration is __inline.  The modifier is
                ignored by the compiler.

 User Action    Remove the storage class modifier from the function
                declaration.

 41.292 - FUNCSTRCLS

 Message        The block-level declaration of the function "<name>"
                specifies an explicit storage class other than
                extern.

 Description    A block-level declaration of a function has specified
                an explicit storage class other than extern.  Compaq
                C will change the storage class to extern.

 User Action    Either remove the storage-class specifier, or change
                it to extern.

 41.293 - FUTUREKEYWD2

 Message        "inline" is a keyword in the C99 revision of the C
                standard.  Using it as an identifier will prevent
                your program from conforming to that standard.

 Description    The token inline has been selected as a keyword in
                the C99 release of the C standard.  Because the
                program uses it as an identifier, the program will
                not conform to that standard.

 User Action    Change the name of the identifier.

 41.294 - FUTUREKEYWORD

 Message        "restrict" is a keyword in the C99 revision of the C
                standard.  Using it as an identifier will prevent
                your program from conforming to that standard.

 Description    The token restrict has been selected as a keyword in
                the C99 release of the C standard.  Because the
                program uses it as an identifier, the program will
                not conform to that standard.

 User Action    Change the name of the identifier.

 41.295 - GBLREFINIT

 Message        The declaration of "<name>" specifies the globalref
                storage class and includes an initializer.

 Description    A declaration with storage class globalref cannot
                include an initializer.

 User Action    Either remove the initializer or use a storage class
                that will allow an initializer.

 41.296 - GCCINLINE

 Message        The inline and __inline keywords will be interpreted
                with GCC style semantics.  To get C99 semantics,
                please specify -accept nogccinline.

 Description    The C99 standard has a slightly different
                interpretation of the keyword inline than in GCC.
                The GCC __inline keyword also differs from the COMPAQ
                C __inline keyword.

 User Action    Use the command line specifier -accept nogccinline.

 41.297 - GEMARGSIZE

 Message        <Context> the size of "<expression>" exceeds the
                implementation's limit of 2147483647 bytes on the
                size of a function argument.

 Description    The size of a function argument exceeds the Compaq C
                implementation limit.

 User Action    Either reduce the size of the argument or consider
                passing it by reference.

 41.298 - GLOBALEXT

 Message        A storage class of globaldef, globalref, or
                globalvalue is a language extension.

 Description    These storage classes are language extensions of
                Compaq C.  Other C compilers might not successfully
                compile a program that uses the extension.

 User Action    These storage classes can be recoded using the more
                portable #pragma extern model.  <code_example>
                globaldef int var1; globalref int var2; globalvalue
                int var3; <endcode_example> Can be written as:
                <code_example> #pragma extern_model save #pragma
                extern_model strict_refdef int var1; extern int var2;
                #pragma extern_model globalvalue extern int var3;
                #pragma extern_model restore <endcode_example> For
                more information, consult the #pragma extern_model
                documentation.

 41.299 - GOTSZOVFL

 Message        GOT table overflow for module <text>

 Description    The object file required for this module is too
                complex.

 User Action    Break the source program into several pieces so the
                individual objects will be simpler.

 41.300 - HEXOCTSIGN

 Message        In VAX C mode, the compiler will give this constant a
                signed type for compatibility with VAX C.  This
                differs from the behavior specified in the C
                standard, which would give this constant an unsigned
                type.

 Description    The C standard specifies that an octal or hexadecimal
                integer constant has an unsigned type when its value
                cannot be represented in a signed integer type, but
                can be represented in the corresponding unsigned
                integer type.  Some older compilers, such as VAX C,
                will treat this constant as having a signed type.  In
                VAX C mode, the compiler matches the behavior of VAX
                C.  In other modes the compiler matches the behavior
                specified in the standard.

 User Action    Be aware that this difference may cause porting
                problems if this program is compiled in a mode other
                than VAX C mode, or with a compiler that does not
                support this old behavior.

 41.301 - HEXOCTUNSIGN

 Message        The Compaq C compiler conforms to the C standard and
                will give this constant an unsigned type.  Some older
                compilers may give this constant a signed type.

 Description    The C standard specifies that an octal or hexadecimal
                integer constant has an unsigned type when its value
                cannot be represented in a signed integer type, but
                can be represented in the corresponding unsigned
                integer type.  Some older compilers will treat this
                constant as having a signed type.

 User Action    Be aware of this difference if you plan to port this
                source to an older compiler.

 41.302 - IDEXPECTED

 Message        Identifier expected but not found.

 Description    The compiler was expecting an identifier, but one was
                not found.

 User Action    Correct the program syntax.

 41.303 - IDINPARENSEXT

 Message        <Context> accepting an identifier enclosed in
                parentheses as the second argument to va_start is a
                language extension.

 Description    The C standard states that the second argument to
                va_start must be an identifier.  For compatibility
                with other C compilers, Compaq C will accept an
                identifier enclosed in parentheses.  Be aware that
                this program does not conform to the standard and may
                be rejected by other compilers.

 User Action    Remove the parentheses.

 41.304 - IDPACKPOPPRAG

 Message        The identifier <name> from the pragma pack pop
                directive was not found on the top of the pragma pack
                stack.

 Description    The identifier specified in the #pragma pack (pop,
                <identifier>) directive was not found on the top of
                the pragma pack stack.  A previous #pragma pack pop
                or #pragma member_alignment restore may have already
                popped this identifier off the stack, the identifier
                may not have been previously pushed onto the stack,
                or extra elements are pushed on the stack on the top
                of element with the identifier, or the identifer may
                be spelled incorrectly.

 User Action    Check the spelling of the identifier.  Verify that
                the identifier was previously pushed onto the pack
                stack and not popped off by another #pragma pack pop
                or #pragma member_alignment restore, and all elements
                pushed on the top of the identifier are popped.
                Correct the directive(s).

 41.305 - IEEEASSUMED

 Message        Use of /ROUNDING_MODE qualifier implies /FLOAT=IEEE.
                Compilation will be performed as if /FLOAT=IEEE were
                specified on the command line.

 Description    This compilation has specified an IEEE floating-point
                rounding mode without specifying /FLOAT=IEEE on the
                command line.  The compiler will set the
                floating-point type to IEEE floating.

 User Action    Specify /FLOAT=IEEE on the command line.

 41.306 - IEEEASSUMED1

 Message        Use of /IEEE_MODE qualifier implies /FLOAT=IEEE.
                Compilation will be performed as if /FLOAT=IEEE were
                specified on the command line.

 Description    This compilation has specified an IEEE floating-point
                mode without specifying /FLOAT=IEEE on the command
                line.  The compiler will set the floating-point type
                to IEEE floating.

 User Action    Specify /FLOAT=IEEE on the command line.

 41.307 - IGNORECALLVAL

 Message        <Context> the value returned from the function
                "<expression>" is not used - if this is intended, it
                should be cast to "void".

 Description    A function that returns a value has been invoked, yet
                the value was not used.  This might not have been
                what you intended.

 User Action    Cast the function to void to suppress the message.

 41.308 - IGNOREEXTRA

 Message        Spurious token(s) ignored on preprocessor directive
                line.

 Description    A preprocessing directive was supplied more arguments
                than it expects.  The extra arguments will be
                ignored.

 User Action    Remove the extra arguments.

 41.309 - IGNORETAG

 Message        <Context> the tag "<name>" is redeclared, but will be
                ignored.

 Description    The "struct" or "union" before the tag used in this
                declaration does not match that in the declaration of
                the tag.  The "struct" or "union" at the earlier
                declaration of the tag will be used in this
                declaration.

 User Action    Either change the current declaration to match the
                declaration of the tag, or create a new tag
                containing the different type.

 41.310 - IGNORETOKENS

 Message        # not in column 1 is ignored, skipping to end of
                line.

 Description    In K & R mode, white space is not allowed before a
                preprocessing directive.  The compiler will ignore
                this source line.

 User Action    Either remove the white space or compile in a mode
                other than K & R.

 41.311 - IGNORSYSREG

 Message        Ignoring system register specified in routine's
                linkage.

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.312 - IMAGINARYNA

 Message        The _Imaginary keyword is not supported by Compaq C.
                It will be treated as an identifier in this
                compilation.

 Description    Support for the _Imaginary keyword is an optional
                extension to the C standard.  Compaq C does not
                support this extension.  All occurrences of
                _Imaginary will be treated as an identifier.

 User Action    Do not use the _Imaginary type.

 41.313 - IMPFNCFALLOFF

 Message        The last statement in non-void function "<name>" is
                not a return statement.

 Description    This message indicates that a function with an
                implicit return type of it does not end with a return
                statement.  If function execution reaches the end of
                the function, the implied return statement that
                executes will return an undefined value.  This might
                not have been what you intended.

 User Action    Consider declaring the function to be a void
                function.  If it is supposed to return a value, add a
                return statement with the value the function is to
                return.

 41.314 - IMPFNCMSSNGRET

 Message        Non-void function "<name>" with implicit return type
                int does not contain a return statement.

 Description    This message indicates that a function with an
                implicit return type of int does not contain a return
                statement.  This message is not issued for functions
                with an explicit return type.  See message
                MISSINGRETURN.

 User Action    Consider declaring the function to be a void
                function.  If it is supposed to return a value, add a
                return statement with the value the function is to
                return.

 41.315 - IMPLICITFUNC

 Message        <Context> the identifier "<name>" is implicitly
                declared as a function.

 Description    A expression contained a reference to a function that
                has not been declared.

 User Action    Declare the function before it is referenced.

 41.316 - INCARGTYP

 Message        Type of actual argument inconsistent with formal
                parameter declaration in <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.317 - INCARRAYPARM

 Message        <Context> using array syntax to declare a parameter
                that is a pointer to an incomplete array type may not
                be portable.

 Description    Although this array parameter declaration conforms to
                the C standard (since it is equivalent to a pointer
                to the inner array), other C compilers may not accept
                it.

 User Action    Be aware of this difference if you plan to port this
                source to another compiler.

 41.318 - INCARRAYPARM1

 Message        <Context> allowing an array parameter that has more
                than two unspecified element counts is a language
                extension.

 Description    Because this parameter declaration will cause an
                array of incomplete types to be created, it does not
                conform to the C standard.  Although some other C
                compilers will accept this declaration, many
                compilers will reject it.

 User Action    Be aware of this difference if you plan to port this
                source to another compiler.

 41.319 - INCLUDENOPEA

 Message        A non-default pointer size or member alignment is
                specified, and the header files in <directory> are
                not protected.  This might yield unpredictable
                results.  The protect_headers_setup script can help.
                See the protect_headers_setup(8) man page for
                details.

 Description    Using a non-default pointer size or member alignment
                can cause unpredictable results for system header
                files that are not protected and that rely on the
                default pointer size or alignment.

 User Action    Examine the man page referenced in the message for
                more information.

 41.320 - INCLUDEOPEN

 Message        An error occurred while attempting to open the
                include file <name>:  <problem>.

 Description    An unexpected error occurred during the opening of an
                include file.  The message text will contain
                additional information about the failure.

 User Action    Correct the condition that caused the failure.

 41.321 - INCLUDEPROEPI

 Message        Cannot include files in a prologue or epilogue file.

 Description    It is not possible for a prologue or epilogue file to
                perform an #include directive.  This might lead to
                nested inclusion.

 User Action    Remove the #include directive from the
                prologue/epilogue file.

 41.322 - INCOMPARRY

 Message        <Context> the member <name> has incomplete array
                type.  This is not strictly conformant with the C
                standard and might not be portable.

 Description    The compiler has detected an array without a bounds
                specifier to be part of a struct or union type, and
                not the final member of that type.  Other C compilers
                might not successfully compile a program that uses
                this extension.

 User Action    Specify the bounds if possible.

 41.323 - INCOMPARRY1

 Message        <Context> the last member of a struct or union,
                <name>, has incomplete array type.  This is not
                strictly conformant with the C89 standard and might
                not be portable.

 Description    Compaq C will allow an array without a bounds
                specifier to be part of a struct or union type.
                While this extension is allowed by the C99 standard,
                other C compilers might not successfully compile a
                program that uses this extension.

 User Action    Specify the bounds if possible.

 41.324 - INCOMPCALL

 Message        <Context> the return type of "<expression>" is
                incomplete.

 Description    A function with an incomplete return type other than
                void cannot be invoked.

 User Action    Complete the function return type before the function
                is invoked.

 41.325 - INCOMPDEREF

 Message        <Context> "<expression>" is a pointer to an
                incomplete struct or union and should not be used as
                the left operand of a member dereference.

 Description    In certain modes, Compaq C will allow the struct or
                union specifier of a member dereference operator (->)
                to specify a struct or union that does not contain
                the element specified by the right operand.  While
                this is considered poor programming practice, it was
                common with older C compilers.  In cases where the
                left operand is a pointer to an incomplete type, the
                practice is considered even worse.  While Compaq C
                will accept the construct in certain modes, the code
                should be modified.  Further, this program does not
                conform to the C standard and might not be accepted
                by other C compilers.

 User Action    Be aware of this if you wish to port the program.

 41.326 - INCOMPELINIT

 Message        <Context> , an array's element type is incomplete,
                which precludes its initialization.

 Description    In order to initialize an array, the array element
                type must not be incomplete.

 User Action    Either remove the initializer or complete the array
                element type before this point in the program.

 41.327 - INCOMPELMNT

 Message        <Context> the element type of an array type is
                incomplete.

 Description    The element type of an array type is incomplete at
                the point in the program where the array is declared.
                While Compaq C will allow this if the element type is
                completed later, other compilers might require the
                type to be complete at this point in the program.

 User Action    Either complete the type before the array
                declaration, or be aware of this if you wish to port
                the program.

 41.328 - INCOMPMEM

 Message        The member "<name>" has an incomplete type.

 Description    A struct or union member must not have an incomplete
                type.  An exception is that Compaq C will accept a
                member that is an array with unspecified bounds,
                although warnings are often generated for this case.

 User Action    Complete the type before it is used in as a member of
                a struct or union.

 41.329 - INCOMPNOLINK

 Message        In this declaration, "<name>" has no linkage and is
                of an incomplete type.

 Description    A declaration with no linkage cannot specify an
                incomplete type.  Incomplete types can only be used
                for identifiers with external or internal linkage.

 User Action    Either complete the type before the declaration or
                modify the declaration to specify an external or
                internal linkage.

 41.330 - INCOMPPARM

 Message        In the definition of the function "<function name>",
                the parameter "<parameter name>" has an incomplete
                type.

 Description    This function definition contains a parameter with an
                incomplete type other than an array whose bounds are
                not specified.  This is not valid.

 User Action    Complete the type before the function definition.

 41.331 - INCOMPRETURN

 Message        In the definition of the function "<name>", the
                return type is an incomplete type other than void.

 Description    A function definition cannot specify a return type
                that is an incomplete type except for the void type.

 User Action    Complete the type before the function definition.

 41.332 - INCOMPSTAT

 Message        The static declaration of "<name>" is a tentative
                definition and specifies an incomplete type.

 Description    This file scope static declaration declares an
                identifier with incomplete type.  This is not valid
                because a static declaration will allocate storage
                for the object, but the object's size is not known at
                this point in the compilation.

 User Action    Complete the type before the static declaration.

 41.333 - INCOMPTENT

 Message        The type of the tentatively-defined variable "<name>"
                is incomplete at the end of the compilation unit.

 Description    This file-scope declaration with no storage-class
                specifier declares an identifier with incomplete
                type.  The type must be completed before the end of
                the compilation unit.

 User Action    Complete the type.

 41.334 - INCOMPVALUE

 Message        <Context> "<expression>" has incomplete type, and so
                cannot be used as an rvalue.

 Description    It is not possible to get the value of an expression
                with incomplete type.

 User Action    Complete the type before its value is used.

 41.335 - INCOMPVOID

 Message        <Context> the element type of an array type is
                incomplete.  The void type cannot be completed.

 Description    The compiler has encountered an array with an element
                type of void.  An array element must be an object
                type.

 User Action    Change the type of the array element.

 41.336 - INCONSASSFUN

 Message        A function "<name>" appeared in more than one #pragma
                assert func_attrs specifying the same assertion.

 Description    A function can appear on more than one #pragma assert
                func_attrs as long as each #pragma specifies a
                different assertion about the function.  The
                assertion will be ignored.

 User Action    Either remove the #pragma assert directive, or remove
                the function name from the pragma, or correct its
                spelling.

 41.337 - INITCONFLICT

 Message        Overlapping static storage initializations detected
                at Psect <text> + <number>

 Description    The compiler back-end as detected a case where the
                same storage location has been initialized to more
                than one value.  This can occur when inter-file
                optimization has been enabled.

 User Action    Remove one of the initializers.

 41.338 - INITOVERLAP1

 Message        <Context> , this initializer list will provide a
                value for a subobject that was initialized by the
                earlier initializer "<init>".  The earlier
                initializer will be ignored.

 Description    This initializer list will provide a value for a
                subobject that has already been initialized.  While
                this is valid, it might not have been what was
                intended.

 User Action    Initialize each subobject only once.

 41.339 - INITVLA

 Message        A variable-length array declaration cannot contain an
                initializer.  The initializer will be ignored.

 Description    A variable-length array declaration cannot contain an
                initializer.

 User Action    Initialize the array using assignment statements
                after the declaration.

 41.340 - INLINEIG

 Message        An inline specifier may only be used to declare an
                identifier for a function.  The inline keyword will
                be ignored.

 Description    The inline, __inline or __forceinline keywords have
                been used on a non-function type.  Or a non-function
                type has been listed in a #pragma inline or #pragma
                forceinline directive

 User Action    Remove the keyword or remove the identifier from the
                pragma.

 41.341 - INLINESTOCLSMOD

 Message        The <__inline or __forceinline> storage class
                modifier is a language extension and might not be
                portable.

 Description    The __inline and __forceinline storage class
                modifiers are an extension of Compaq C.  Other C
                compilers might not successfully compile a program
                that uses the extension.

 User Action    Be aware of this extension if you wish to port the
                code.

 41.342 - INPTRTYPE

 Message        <Context> this argument to <function name> is of
                "<type name>" type and is not appropriate for the
                conversion specifier "<incorrect conversion>".  The
                value may overwrite other data or produce unexpected
                results.

 Description    The compiler has detected an input conversion
                specifier that does not match its corresponding
                argument.  The corresponding argument may not be a
                pointer or may point to data that is wider or
                narrower than that specified by the conversion
                specifier.  This might not have been what you
                intended.

 User Action    Modify either the argument or the conversion
                specifier so that they match.

 41.343 - INSUFALN

 Message        Alignment specified for extern model is insufficient
                for variable.  Extern model alignment updated.

 Description    The current extern model places all external objects
                in a section whose alignment is not sufficient for
                the alignment of an object being placed in that
                section.  The compiler will update the alignment of
                the section so that it is adequate for the object.

 User Action    Either increase the alignment of the section or move
                the object to another section.

 41.344 - INTBADLINKAGE

 Message        #pragma use_linkage was applied to the intrinsic
                function "<routine name>".  The function will be
                treated as an ordinary external function.

 Description    Trying to optimize a pointer argument passed to an
                intrinsic function, the compiler discovered that
                #pragma use_linkage had been applied to the function
                declaration.  The intrinsic function of this name
                that is understood by the compiler does not allow you
                specify a linkage.  Therefore the compiler must
                assume that you are supplying your own function
                definition, and treat this as a call to an external
                function with no special properties.

 User Action    If you want to call the intrinsic function, remove
                the #pragma use_linkage directive.  If you are
                supplying your own function definition, you may want
                to rename the function or add a #pragma function
                directive for it.

 41.345 - INTCONCASTSGN

 Message        <Context> casting of the constant "<constant>" to
                <type> type will cause a change in sign.

 Description    Either a negative constant value has been cast to an
                unsigned type, or a positive value has been cast to a
                signed type and will be treated as a negative number
                after the cast.

 User Action    Change the constant so that the sign will match the
                type of the cast.

 41.346 - INTCONCASTTRU

 Message        <Context> casting of the constant "<constant>" to
                <type> type will cause data loss.

 Description    A constant is cast to a type that is too small to
                hold the constant value.  Data will be lost in the
                conversion.

 User Action    Remove the cast, or use a smaller constant.

 41.347 - INTCONST

 Message        Ill-formed integer constant.

 Description    An invalid integer constant was encountered.

 User Action    Correct the integer constant.

 41.348 - INTCONSTSIGN

 Message        <Context> conversion of the constant "<constant>" to
                <type> type will cause a change in sign.

 Description    Either an unsigned type was assigned a negative
                constant value, or a signed type was assigned a
                positive contant value which will be evalated as a
                negative number after the assignment.  Note that this
                message is not output for assignments to 1-bit
                bitfields.  The message bitconstsign is generated in
                that case.

 User Action    If this is what you intended, cast the constant to
                the desired type.  You might also want to change the
                constant to the correct signed or unsigned value in
                order to avoid the optional message intconcastsgn,
                which reports sign changes caused by casts.

 41.349 - INTCONSTSIGNED

 Message        This integer constant value will be given the type
                long long int.  This is compatible with the C99
                standard.  Older versions of the compiler would have
                given this unsigned long int type.

 Description    With the introduction of the long long int type, the
                C99 standard changed the rules for how the type of
                certain integer constants are determined.  Unsuffixed
                decimal constants which are too large for long int,
                but could fit in an unsigned long int are given the
                type long long int in C99.  Prior to C99 these would
                be given unsigned long int type.

 User Action    Be aware of this difference.

 41.350 - INTCONSTTOOBIG

 Message        This integer constant is too large for the long long
                type.  It will be given the unsigned long long type.

 Description    The C99 standard specifies that a decimal constant
                must fit in a signed type.  This constant is too
                large for the long long int type.  For compatibility
                with older versions of the compiler, the constant
                will be given the unsigned long long type.

 User Action    Append a 'U' suffix to the constant.  This will force
                it to be unsigned.

 41.351 - INTCONSTTRUNC

 Message        <Context> conversion of the constant "<constant>" to
                <type> type will cause data loss.

 Description    A constant is converted to a type that is too small
                to hold the constant value.  Data will be lost in the
                conversion.

 User Action    If this is what you intended, cast the constant to
                the desired type.  You might also want to mask off
                the high-order bits before casting in order to avoid
                optional message intconcasttru, which reports data
                loss caused by casts.

 41.352 - INTCONSTUNSIGN

 Message        This integer constant value will be given the type
                unsigned long int.  This is compatible with the C89
                standard and older compilers.  The C99 standard
                requires this to be a signed long long int.

 Description    With the introduction of the long long int type, the
                C99 standard changed the rules for how the type of
                certain integer constants are determined.  Unsuffixed
                decimal constants which are too large for long int,
                but could fit in an unsigned long int are given the
                type long long int in C99.  Prior to C99 these would
                be given unsigned long int type.

 User Action    Be aware of this difference.

 41.353 - INTERNALPRAGMA

 Message        This is an internal pragma which should only be used
                by the compiler development team.  It should not
                appear in user programs as it may cause unexpected
                behavior.

 Description    This pragma exists only to allow the compiler
                developers to test certain functionality of the
                compiler.  Its use outside the development team is
                unsupported.

 User Action    Remove the pragma.

 41.354 - INTIMPLIED

 Message        In the declaration of "<name>", no type was
                specified.  Type defaulted to int.  This is a
                violation of the C99 standard.

 Description    The declaration contains a storage-class specifier,
                but no type was specified.  The compiler will assume
                a type of int.  Omitting the type specifier is not
                valid in C++ or in C99, and is often considered poor
                programming practice.

 User Action    Add a type specifier to the declaration.

 41.355 - INTOVERFL

 Message        <Context> integer overflow occurs in evaluating the
                expression "<expression>".

 Description    An integer overflow occurred while evaluating a
                constant expression.  The value of the expression is
                undefined.

 User Action    Correct the constant expression so that it does not
                overflow.

 41.356 - INTRINSICCALL

 Message        <Context> an apparent invocation of intrinsic
                function "<name>", <problem>.  It will be treated as
                an ordinary external call.

 Description    A function that could be handled internally by the
                compiler has been called in a manner that is
                inconsistent with expected usage.  In such a case,
                the compiler will generate a run-time call to the
                function.  This could result in performance loss.

 User Action    If the function is intended to refer to the runtime
                library routine, the appropriate header file should
                be included in the source to provide the full
                function prototype and allow certain types of
                argument conversions.  Alternatively, call arguments
                could be type cast as specified in the error message,
                or the function prototype could be added by hand.  If
                the function is not intended to refer to the runtime
                library routine, the intrinsic version can be
                disabled by means of the "#pragma function
                (function_name)" directive.

 41.357 - INTRINSICDECL

 Message        <Context> the declaration for intrinsic function
                "<name>" referenced at <location>, <problem>.  It
                will be treated as an ordinary external function.

 Description    A function that could be handled internally by the
                compiler has been declared with a prototype that does
                not agree with what the compiler expected to see, or
                has been declared at block scope instead of file
                scope.  The function might in fact be a
                similarly-named replacement for the expected
                function, or the prototype might be incorrect or
                misplaced.  In such cases, the function will not be
                handled internally, but will instead be called at run
                time in the usual manner.  This could result in a
                performance loss.

 User Action    If the function is intended to refer to the runtime
                library routine, the appropriate header file should
                be included in the source (note that it is not
                portable to include standard headers at other than
                file scope).  Alternatively, the prototype could be
                modified as specified in the error message.  If the
                function is intended to be a replacement for the
                runtime library routine, disable the intrinsic
                version by specifying "#pragma
                function(function_name)" in the source file.

 41.358 - INTRINSICDECLER

 Message        <Context> the declaration for the prototyped
                intrinsic function "<name>" is incorrect:  <problem>.

 Description    A function that could be handled internally by the
                compiler and requires a prototype, has been declared
                with a prototype that does not agree with what the
                compiler expected to see.  The function might be
                intended as a similarly-named replacement for the
                compiler-known function, or the prototype might be
                incorrect.  The source must be modified to specify
                the intended behavior.

 User Action    If the function is intended to refer to the
                compiler-known routine, the appropriate header file
                should be included in the source.  Alternatively, the
                prototype could be modified as specified in the error
                message.  If the function is intended to be a
                replacement for the compiler-known routine, disable
                the intrinsic version by specifying "#pragma
                function(function_name)" in the source file.

 41.359 - INTRINSICINT

 Message        <Context> the <place> type for intrinsic "<name>" is
                being changed from "size_t" to "int".

 Description    A function that is handled internally by the compiler
                expects an argument type or return type of "size_t",
                but the prototype for the function uses "int".  The
                compiler will use "int" in this case.

 User Action    Declare the function by including the appropriate
                header file.  Alternatively, provide a private
                declaration (or modify an existing private
                declaration) with "size_t" in the appropriate
                location(s), and with "size_t" defined as it is in
                the standard system header files.  If the function is
                not intended to refer to the runtime library routine,
                the intrinsic version can be disabled by means of the
                "#pragma function (function_name)" directive.

 41.360 - INTUNDFUN

 Message        There is no function declaration visible for the
                identifier "<name>" at the point of this #pragma
                <pragma type>.

 Description    An identifier specified in a #pragma intrinsic or
                #pragma function directive must refer to a function
                declaration visible at the point of the pragma.  The
                identifier will be ignored.

 User Action    Either remove the identifer from the pragma, correct
                its spelling, or reorder the source to ensure that a
                declaration of the identifier as a function is
                visible at the point of the pragma.

 41.361 - INVALIDARG

 Message        Invalid argument to <pragma> pragma.  Pragma is
                ignored.

 Description    An invalid argument has been specified for a pragma
                directive.  The compiler will ignore the directive.

 User Action    Correct the directive.

 41.362 - INVALIDSTR

 Message        The # operator produced an invalid string.

 Description    During the expansion of a macro, the # stringize
                operator produced a token that is not a valid string.
                The operand to the stringize operator must contain
                characters that form a valid string.

 User Action    Correct the operand to the stringize operator.

 41.363 - INVALTOKEN

 Message        Invalid token discarded.

 Description    An unexpected token was encountered by the compiler.
                The token has been ignored.  An example is the
                preprocessing operator "#" appearing outside a macro
                body (int #a;).

 User Action    Remove the unexpected token.

 41.364 - INVCPPINARGS

 Message        Possible directive "#<directive>" within a macro
                argument list.  The directive is treated as part of
                the argument list, and not as a preprocessing
                directive.

 Description    The compiler has encountered a directive as part of
                the argument list of a macro invocation.  This
                directive will be treated as part of the argument
                list, and not as a preprocessing directive.  The
                behavior might be different than other compilers.

 User Action    Rewrite the macro invocation so that it does not
                include the directive.

 41.365 - INVDUPENUM

 Message        <Context> the value of the enumerator "<name>"
                conflicts with a previous declaration.

 Description    The specified enumerator name has been previously
                declared with a different value.

 User Action    Either use a different enumerator name or remove the
                previous declaration of the name.

 41.366 - INVNOMEMPRAG

 Message        Invalid argument to nomember_alignment pragma.
                Pragma is ignored.

 Description    The compiler was unable to parse a #pragma
                nomember_alignment directive.  The directive will be
                ignored.

 User Action    Correct the directive.

 41.367 - INVPACKPRAG

 Message        Invalid pack pragma.  Pragma is ignored.

 Description    The compiler was unable to parse a #pragma pack
                directive.  The directive will be ignored.

 User Action    Correct the directive.

 41.368 - INVPPDIRPEA

 Message        The preprocessor directive <name> is not allowed in a
                prologue or epilogue file.  The directive is ignored.

 Description    It is not possible for a prologue or epilogue file to
                have this preprocessor directive in it.

 User Action    Remove the offending preprocessor directive from the
                prologue/epilogue file.

 41.369 - INVSTATIC1

 Message        <Context> the keyword "static" and/or type qualifiers
                may appear only in the outermost array-bounds
                specifier of a function parameter.  Keyword/qualifier
                ignored.

 Description    The keyword "static" or a type specifier appeared in
                an array-bound specifier that was either not part of
                the declarator for a function parameter or it was not
                the outermost array-bound specifier of a function
                parameter.

 User Action    Remove the keywords or confine them to use in the
                outermost array-bound specifier of a function
                parameter.

 41.370 - INVSTATIC3

 Message        The keyword "static" may not appear in an array-bound
                specifier for a declaration of an array of unknown
                size.  Keyword ignored.

 Description    The keyword "static" appeared in the declaration of
                an array whose size was not known, either because
                array has in incomplete type or because the array has
                a star bounds specifier.

 User Action    Remove the keyword.

 41.371 - INVSTATIC4

 Message        An expression specifying the bound is required when
                the keyword "static" is used in an array-bounds
                specifer.  Keyword ignored.

 Description    The keyword "static" appeared in an array-bounds
                specifier that did not have an expression describing
                the array bound.  The keyword tells the compiler that
                actual arguments passed to this parameter will always
                have at least as many elements as specified in the
                formal parameter.  It is inconsistent to specify the
                keyword without also supplying a value for the bound.

 User Action    Remove the keyword or supply a value for the bound.

 41.372 - INVSTATIC5

 Message        <Context> the static bound value differs from the
                static bound value in another declaration at
                <location>.  The smaller static bound value will be
                used.

 Description    In a previous declaration of a function one or more
                parameters with array type were declared with a
                different static bound value than in the current
                declaration.  This can occur if one of the sizes of
                the corresponding static arrays differ between the
                two declarations.

 User Action    Remove the keyword "static" from the declarations, or
                give all function declarations the same static bound
                value.

 41.373 - INVSTATIC6

 Message        <Context> neither the keyword "static" nor a type
                qualifier may be used in array-bounds for old-style
                function parameters.  Keyword/qualifiers ignored.

 Description    Use of the keyword "static" or a type specifier
                within the outermost array bound specifier of a
                formal parameter is a new feature in the C99
                statndard.  It cannot be used in old-style function
                definitions.

 User Action    Remove the keywords or convert the code to use
                prototype-style function declarations and
                definitions.

 41.374 - IVDEPNOFOR

 Message        This #pragma directive was not followed by a for
                statement.  The directive will be ignored.

 Description    The #pragma ivdep and #pragma unroll directives
                modify the for loop which follows them.  The compile
                has encoutered one of the directives without a
                following for loop.  The directive will be ignored.

 User Action    Remove the directive.

 41.375 - KEYCOMB

 Message        Illegal combination of keywords.

 Description    An invalid combination of Microsoft keywords was
                encountered during a declaration.  In most cases this
                is because the keywords contradict each other.  One
                example would be using the __fastcall and __stdcall
                modifiers in the same function declaration.  This
                message is only output when the compiler is in
                Microsoft mode.

 User Action    Remove one of the contradictory modifiers.

 41.376 - KNRFUNC

 Message        The function "<name>" is defined using the old style
                K&R syntax.  The C standard has marked this syntax as
                obsolescent, and it is not supported in C++.
                Consider using the standard C prototype syntax.

 Description    The function uses an old style function definition.
                Compaq recommends that old style function definitions
                be replaced by prototype-format definitions.

 User Action    Recode the function definition to use the recommended
                prototype-format definition.

 41.377 - LABELWOSTMT

 Message        Accepting a label without a following statement is a
                language extension.

 Description    The C standard states that a label must be followed
                by a statement.  For compatibility with other C
                compilers, Compaq C will accept a label without a
                statement.  Be aware that this program does not
                conform to the standard and may be rejected by other
                compilers.

 User Action    Add a semicolon after the label to create a null
                statement.

 41.378 - LCRXCOND

 Message        Common Data Dictionary description extraction
                condition.  <msg>.

 Description    Something went wrong while trying to get the CDD
                record description from the CDD.  The error message
                that follows gives more information about the nature
                of the problem.

 User Action    If necessary, correct the indicated condition in the
                CDD record description or with the user environment.

 41.379 - LDCOMPLEXNYI

 Message        <Context> the type long double _Complex is not fully
                supported on this platform.  The type is only
                accepted when the compilation specifies the option to
                make the long double type 64-bits in size.

 Description    On some platforms Compaq C does not support the long
                double _Complex type where the real and imaginary
                component are 128-bits in size.  As Compaq C requires
                that each component of a long double _Complex be the
                same size as a long double, this compilation must
                specify the option to treat long double as 64-bits.

 User Action    Either specify the correct compiler option or use the
                double _Complex type instead of the long double
                _Complex type.

 41.380 - LEXNESTPAR

 Message        Lexically nested parallel at scope <text> is not
                supported

 Description    Nested parallel directives are not supported.

 User Action    Remove the nested parallel directive.

 41.381 - LISTOPEN

 Message        An error occurred while attempting to open the
                listing file:  <reason>.

 Description    An unexpected error occurred during the creation of
                the listing file.  The message text will contain
                additional information about the failure.

 User Action    Correct the condition that caused the failure.

 41.382 - LOCALEXTINI

 Message        The block-level declaration of "<name>" includes an
                initializer and specifies storage class extern.

 Description    A block-level declaration with extern storage class
                cannot contain an initializer.

 User Action    Remove the initializer from the declaration or move
                the declaration to file scope.

 41.383 - LOGICALLINE

 Message        A logical source line longer than <number> characters
                was encountered.

 Description    The length of a source line has exceeded the maximum
                length supported by the Compaq C compiler.

 User Action    Reduce the size of the line.

 41.384 - LONGDEBUG

 Message        The identifier name exceeds <number> characters; name
                passed to the debugger will be truncated to
                "<truncated spelling>".

 Description    On some platforms, the name length supported by the
                compiler is greater than the length supported by the
                debugger.  In this case the compiler must truncate
                the name when it is output to the debugger symbol
                table for this compilation.

 User Action    Reduce the size of the name.

 41.385 - LONGDOUBLENY1

 Message        <Context> type long double has the same
                representation as type double on this platform and is
                treated as a synonym for type double in this
                compilation mode.

 Description    Compaq C does not support the long double type on
                this platform.  In this compilation mode, the
                compiler will treat the long double type as a synonym
                for the double type.

 User Action    Be aware of this.

 41.386 - LONGDOUBLENYI

 Message        <Context> type long double has the same
                representation as type double on this platform.

 Description    Although Compaq C will recognize the long double type
                as a different type than double in this compilation
                mode, on this platform they will both use the same
                representation.  Using long double will not provide
                any additional precision or range.

 User Action    Be aware of this.

 41.387 - LONGEXTERN

 Message        The external identifier name exceeds <number>
                characters; truncated to "<truncated spelling>".

 Description    The length of an identifier with external linkage
                exceeds the maximum allowed on this platform.  The
                name used in an output object file will be truncated
                to meet the platform restrictions.  Note that the
                debugger name will be unchanged.

 User Action    Reduce the size of the name.  On OpenVMS platforms
                the /NAMES=SHORTENED qualifier can also be used.
                When the qualifier is specified, the compiler will
                encode long external names instead of truncating
                them.

 41.388 - LONGFLOATEXT

 Message        <Context> long float as a synonym for double is a
                language extension.

 Description    Certain standard modes allow the use of the long
                float type as a synonym for double.  This is not
                allowed by the C standard.  This message indicates
                this use of long float as a potential portability
                problem.

 User Action    Change long float to double.

 41.389 - LONGLONGSUFX

 Message        The integer constant is of type "<type>", which is a
                new feature of C99 might not be portable.

 Description    The use of the suffix ULL or LL on an integer
                constant does not conform to the C89 standard and
                might not be accepted by other C compilers.

 User Action    Be aware of this if you wish to port the program.

 41.390 - LONGLONGTYPE

 Message        <Context> type "<type>" is a new feature in C99.

 Description    On some platforms, Compaq C will accept the
                [unsigned] long long type as a way to declare
                [unsigned] 64-bit integers.  The long long int type
                is a new feature of C99 and other compilers might not
                accept this declaration.

 User Action    Be aware of this portability concern.

 41.391 - LONGMODULEID

 Message        Identifier name "<name>" in a #pragma module or
                #module directive exceeds 31 characters.

 Description    A module name specified in the #pragma module or
                #module directive must be less than 32 characters.
                The compiler will truncate the name to the first 31
                characters specified.

 User Action    Shorten the module name.

 41.392 - LONGMODULESTR

 Message        Character-string constant <string> in a #pragma
                module or #module directive exceeds 31 characters.

 Description    An ident specified in the #pragma module or #module
                directive must be less than 32 characters.  The
                compiler will ignore the directive.

 User Action    Shorten the ident specifier.

 41.393 - LONGPREFIX

 Message        Prefix string too long.  Truncated to "<newprefix>".

 Description    The specified prefix to the #pragma extern_prefix
                directive is too large for this platform.  The prefix
                will be truncated.

 User Action    Reduce the size of the specified extern prefix.

 41.394 - LONGPSECT

 Message        Psect name is too long (maximum is 31 characters).

 Description    The psect name specified in a globaldef declaration
                was longer than 31 characters.  This exceeds the
                maximum allowed length.

 User Action    Either reduce the psect name to 31 characters or
                remove the psect specifier.

 41.395 - LVALUECAST

 Message        <Context> the result of the cast "<cast>" is used as
                an lvalue.

 Description    The result of a cast has been used as an lvalue.
                This is a language extension of Compaq C.  The
                program does not conform to the C standard, and might
                not be accepted by other compilers.

 User Action    Remove the cast.

 41.396 - MACROREDEF

 Message        The redefinition of the macro "<name>" conflicts with
                a current definition because <reason>.  The
                redefinition is now in effect.

 Description    A macro has been redefined with either different
                formal parameters and/or a different body than a
                previous definition of the macro.

 User Action    Either make all definitions of the same macro
                identical, or undefine the macro using the #undef
                preprocessing directive before it is redefined.

 41.397 - MACROREDEFIN

 Message        Macro redefined.

 Description    A #define preprocessing directive has redefined a
                macro whose previous definition contained an error or
                warning.  Normally, the compiler will issue a warning
                if a macro is redefined to something other than the
                previous definition.  However, if the previous
                definition caused a warning or error to be generated,
                this informational message is output instead.

 User Action    Do not redefine a macro without first undefining it.

 41.398 - MAINNOTINT

 Message        Strict standard C extension:  The declaration of the
                "main" function has a return type other than int.

 Description    Standard C requires that the "main" function be
                defined with a return type of int.  Compaq C will
                accept other return types, but the program does not
                conform to the C standard.  The status value returned
                to the environment may not be what you expect, and
                other C compilers may not accept the definition as
                written.

 User Action    Define the "main" function with a return type of int
                for maximal portability.

 41.399 - MAINPARM

 Message        Strict standard C extension:  The declaration of the
                "main" function has more than two parameters.

 Description    Standard C requires that the "main" function takes no
                more than two parameters.  Compaq C will accept more,
                but the program does not conform to the C standard.

 User Action    Modify the declaration if you want the program to be
                standard conformant.

 41.400 - MAINPROGEXT

 Message        MAIN_PROGRAM is a language extension.

 Description    The use of MAIN_PROGRAM to designate a function as
                the main program is a language extension of Compaq C.
                Other C compilers might not successfully compile a
                program that uses the extension.

 User Action    The main program should be declared by naming the
                function main.

 41.401 - MAYHIDELOSS

 Message        <Context> "<expression>" has a larger data size than
                "<target type>".  The use of a cast operator can
                suppress the message that this assignment might
                result in data loss.

 Description    In a cast of a pointer to one of the integer types,
                or a cast of one of the integer types to a pointer,
                or a cast of one pointer type to another, the size of
                the source is greater than the size of the type being
                cast to.  This cast could result in a loss of data if
                it is used as the source of an assignment.  This
                potential loss of data can be verified by removing
                the cast and seeing if the compiler emits a loss of
                data message on the assignment.

 User Action    If the cast cannot lose precision, it is safe to
                ignore this warning.

 41.402 - MAYLOSEDATA

 Message        <Context> "<expression>" has a larger data size than
                "<target type>".  Assignment can result in data loss.

 Description    In an assignment of a pointer to one of the integer
                types, or one of the integer types to a pointer, the
                size of the source is greater than the size of the
                destination.  The assignment can result in a loss of
                data.  This might not have been what you intended.

 User Action    If this was the intended operation, cast the source
                to the type of the destination before the assignment.

 41.403 - MAYLOSEDATA2

 Message        <Context> "<expression>" has a larger data size than
                "<target type>".  Assignment can result in data loss.

 Description    In an assignment of two pointers, the size of the
                source is greater than the size of the destination.
                The assignment can result in a loss of data.  This
                might not have been what you intended.

 User Action    If this was the intended operation, cast the source
                to the type of the destination before the assignment.

 41.404 - MECHMISMATCH

 Message        Argument passing mechanism does not match formal
                parameter mechanism for <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.405 - MEMBERVLA

 Message        <Context> the struct or union member "<name>" cannot
                be declared with a variably modified type.

 Description    Only ordinary identifiers with block scope and
                without storage class extern, or ordinary identifiers
                with function prototype scope can be declared with a
                variably modified type.

 User Action    Correct the declaration.

 41.406 - MISALGNDMEM

 Message        This member is at offset <offset>, which is not a
                multiple of the member's alignment of <align>.
                Consider padding before this member, rearranging the
                order of member declarations, or using #pragma
                member_alignment.

 Description    A member of a struct or union requires an alignment
                for efficient access but will be allocated at an
                offset that is not a multiple of that alignment.

 User Action    Use one of the suggestions made in the message.

 41.407 - MISALGNDSTRCT

 Message        This member requires <align1> alignment for efficient
                access, but is contained in a struct containing
                <align2> alignment.  Consider using #pragma
                nomember_alignment <align1>.

 Description    A member of a struct or union requires an alignment
                for efficient access that is more strict than the
                alignment of the enclosing struct or union.  Even
                though this member is correctly aligned within the
                struct or union, if the struct or union is enclosed
                within another type, the member in question might be
                placed at a position with incorrect alignment for its
                type.

 User Action    Use either the #pragma member_alignment directive or
                #pragma nomember_alignment directive with an argument
                equal to or greater than the alignment of the member.

 41.408 - MISDEFARG

 Message        Missing argument for "defined" operator.

 Description    The defined preprocessing operator was not supplied
                with an argument.  The operator expects an identifier
                optionally enclosed in parenthesis.  The value of the
                operator is undefined.

 User Action    Supply a valid argument to the preprocessing
                operator.

 41.409 - MISDEFPAR

 Message        Missing right parenthesis for "defined" operator.

 Description    The defined preprocessing operator began with a left
                parenthesis, but no matching right parenthesis was
                found.  The value of the operator is undefined.

 User Action    Add the right parenthesis after the preprocessing
                operator argument.

 41.410 - MISMATPARAM

 Message        <Context> parameter <number> has a different type
                than specified in an earlier declaration of this
                function.

 Description    A function has been redeclared with a parameter whose
                type is different than the type specified in a
                previous declaration of the function.  This generally
                leads to additional errors.

 User Action    Correct the function declarations so that the
                parameter information is the same in each
                declaration.

 41.411 - MISMATPRSRET

 Message        "<name>" has a non-void return type but its linkage
                "<name>" preserves the return register(s).  Standard
                linkage will be used.

 Description    The function or typedef's special linkage specifies
                that the register(s) used to return the function
                value are to be preserved.  This is invalid as the
                register can either be preserved, or hold the return
                value, but not both.

 User Action    Modify the #pragma linkage directive to either remove
                the register from the preserved list or to specify
                another register to hold the return value.

 41.412 - MISMATTHREAD

 Message        <Context> the __declspec(thread) storage class
                modifier of "<name>" is different from a previous
                declaration of "<name>" at <location>.

 Description    If an object is declared with thread-local storage,
                then all declarations of that object must declare it
                with thread-local storage.

 User Action    Either remove the invalid redeclaration or modify it
                to match the previous declaration.

 41.413 - MISPARAMCOUNT

 Message        <Context> the number of parameters differs from an
                earlier declaration of this function.

 Description    A function has been redeclared with a different
                number of parameters than a previous declaration of
                the function.  This message generally proceeds
                additional errors.

 User Action    Correct the function declarations so that the
                parameter information is the same in each
                declaration.

 41.414 - MISSINGCOMMA

 Message        This parameter is not preceded by a comma.

 Description    The compiler has encountered a parameter specifier
                that is missing a preceding comma.  The parameter
                will be defined anyway, though this may not have been
                what you intended.

 User Action    Correct the formal parameter list so that it consists
                of a comma separated list of identifiers (possibly
                followed by ", ...").

 41.415 - MISSINGFUNC

 Message        The function "<name>" has internal linkage, occurs in
                a context that requires its definition, and has no
                definition.

 Description    The program has referenced a function declared with
                static storage class, but the function is not defined
                in the compilation unit.  If a program references a
                static function, the function must be defined in the
                compilation unit.

 User Action    Either define the function or change the function
                declaration to have extern storage class.

 41.416 - MISSINGLABEL

 Message        The label "<label name>" is the target of a goto
                statement within the function "<function name>", but
                has no definition within "<function name>".

 Description    Every label referenced in a goto statement must be
                defined in the same function.

 User Action    Either change the name of the label in the goto
                statement, or define the label.

 41.417 - MISSINGRETURN

 Message        Non-void function "<name>" does not contain a return
                statement.

 Description    This message indicates that a function with an
                explicit return type does not contain a return
                statement.  This message is not issued for functions
                with an implicit return type of int.  See message
                IMPFNCMSSNGRET.

 User Action    Consider declaring the function to be a void
                function.  If it is supposed to return a value, add a
                return statement with the value the function is to
                return.

 41.418 - MISSINGTYPE

 Message        Missing type specifier or type qualifier.

 Description    The compiler was expecting a type specifier or type
                qualifier, but one was not found.

 User Action    Correct the program syntax.

 41.419 - MIXALLOCAVLA

 Message        <Context> this call to __ALLOCA occurs in a block
                that contains a variable-length array declaration.
                The storage allocated by this __ALLOCA call
                will<fragment>vla declaration was at <where>.

 Description    Storage allocated for arrays of variable length have
                their storage deallocated when the block they are
                declared in exits.  Storage allocated by __ALLOCA is
                not normally deallocated until function exit.  Compaq
                C cannot support both types of deallocation in the
                same block.  Therefore, when both a vla array and an
                __ALLOCA call appear in the same block, the storage
                for both will be deallocated with the block exits.

 User Action    Be aware of this.  If the storage allocated for
                __ALLOCA must remain allocated until function exit,
                move the __ALLOCA call outside the block declaring
                the vla array.

 41.420 - MIXALLOCAVLAV

 Message        <Context> using __ALLOCA and variable-length arrays
                in the same function is not allowed on this platform.
                The first variable-length array declaration is at
                <where>.

 Description    Because they place different requirements on stack
                allocation on VAX systems, __ALLOCA and
                variable-length arrays cannot be used in the same
                function.

 User Action    Recode the function to use either variable-length
                arrays or __ALLOCA.

 41.421 - MIXFUNCVOID

 Message        <Context> compatibility of a pointer to void and a
                pointer to a function is not portable under the C
                standard.

 Description    The C standard defines pointer to void as being
                assignment compatible only with pointers to object or
                incomplete types.  An implementation may represent
                function pointers in a way that cannot be stored in a
                pointer to void (or vice-versa).  Thus even an
                explicit cast between a function pointer and a
                pointer to void is not portable.

 User Action    If a generic pointer to function is needed, declare a
                typedef for some pointer to function type, and always
                use explicit casts to assign to and from that type.

 41.422 - MIXINLINE

 Message        The function <name> is declared both <this> and
                <that>.

 Description    A function is declared with more than one of the
                forceinline, inline, or noinline attributes.  It will
                be given the attribute that will provide the most
                optimization.

 User Action    Make sure each function has only one of the
                attributes.

 41.423 - MIXLINKAGE

 Message        <Context> "<name>" is declared with both internal and
                external linkage.  The previous declaration is at
                <location>.

 Description    This warning is output in certain cases when the
                linkage of a declaration conflicts with the linkage
                specified in an earlier declaration.

 User Action    Change one of the declarations so that the linkages
                match.

 41.424 - MIXLINKAGE1

 Message        <Context> "<name>" is declared with both internal and
                external linkage.  The previous declaration is at
                <location>.

 Description    This informational is output when a function
                previously declared to have extern storage class is
                redeclared to have internal storage class and the
                mode of the compiler is common (K & R) mode.

 User Action    Change one of the declarations so that the linkages
                match.

 41.425 - MIXOLDNEW

 Message        The definition of the function <name> includes both a
                prototype and a declaration list.

 Description    A function has been defined using both a declaration
                list and a prototype.  This is not valid.

 User Action    Correct the declaration.

 41.426 - MIXSTORCLS

 Message        <Context> a storage class has already been specified.
                This storage class is ignored.

 Description    The same declaration contains more than one storage
                class specifier.  The compiler will ignore all
                storage class specifiers after the first one.

 User Action    Change the declaration to use only one storage class
                specifier.

 41.427 - MIXVLAALLOCA

 Message        Declaring a variable length array in the same block
                as a call to __ALLOCA will cause the storage
                allocated by any __ALLOCA call to<fragment> previous
                call to __ALLOCA was at <where>.

 Description    Storage allocated for arrays of variable length have
                their storage deallocated when the block they are
                declared in exits.  Storage allocated by __ALLOCA is
                not normally deallocated until function exit.  Compaq
                C can not support both types of deallocation in the
                same block.  Therefore, when both a vla array and an
                __ALLOCA call appear in the same block, the storage
                for both will be deallocated with the block exits.

 User Action    Be aware of this.  If the storage allocated for
                __ALLOCA must remain allocated until function exit,
                move the __ALLOCA call outside the block declaring
                the vla array.

 41.428 - MIXVLAALLOCAV

 Message        Using both __ALLOCA and variable-length arrays in the
                same function is not allowed on this platform.  The
                first call to __ALLOCA is at <where>.

 Description    Because they place different requirements on stack
                allocation on VAX systems, __ALLOCA and
                variable-length arrays cannot be used in the same
                function.

 User Action    Recode the function to use either variable-length
                arrays or __ALLOCA.

 41.429 - MODNOIDSTR

 Message        Invalid identifier or character-string constant
                specification.

 Description    If specified, the second argument to the #pragma
                module or #module directive must be either an
                identifier or a string constant.

 User Action    Correct the directive.

 41.430 - MODSTORCLS

 Message        Storage class modifier noshare has no meaning with
                this storage class.  Modifier is ignored.

 Description    The storage class modifier noshare is only valid for
                variables with a storage class of static, extern, or
                globaldef.  It is ignored for other storage classes.

 User Action    Remove the noshare storage class modifier.

 41.431 - MODULEFIRST

 Message        "#pragma module" or "#module" directive must precede
                any language text.

 Description    The #pragma module or #module directive must appear
                before any declarations.  The directive will be
                ignored.

 User Action    Move the directive to the top of the compilation
                unit.

 41.432 - MSGPOP

 Message        This "restore" has underflowed the message stack.  No
                corresponding "save" was found.

 Description    The message stack, managed by the #pragma message and
                #pragma environment directives, contains more
                restores than saves.  This could signify a coding or
                logic error in the program.

 User Action    Make sure each restore has a corresponding save.

 41.433 - MULTICHAR

 Message        A character constant includes more than one character
                or wide character.

 Description    A character constant includes more than one
                character.  While this is valid, it might not have
                been what you intended.

 User Action    Verify that the constant should contain more than one
                character.

 41.434 - MULTILINK

 Message        Multiple linkage pragmas specified for "<routine
                name>".

 Description    The same routine appeared in more than one #pragma
                use_linkage directive.  Each routine can only be
                given one linkage.

 User Action    Remove the routine from all but one #pragma
                use_linkage directive.

 41.435 - MULTILINKREG

 Message        The register "<register>" is specified more than once
                in the linkage pragma.  Pragma is ignored.

 Description    The same register was specified more than once in the
                same register list in a #pragma linkage directive.
                The compiler will ignore the entire pragma.

 User Action    Correct the directive.

 41.436 - MULTIMAIN

 Message        More than one main program has been defined.

 Description    The compiler has encountered more than one main
                program in this compilation unit.  Each program can
                have only one main program.

 User Action    Remove one of the main programs.

 41.437 - MULTIPSECTNAME

 Message        Multiple <psect_type> names specified.  The name
                "<new_name>" supersedes "<old_name>".

 Description    More than one #pragma code_psect or #pragma
                linkage_psect was encountered.  The psect specified
                by the later #pragma supersedes the one specified
                earlier.  This message is only output for C compilers
                on OpenVMS Alpha.

 User Action    Each program should contain at most one #pragma
                code_psect and one #pragma linkage_psect.

 41.438 - NAMESHORTENED

 Message        The external identifier "<name>" exceeds 31
                characters.  The name has been shortened to
                "<shortened spelling>".

 Description    A compilation that used the /NAMES=SHORTENED
                qualifier has encountered a name that needs to be
                shortened.  The external name will be different than
                the internal name.  Also, because the external name
                exceeds the length specified by standard C as the
                minimum external length an implementation must
                support, this program does not strictly conform to
                standard C and might not be accepted by other C
                compilers.

 User Action    Be aware of these items.

 41.439 - NAMESLOWER

 Message        The /NAMES=LOWERCASE qualifier will be removed in a
                future version of the compiler.  Use /NAMES=AS_IS if
                your application must generate global names in
                lowercase.

 Description    While the C language has always required identifiers
                with internal linkage to be treated case
                sensitively,it traditionally permitted
                implementations to monocase identifiers with external
                linkage.  Modern standards require C/C++
                implementations to preserve the case of identifiers
                with external linkage.  As VMS and other operating
                systems that traditionally implemented monocasing
                chose uppercase as the convention, /NAMES=LOWERCASE
                runs contrary both to the C and C++ standards and to
                traditional conventions.  Continued support for this
                option interferes with support for compatibility
                between old code compiled with /NAMES=UPPERCASE and
                new code compiled with /NAMES=AS_IS.

 User Action    Use /NAMES=AS_IS, making source code changes as
                needed.

 41.440 - NEEDADDRCONT

 Message        <Context> "<name>" does not have a constant address,
                but occurs in a context that requires an address
                constant.

 Description    A variable with static storage has been initialized
                to the address of an object whose address is not
                constant.  This can happen if a static pointer
                variable is initialized to the address of an
                automatic variable.

 User Action    Either make the initialize a constant, or, if
                possible, initialize the static storage using a
                run-time assignment.

 41.441 - NEEDARITH

 Message        <Context> "<expression>" has <type> type, which is
                not arithmetic.

 Description    An expression that must be an arithmetic type was not
                an arithmetic type.  For example, the operands of an
                arithmetic operator such as * must be arithmetic
                type.

 User Action    Modify the expression so that it is an arithmetic
                type.

 41.442 - NEEDCONSTEXPR

 Message        <Context> "<name>" is not constant, but occurs in a
                context that requires a constant expression.

 Description    An expression that must evaluate to a compile-time is
                not a constant.

 User Action    Modify the constant expression so that it will
                evaluate as a compile-time constant.

 41.443 - NEEDCONSTEXT

 Message        <Context> "<name>" is not constant, but occurs in a
                context that requires a constant expression.  This is
                an extension of the language.

 Description    The C89 standard requires that an initializer for an
                automatic aggregate or union type object have an
                initializer that is a list of constant expressions.
                Compaq C allows non-constants in these initializers.
                This is an extension to C89.  Although this is
                allowed by the C99 standard, other C compilers might
                not successfully compile a program that uses this
                extension.

 User Action    Be aware of this if you wish to port the program.

 41.444 - NEEDDFLOAT

 Message        The CDD description for <name> specifies the
                D_Floating data type.  The data can only be
                represented when compiling with /FLOAT=D_FLOAT.

 Description    The /FLOAT command-line qualifier specified a
                floating type other than D_floating format.  The CDD
                description specified was D_floating type, which did
                not match the floating type specified on the command
                line.

 User Action    Specify the correct command-line qualifier, or change
                the description of the item in the CDD.

 41.445 - NEEDFUNCPTR

 Message        <Context> "<expression>" points to <type> type, but
                occurs in a context that requires a pointer to a
                function type.

 Description    An expression that must be a pointer to a function
                type is a pointer to an object or incomplete type.
                For example, if a function invocation expression is a
                pointer, it must be a pointer to a function type.

 User Action    Modify the expression so that it is a pointer to a
                function type.

 41.446 - NEEDGFLOAT

 Message        The CDD description for <name> specifies the
                G_Floating data type.  The data can only be
                represented when compiling with /FLOAT=G_FLOAT.

 Description    The /FLOAT command-line qualifier specified a
                floating type other than G_floating format.  The CDD
                description specified was G_floating type, which did
                not match the floating type specified on the command
                line.

 User Action    Specify the correct command line qualifier, or change
                the description of the item in the CDD.

 41.447 - NEEDIEEE

 Message        The CDD description for <name> specifies a VAX
                floating data type.  The data cannot be represented
                when compiling with /FLOAT=IEEE_FLOAT.

 Description    The command-line qualifier /FLOAT=IEEE_FLOAT was
                specified, indicating that all floating-point data
                should be represented in IEEE-floating format, yet
                the CDD description specified a non-IEEE_floating
                type.

 User Action    Specify the correct command-line qualifier, or change
                the description of the item in the CDD.

 41.448 - NEEDIEEE1

 Message        The CDD description for <name> specifies an IEEE
                floating data type.  The data can only be represented
                when compiling with /FLOAT=IEEE_FLOAT.

 Description    The CDD description for an item specifies an IEEE
                floating point type.  However this module was not
                compiled with the /FLOAT=IEEE_FLOAT qualifier.

 User Action    Specify the correct command-line qualifier, or change
                the description of the item in the CDD.

 41.449 - NEEDINTEXPR

 Message        <Context> "<expression>" has <type> type, which is
                not integral.

 Description    An expression that must be an integer type was not
                integral.  For example, an array-index specifier must
                be an integral type.

 User Action    Modify the expression so that it is an integral type.

 41.450 - NEEDLVALUE

 Message        <Context> "<expression>" is not an lvalue, but occurs
                in a context that requires one.

 Description    An expression that must be an lvalue was not an
                lvalue.  For example, the operand of the address-of
                operator must be an lvalue.

 User Action    Modify the expression so that it is an lvalue.

 41.451 - NEEDMEMBER

 Message        <Context> "<name>" is not a member of "<struct or
                union expression>".

 Description    The second operand of a .  or -> operator specifies a
                member name that is not a member of the struct or
                union type specified by the first operand.  Note that
                in certain modes, Compaq C will search all other
                visible struct/union types for a matching member
                name.  If it finds one, a diagnostic will be issued,
                and the offset of that name will be used.

 User Action    Specify a valid member name.

 41.452 - NEEDNONBLTIN

 Message        <Context> "<name>" is a builtin and cannot be used in
                this context.

 Description    A program has used a builtin function in a way that
                is invalid for builtin functions.  For example, a
                program cannot take the address of a builtin.

 User Action    Remove the improper use of the builtin.

 41.453 - NEEDNONCONST

 Message        <Context> "<expression>" has const-qualified type,
                but occurs in a context that requires a modifiable
                lvalue.

 Description    The code has attempted to modify an object that is
                either a const-qualified type or has been declared
                with the readonly storage-class modifier.  This is
                not valid.  A typical example is assigning a value to
                a const variable.

 User Action    Either remove the const qualifier from the object's
                type, remove the readonly storage-class modifier from
                the object declaration, or rework the code so that
                the object is not written to.

 41.454 - NEEDNONVOID

 Message        <Context> "<expression>" has void type, but occurs in
                a context that requires a non-void result.

 Description    An expression that must not be a void type was void.
                For example, the control expression for an if
                statement must not have void type.

 User Action    Modify the expression so that it has the required
                type.

 41.455 - NEEDPOINTER

 Message        <Context> "<expression>" has <type> type, but occurs
                in a context that requires a pointer.

 Description    An expression that must be a pointer type was not a
                pointer type.  For example, the operand of the
                dereference operator must be a pointer type.

 User Action    Modify the expression so that it has a pointer type.

 41.456 - NEEDPTROBJ

 Message        <Context> "<expression>" does not point to an object
                type.

 Description    An expression that must be a pointer to an object
                type is a pointer to a function or incomplete type.
                For example, if a pointer is the operand of the
                postincrement operator, it must point to an object
                type.

 User Action    Modify the expression so that it is a pointer to an
                object type.

 41.457 - NEEDSCALAR

 Message        <Context> "<expression>" has <type> type, which is
                not scalar.

 Description    An expression that must be a scalar type was not
                scalar.  For example, only scalars can be cast to
                other types.

 User Action    Modify the expression so that it is a scalar type.

 41.458 - NEEDSCALARTYP

 Message        <Context> "<source type>" is <type> type, which is
                not scalar.

 Description    In a cast expression, the destination type of the
                cast is not a scalar type.  This is not valid.  Both
                the source and target type of a cast must be scalars.

 User Action    Modify the cast destination type so that it is a
                scalar type.

 41.459 - NEEDSIMPLEASM

 Message        This asm is unsupported or illegal.

 Description    The argument to the asm intrinsic is invalid.

 User Action    Supply a valid argument to the asm instrinsic.

 41.460 - NEEDSTRCONST

 Message        <Context> "<name>" is not a legal asm string, a
                string constant is required.

 Description    The argument to the asm intrinsic must be a string
                constant.

 User Action    Change the argument to be a string constant.

 41.461 - NEEDSTRUCT

 Message        <Context> "<expression>" has <type> type, but occurs
                in a context that requires a union or struct.

 Description    The left operand of the .  or -> operator does not
                have struct or union type.

 User Action    Correct the operand.

 41.462 - NESTEDCOMMENT

 Message        Opening comment delimiter found inside a delimited
                comment; a previous comment may be missing its
                closing delimiter.

 Description    C comments delimited by /* */ do not nest.  When /*
                is encountered inside a delimited comment it usually
                means that the previous comment is missing its
                terminating */ or that the user has ill-advisedly
                attempted to "comment out" a section of code that
                contains a delimited comment.

 User Action    It is traditional in C to use #if 0 to conditionalize
                out large sections of code.  You may also want to
                consider //-style comments if the compiler modes you
                care about recognize them.

 41.463 - NESTEDENUM

 Message        The type "<type>" is declared nested within
                "<enclosing type>".  In C, the nesting is ignored and
                <type> and its enumerator constants can be accessed
                as if they were not nested.  <However, the type and
                its enumerators are members in C++>.  <Fix>.

 Description    C allows types to be declared within other types.
                For example:  struct S { int a; enum E { first,
                second, third} b; int c; }; In C++ the enum E would
                not be accessible without using the ::  operator.

 User Action    Declare the nested type before declaring the
                enclosing type.

 41.464 - NESTEDTYPE

 Message        The type "<type>" is declared nested within
                "<enclosing type>".  In C, the nesting is ignored and
                <type> can be accessed as if it were not nested.
                <However, the type is a member in C++>.  <Fix>.

 Description    C allows types to be declared within other types.
                For example:  struct S { int x; struct S1 { int a;
                int b; } y; }; In C++ the struct S1 would not be
                accessible without using the ::  operator.

 User Action    Declare the nested type before declaring the
                enclosing type.

 41.465 - NESTINCL

 Message        Files included by this file are referenced.  However
                nothing else appears to be referenced from this file.

 Description    When compiling with the current set of compilation
                options, to improve compilation efficiency, you may
                wish to include the files which this file includes
                directly, rather than including them from this file.

 User Action    For compilation efficiency, you may exclude this
                include file when compiling with the current set of
                compilation options.

 41.466 - NEWLOCALE

 Message        The compiler could not set its locale to the
                locale-specific native environment.  This problem
                might be caused by an incorrect value for a name
                defined in your process environment such as "LC_ALL"
                or "LANG".  The "C" locale will be used.

 Description    During start-up, the compiler was unable to set its
                locale to the locale-specific environment.  As part
                of its initialization, the compiler will issue the
                call setlocale(LC_ALL, "").  If this call fails, the
                compiler will set its locale to the "C" locale.  In
                general, this message is output because the
                locale-specific native environment has been set
                incorrectly.

 User Action    The best way to determine why the compiler was unable
                to set the locale is to write a small program that
                contains the library call setlocale(LC_ALL, "") and
                then examine the return value from the call.

 41.467 - NLCHAR

 Message        An unexpected newline character is present in a
                character constant.

 Description    An end of line was encountered during the scanning of
                a character constant.

 User Action    Terminate the character constant with a closing
                single quote character before the end of line.

 41.468 - NLHEADER

 Message        A newline occurs inside of a header name.

 Description    An end of line was encountered before the closing
                double quote or angle bracket of an #include
                directive.

 User Action    Terminate the directive argument properly.

 41.469 - NLSTRING

 Message        An unexpected newline character is present in a
                string literal.

 Description    An end of line was encountered during the scanning of
                a string literal.

 User Action    Terminate the string constant with a closing double
                quote character before the end of line, or continue
                the line with a continuation character.

 41.470 - NOADD

 Message        <Context> "<expression1>" and "<expression2>" cannot
                be added.

 Description    Because of their types, the two expressions cannot be
                used as the operands of the addition operator.
                Either both operands must be arithmetic type, or one
                operand must be a pointer to an object type and the
                other must be an integral type.

 User Action    Modify the addition to use valid types.

 41.471 - NOBIFDISABLE

 Message        The function "<routine name>" is a builtin function
                reserved to the compiler, and cannot be used with
                #pragma function.  The function will continue to be
                treated as a builtin.

 Description    A function identifier specified in a #pragma function
                directive is the name of a builtin function.  These
                functions cannot be explicitly disabled, they are
                always handled as builtin functions.

 User Action    Remove the inappropriate use of the pragma, and
                change the name of the function in order to have it
                treated as an ordinary callable function.

 41.472 - NOBITFIELD

 Message        <Context> "<expression>" is a bitfield, but occurs in
                a context that precludes bitfields.

 Description    An expression that must not be a bitfield was a
                bitfield.  For example, the operand of the address-of
                operator must not be a bitfield.

 User Action    Modify the expression so that its type is not a
                bitfield type.

 41.473 - NOCASEHERE

 Message        This case label occurs outside of any switch
                statement.

 Description    A case label can only occur inside of a switch
                statement.

 User Action    Remove the case label.

 41.474 - NOCDDHERE

 Message        CDD is not available on this platform.  The
                #dictionary directive has been ignored.

 Description    The #dictionary directive requires CDD to be present
                on the platform.  This directive will only be
                recognized on OpenVMS systems.

 User Action    Remove the directive.

 41.475 - NOCOLON

 Message        Missing ":".

 Description    The compiler was expecting a colon, but one was not
                found.

 User Action    Correct the program syntax.

 41.476 - NOCOLONINEXPR

 Message        Missing colon for conditional expression.

 Description    A conditional expression that occurs as part of a
                preprocessing expression was missing the ":" that
                separates the second from the third operand.  The
                value of the resulting expression is undefined.

 User Action    Correct the conditional expression.

 41.477 - NOCOMMA

 Message        Missing ",".

 Description    The compiler was expecting a comma, but one was not
                found.

 User Action    Correct the program syntax.

 41.478 - NOCONDEXPR

 Message        Missing #if conditional expression.

 Description    An argument was not supplied to an #if or #elif
                preprocessing directive.  The missing argument will
                cause the compiler to consider these as FALSE
                conditionals.

 User Action    Supply a valid argument to the directive.

 41.479 - NOCONVERT

 Message        <Context> "<expression>" is of type "<type>", and
                cannot be converted to "<target type>".

 Description    An expression of one type cannot be converted to the
                type required by this expression.  This most often
                occurs when the source type of an assignment or cast
                cannot be converted to the destination type.  The
                rules for which types can be converted are rather
                complicated and differ based upon the compiler mode.
                Refer to the language documentation for a complete
                list of valid combinations.

 User Action    Modify the conversion to use valid types.

 41.480 - NOCONVERTCLS

 Message        <Context> "<expression>" is of type "<type>", and
                cannot be converted to a different "<type>" type.

 Description    A struct or union of one type cannot be converted to
                a different struct or union type.

 User Action    Modify the conversion to use valid types.

 41.481 - NODCL

 Message        <Context> there is no declarator.

 Description    A declaration contains a storage class and/or type
                specifier but no declarator.  This might not have
                been what you intended.

 User Action    Correct the declaration.

 41.482 - NODEFAULTHERE

 Message        This default label occurs outside of any switch
                statement.

 Description    A case default label can only occur inside of a
                switch statement.

 User Action    Remove the case default label.

 41.483 - NOENDIF

 Message        Missing #endif directive.

 Description    The compiler encountered an #if, #ifdef, or #ifndef
                preprocessing directive without a matching #endif.
                This might not have been what you intended.  The
                compiler will add the necessary #endif directive at
                the end of the compilation unit.

 User Action    Make sure every #if, #ifdef and #ifndef has a
                matching #endif.

 41.484 - NOEQUAL

 Message        Missing "=".

 Description    The compiler was expecting to see an "=" after the
                secondary_name specification of a #pragma weak or
                #pragma external_name directive.  This message is
                only output on UNIX.

 User Action    Correct the #pragma directive.

 41.485 - NOEQUALITY

 Message        <Context> "<expression1>" and "<expression2>" cannot
                be compared for equality or inequality.

 Description    Because of their types, the two expressions cannot be
                compared for equality or inequality.  The rules for
                which types can be compared are rather complicated
                and differ based upon the compiler mode.  Refer to
                the language documentation for a complete list of
                valid combinations.

 User Action    Modify the comparison to use valid types.  This can
                often be done by casting one of the expressions to
                the type of the other.

 41.486 - NOEXCEPTFLTR

 Message        <Context> this exception handling call is not within
                an exception filter of a try block.

 Description    The exception handling call must appear within an
                exception filter of a try statement block.

 User Action    Either remove the exception handling call, or place
                it in a try statement block.

 41.487 - NOFBDAT

 Message        <text> does not contain feedback data

 Description    The file indicated by the -feedback switch exists,
                but does not contain feedback data.  This is probably
                an error on the users part, although it might be seen
                as part of the bootstrapping process.

 User Action    Create a valid feedback file

 41.488 - NOFBFIL

 Message        Feedback file <text> does not exist

 Description    The file specified after the -feedback option does
                not exist.  This is normal during the bootstrapping
                process.

 User Action    Either correct the spelling of the feedback option,
                or create the required feedback file.

 41.489 - NOFBOPT

 Message        Compilation will proceed without feedback
                optimizations

 Description    A condition has occurred that has prevented the
                compiler from using feedback optimizations.  This
                message is most often preceded by another message
                that will provide additional information.

 User Action    Correct the condition that prevented the feedback
                optimizations.

 41.490 - NOFBRTN

 Message        Feedback inactive for <text> in this compilation

 Description    Feedback information has gone stale for a particular
                routine (the source for the routine has changed).
                Feedback optimizations will not be applied to this
                routine.

 User Action    Create a new feedback file

 41.491 - NOFIFILE

 Message        Cannot find include file <filename> specified on the
                command line.

 Description    The header file name specified in the UNIX -FI
                command line option or the OpenVMS /FIRST_INCLUDE
                qualifier was not found using the search rules in
                effect for the quoted form of #include directives.

 User Action    Either change the name of the file following the
                option or create the file.

 41.492 - NOFNTPDEFDECL

 Message        There is no identifier named "<name>" declared as a
                function or function typedef in this compilation
                unit.

 Description    A #pragma assert and/or #pragma linkage directive(s)
                contains an identifier that is not declared as a
                function or function typedef in the compilation unit.
                This may not have been what you intented.

 User Action    Remove the identifier from the #pragma assert and/or
                #pragma linkage, or declare it as a function or
                function typedef.  empty string.

 41.493 - NOFORMALPARM

 Message        Missing formal parameter specifier.

 Description    While processing the formal parameter list of a macro
                definition, the compiler encountered a missing formal
                parameter specifier.  The macro will be be defined
                and this parameter ignored, but that may not have
                been what you intended.

 User Action    Correct the formal parameter list so that it consists
                of a comma separated list of identifiers.

 41.494 - NOFUNC

 Message        There is no function named <name> defined in this
                compilation unit.

 Description    A function that appears in a #pragma weak and is not
                defined in the compilation unit.

 User Action    Either define the function or remove the function
                name from the pragma.

 41.495 - NOIDFOUND

 Message        <Context> an identifier was expected but not found.

 Description    The compiler was expecting an identifier, but one was
                not found.

 User Action    Correct the program syntax.

 41.496 - NOIDINPACKPOP

 Message        pragma pack pop directive has no identifier <name>
                which was found on the top of the pack stack.

 Description    The #pragma pack (pop) directive has no identifier
                specified while the top element of the pack stack has
                one.  Either this #pragma pack pop should have the
                identifier found on the stack, or this is an extra
                pragma pack pop, or the identifier should not be
                pushed by the corresponding #pragma pack push.

 User Action    Check whether the pragma pack pop should have the
                identifier.  Verify that there's no extra #pragma
                pack pop or #pragma member_alignment restore which
                popped the identifier to the top of the pack stack.
                Correct the directive(s).

 41.497 - NOINCLFILE

 Message        Cannot find file <filename> specified in #include
                directive.

 Description    The specified include file does not exist.

 User Action    Either change the name of the file in the #include
                preprocessing directive, or create the include file.

 41.498 - NOINCLFILEF

 Message        Cannot find file <filename> specified in #include
                directive.

 Description    The specified include file does not exist.

 User Action    Either change the name of the file in the #include
                preprocessing directive, or create the include file.

 41.499 - NOINCLUDEARG

 Message        #include directive missing argument.

 Description    An argument was not supplied to an #include
                preprocessing directive.  The directive will be
                ignored.

 User Action    Supply a valid argument to the directive.

 41.500 - NOINIT

 Message        The type of <variable> does not permit
                initialization.

 Description    This type cannot be initialized.  Only objects and
                arrays of unknown size can be initialized.

 User Action    Remove the initializer.

 41.501 - NOINLFUNC

 Message        There is no definition for the inline function named
                <name> in this compilation unit.

 Description    A function that appears in a #pragma inline or
                #pragma noinline, or is declared with the __inline or
                __forceinline storage class modifier, is not defined
                in the compilation unit.

 User Action    Either define the function or remove the function
                name from the pragma, or remove the storage class
                modifier or the function specifier from the
                declaration.

 41.502 - NOINLINEM

 Message        The main function cannot be inlined.

 Description    The C99 standard prohibits the inline keyword from
                being used on the main function.

 User Action    Remove the inline keyword.

 41.503 - NOINLINEREF

 Message        <Context> "<name>" has internal linkage and is
                referenced from an an inline auxiliary function.
                This is a violation of the C99 Standard.

 Description    A function declared with the inline keyword and
                without a declaration containing the keyword, extern,
                or without a declaration which lacks the inline
                keyword and the static keyword declares an auxiliary
                inline declaration.  A definition of an auxiliary
                inline shall not contain a definition of a modifiable
                object with static storage duration, and shall not
                contain a reference to an identifier with internal
                linkage.

 User Action    Remove the inline keyword from all declarations of
                the parent function, or if it is appropriate, change
                the declaration of the referenced item to a
                declaration which has something other than internal
                linkage.

 41.504 - NOINLINEST

 Message        In an inline auxiliary function, the modifiable
                object "<name>" is declared with static storage
                duration.  This is a violation of the C99 standard.

 Description    A function declared with the inline keyword and
                without a declaration containing the keyword, extern,
                or without a declaration which lacks the inline
                keyword and the static keyword declares an auxiliary
                inline declaration.  A definition of an auxiliary
                inline shall not contain a definition of a modifiable
                object with static storage duration, and shall not
                contain a reference to an identifier with internal
                linkage.

 User Action    Remove the inline keyword from all declarations of
                the parent function, or if it is appropriate, add the
                const keyword to the declaration to create an
                non-modifiable object.

 41.505 - NOLEAVETARG

 Message        This leave statement is not within a try statement.

 Description    The exception handling statement leave must appear
                within a try statement block.

 User Action    Either remove the leave statement, or place it in a
                try statement block.

 41.506 - NOLEFTOPERND

 Message        Token pasting operator missing left operand.

 Description    The preprocessing token pasting operator "##" appears
                in a macro body without the preceeding token
                argument.

 User Action    Either remove the operator or supply it with two
                tokens that will be pasted together.

 41.507 - NOLINKAGE

 Message        <Context> "<name>" has no linkage and has a prior
                declaration in this scope at <where>.

 Description    A declaration within a function body redeclares an
                identifier declared earlier in the current scope, and
                both declarations did not have the extern storage
                class.

 User Action    Either remove the extra declarations, or have all
                declarations for the identifier use the extern
                storage class.

 41.508 - NOLONGLONG

 Message        <Context> 64-bit integral types are not supported on
                this platform.

 Description    64-bit integer types are not supported on the VAX
                platform.

 User Action    Change the type to an integer type that is supported
                on VAX, or compile the application on a platform that
                does support 64-bit integers.

 41.509 - NOMACRONAME

 Message        #define directive is missing macro name identifier.

 Description    The #define preprocessing directive was not supplied
                with an argument.  The directive should be followed
                with an identifier that specifies the macro name to
                be defined.  The directive will be ignored.

 User Action    Supply a valid argument to the preprocessing
                directive.

 41.510 - NOMAINUFLO

 Message        No main function encountered within module.
                /IEEE_MODE=UNDERFLOW_TO_ZERO is ignored.

 Description    Use of the /IEEE_MODE=UNDERFLOW_TO_ZERO is only
                meaningful for compilation units that contain a main
                program.  The compiler will ignore the qualifier.

 User Action    Remove the qualifier from the command line.

 41.511 - NONAMEMEMBERS

 Message        <Context> a struct or union has no named members.
                This is undefined behavior according to the C
                standard.

 Description    The C standard requires that a struct or union
                contain at least one named member.  Because this
                struct/union contains no named members, it does not
                conform to the C standard and might not be portable.

 User Action    Make sure at least one member has a name.

 41.512 - NONATOMIC

 Message        Unable to generate code for atomic access

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.513 - NONEWTYPE

 Message        The type "<type>" is being declared as part of
                <context>.  C++ does not permit a new type to be
                declared in this context.  <Fix>.

 Description    C++ does not allow types to be declared in certain
                contexts that are valid in C.  One example is the
                declaration of a type within a function prototype.

 User Action    Declare the type before its use.

 41.514 - NONLBEFOREEOF

 Message        File does not end in unescaped newline.

 Description    The final character of a file was not a newline
                character.  This could indicate that the file has
                been corrupted.  The compiler will insert a newline
                character at this point in the input stream.

 User Action    Update the source file so that it ends with a
                newline.

 41.515 - NONMULTALIGN

 Message        The size of this structure is <size> bytes, which is
                not a multiple of its alignment of <align>.
                Respecify the alignment of the structure or add
                <bytes> bytes of additional padding.

 Description    The size of a struct or union is not a multiple of
                its alignment.  This could cause unaligned accesses
                if an array of these structs or unions is declared.

 User Action    Modify the struct/union or the alignment so that the
                size of the struct or union is a multiple of the
                alignment.

 41.516 - NONOCTAL

 Message        An octal constant contains non-octal digits.

 Description    An octal constant contains a non-octal digit.  The
                compiler will convert this non-octal digit to its
                corresponding octal value and use that value instead.
                For example, 0190 will be converted to 0210 (decimal
                136) as the non-octal digit 9 is converted to the
                octal 11.

 User Action    Correct the octal constant to use only octal digits.

 41.517 - NONPORTDEFINED

 Message        "defined" is treated as an identifier here, not an
                operator.

 Description    For compatibility with older C compilers, in certain
                modes the compiler will treat #ifdef defined(foo) as
                #ifdef defined, and #ifndef defined(foo) as #ifndef
                defined.  This might not have been what you intended.

 User Action    Do not mix #ifdef/#ifndef with the defined operator.

 41.518 - NONPORTLINEDIR

 Message        Non-standard #line directive.

 Description    Accepting the line directive without the "line"
                preprocessing keyword is an extension of Compaq C.
                The program does not conform to the C standard, and
                might not be accepted by other compilers.

 User Action    Add the "line" preprocessing keyword to the
                directive.

 41.519 - NONSTANDCAST

 Message        <Context> "<expression>" of type "<type>", is being
                converted to "<target type>".  Such a cast is not
                permitted by the standard.

 Description    The standard only permits casts from a pointer to an
                object incomplete type to another pointer to an
                object or incomplete type, or from a pointer to
                function type to another pointer to function type.
                Note that void is considered an incomplete type, so
                casts between pointer to void and pointer to function
                types are not permitted by the C standard.

 User Action    Be aware of this difference if you plan to port this
                source to another compiler.

 41.520 - NONULINIT

 Message        <Context> , there is no room for the terminating
                '\0'.  Standard C allows this, but C++ does not.

 Description    This declaration initializes an object to a strict
                literal.  Although the object is large enough to hold
                the characters in the literal, it is not large enough
                to hold the terminating null character.  This might
                not have been what you intended.  This practice is
                also not valid in C++.

 User Action    Increase the size of the object, or reduce the size
                of the initializer.

 41.521 - NOOPERAND

 Message        Stringization operator missing operand.

 Description    The preprocessing stringization operator "#" appears
                in a macro body without a token argument after the
                operator.

 User Action    Either remove the operator or supply it with a token
                that will be stringized.

 41.522 - NOOPERANDS

 Message        Token pasting operator missing both operands.

 Description    The preprocessing token pasting operator "##" appears
                in a macro body without either the preceeding or
                following token arguments.

 User Action    Either remove the operator or supply it with two
                tokens that will be pasted together.

 41.523 - NOPARENARGLST

 Message        Missing right parenthesis for macro argument list.

 Description    A macro invocation's argument list did not end in a
                right parenthesis.

 User Action    Correct the program syntax.

 41.524 - NOPARM

 Message        This declaration does not declare a parameter.

 Description    The parameter declaration list of an old-style
                function definition included a type but no parameter
                identifier.

 User Action    Replace the old-style function definition with the
                recommended prototype-format declaration.  If this is
                not possible, include the correct identifier after
                the parameter type.

 41.525 - NOPARMLIST

 Message        The declaration of <function> has an empty parameter
                list.  If the function has parameters, they should be
                declared here; if it has no parameters, "void" should
                be specified in the parameter list.

 Description    The recommended way to declare a function that takes
                no parameters is to use "void" in the parameter list.

 User Action    Make the recommended change.

 41.526 - NOPRAGARG

 Message        No argument for #pragma <pragma> was found.  Pragma
                is ignored.

 Description    A #pragma directive was not followed by one of the
                expected arguments.  The directive will be ignored.

 User Action    Supply all required arguments to the directive.

 41.527 - NOPSECT

 Message        Missing psect name.

 Description    The psect specifier in a globaldef declaration must
                be a string constant.

 User Action    Either make the psect a string constant or remove the
                psect specifier.

 41.528 - NOREGAVAIL

 Message        Unable to satisfy program register allocation
                requirements.

 Description    The compiler is unable to allocate all the registers
                requested by the program.  This most often happens
                when asm directives require too many registers.

 User Action    Rework the asm directives so they use fewer registers

 41.529 - NORELATIONAL

 Message        <Context> "<expression1>" and "<expression2>" cannot
                be compared with a relational operator.

 Description    Because of their types, the two expressions cannot be
                used as the operands of a relational operator.  The
                rules for which types can be used in a relational are
                rather complicated and differ based upon the compiler
                mode.  Refer to the language documentation for a
                complete list of valid combinations.

 User Action    Modify the relational to use valid types.  This can
                often be done by casting one of the expressions to
                the type of the other.

 41.530 - NORETNONVOID

 Message        noreturn assertion of #pragma assert directive can't
                be specified for non-void function.

 Description    noreturn assertion was specified in #pragma assert
                directive for non-void function; the noreturn
                assertion will be ignored.

 User Action    Either remove noreturn assertion from the directive,
                or change return type for the function to void.

 41.531 - NORETURNVAL

 Message        The function "<name>" returns a value, but no value
                is given in this return statement.

 Description    A function that returns a value contains a return
                statement that is missing a return value.  Therefore,
                the returned value will be undefined.  This might not
                have been what you intended.

 User Action    Supply a return value for the return statement.

 41.532 - NORETURNVAL1

 Message        The function "<name>" has an implicit return type of
                int, but no value is given in this return statement.

 Description    A function that has an implicit return type of int
                contains a return statement that is missing a return
                value.  Therefore, the returned value will be
                undefined.  This might not have been what you
                intended.

 User Action    Supply a return value for the return statement or
                define the function with a void return type.

 41.533 - NORETVAL

 Message        routine <text> does not return a value

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.534 - NORGHTPAREN

 Message        No right parenthesis for parameter list.

 Description    A macro definition's formal parameter list did not
                end in a right parenthesis.  A right parenthesis has
                been assumed.

 User Action    End the formal parameter list with a right
                parenthesis.

 41.535 - NORIGHTOPERND

 Message        Token pasting operator missing right operand.

 Description    The preprocessing token pasting operator "##" appears
                in a macro body without a token argument after the
                operator.

 User Action    Either remove the operator or supply it with two
                tokens that will be pasted together.

 41.536 - NORIGHTPAREN

 Message        Missing ")".

 Description    A right parenthesis was expected at this point in the
                program, but none was found.

 User Action    Correct the program syntax.

 41.537 - NOSEHHAND

 Message        Missing exception handler.

 Description    The __builtin_try clause must specify an exception
                handler of either __builtin_finally or
                __builtin_except.  This message is only generated on
                UNIX systems.

 User Action    Correct the __builtin_try clause.

 41.538 - NOSEMI

 Message        Missing ";".

 Description    The compiler was expecting a semicolon, but one was
                not found.

 User Action    Correct the program syntax.

 41.539 - NOSEMI1

 Message        Missing ";".  This condition may have been caused by
                an open brace without a matching close brace.  The
                compiler will attempt to identify open braces that
                might be missing a close brace.

 Description    The compiler was expecting a semicolon, but one was
                not found.  This condition may have been caused
                missing close brace.  This message is followed by
                some number of additional messages that attempt to
                identify the bad open brace.

 User Action    Correct the program syntax.

 41.540 - NOSEMISTRUCT

 Message        Missing ";" after last structure or union member.

 Description    Accepting a struct/union type without a semicolon
                after the last member specifier is a language
                extension of Compaq C provided for compatiblity with
                older C compilers.  This syntax is not valid in
                standard C, and may not be accepted by other C
                compilers.

 User Action    Add the semicolon at the end of the last member.

 41.541 - NOSFILE

 Message        Cannot create .s file:  overlapping static storage
                initializations at Psect <text> + <number>

 Description    When producing an output assembly file, the compiler
                back-end as detected a case where the same storage
                location has been initialized to more than one value.
                This can occur when inter-file optimization has been
                enabled.

 User Action    Remove one of the initializers.

 41.542 - NOSHAREEXT

 Message        noshare is a language extension.

 Description    The noshare storage class modifier is a language
                extension of Compaq C.  Other C compilers might not
                successfully compile a program that uses the
                extension.

 User Action    Be aware of this extension if you wish to port the
                code.

 41.543 - NOSHRINSHR

 Message        Noshare variable resides in shr extern model -
                noshare ignored.

 Description    The current extern model places all external objects
                in a shareable section.  Placing an object with a
                noshare type qualifier in such a section is invalid.
                The compiler will ignore the noshare type qualifier

 User Action    Place noshare objects in sections with the noshare
                attribute.

 41.544 - NOSTRING

 Message        Missing string literal.

 Description    The compiler was expecting a string literal, but one
                was not found.

 User Action    Correct the program syntax.

 41.545 - NOSUBTRACT

 Message        <Context> "<expression2>" cannot be subtracted from
                "<expression1>".

 Description    Because of their types, the two expressions cannot be
                used as the operands of the subtraction operator.
                Either both operands must be arithmetic type, or both
                operands must be pointers to qualified or unqualified
                versions of compatible object types, or the left
                operand must be a pointer type and the right operand
                must be an integral type.

 User Action    Modify the subtraction to use valid types.

 41.546 - NOTADDRCAST

 Message        <Context> the address constant "<expression>" can be
                cast only to a pointer type, but "<type>" is <type
                class> type.

 Description    An address constant can only be cast to a pointer
                type.

 User Action    Correct the cast.

 41.547 - NOTAREDUCTION

 Message        bad reduction path from fetch of <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.548 - NOTCOMPAT

 Message        <Context> the type of "<name>" is not compatible with
                the type of a previous declaration of "<name>" at
                <location>.

 Description    The same identifier has been redeclared with a type
                that is incompatible with the type given in a
                previous visible declaration.  In some modes, the
                compiler will use the redeclared type as the type of
                the identifier.

 User Action    Change the declarations to use compatible types.

 41.549 - NOTCOMPATIMP

 Message        <Context> the type of the function "<name>" is not
                compatible with the earlier implicit declaration of
                "<name>" at <location>.

 Description    The declared type of a function does not match the
                type given to the function by its earlier implicit
                declaration.  This may cause unexpected behavior.

 User Action    Make sure that a valid function declaration is
                visible at the point in the source where the function
                is first called.

 41.550 - NOTCOMPFUNC

 Message        <Context> an invalid redeclaration of "<name>" to or
                from a function type is being ignored.

 Description    In certain modes, the compiler will allow an
                identifier to be redeclared with a different type.
                In this case, the type of the redeclaration is used.
                However, in cases where the identifier is redeclared
                to or from a function type, the redeclaration is
                ignored.

 User Action    Remove the redeclaration of the identifier.

 41.551 - NOTCONSTQUAL

 Message        <Context> the referenced type of the pointer value
                "<expression>" is const, but the referenced type of
                the target of this assignment is not.

 Description    In an assignment of two pointer types, the type
                pointed to by the destination operand must have all
                the type qualifiers of the type pointed to by the
                source operand.  In this case, the type pointed to by
                the source has the const type qualifier, but the type
                pointed to by the destination does not.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.

 41.552 - NOTEXPECTING

 Message        Error parsing <what>.  Found "<found>" when expecting
                <expecting>.

 Description    While parsing the program, the compiler has
                encountered something unexpected.  The message will
                detail what the compiler was trying to parse and the
                item that was invalid, and will also produce a list
                of those items it was expecting to find.

 User Action    Correct the offending section of the program.

 41.553 - NOTINTRINSIC

 Message        The function "<routine name>" is not a known
                intrinsic function and cannot be used with #pragma
                function.  The function is unaffected by this pragma.

 Description    A function identifier specified in a #pragma function
                directive is not a valid intrinsic function on this
                platform.  The function is thus never treated as an
                intrinsic, and so #pragma function can never be
                applicable to it.  Perhaps the name was misspelled,
                or perhaps the function was thought to be intrinsic,
                possibly because it is intrinsic on some other
                platform.  In the latter case, the desired result,
                that the function not be treated as intrinsic, would
                happen with or without the pragma.

 User Action    Either correct the identifier spelling or remove the
                use of the pragma.

 41.554 - NOTLOCALPARM

 Message        <Context> "<identifier>" is not a local parameter.

 Description    The second argument to the variable argument list
                va_start macro is not a formal parameter of the
                current function.  The second argument to va_start
                should be the rightmost parameter in the function
                definition.

 User Action    Correct the second argument to va_start.

 41.555 - NOTONEORZERO

 Message        <Context> the value of "<expression>" is neither 0
                nor 1.

 Description    The __builtin_va_start macro has been used
                incorrectly.

 User Action    Correct the use of the macro.

 41.556 - NOTPARM

 Message        <Context> <name> is not a parameter.

 Description    The identifier name in the parameter declaration does
                not match a name in the identifier list of an
                old-style function definition.

 User Action    Correct either the identifier in the declaration or
                in the identifier list so that they match.  Compaq
                also recommends that old-style function definitions
                be replaced by prototype-format definitions.

 41.557 - NOTPOSINT

 Message        <Context> the array bound "<expression>" is not a
                positive integer.

 Description    The compiler has encountered an array-bounds
                specifier that is either zero or negative.
                Array-bounds specifiers must be positive integer
                constants.

 User Action    Correct the array-bounds specifier

 41.558 - NOTRESTQUAL

 Message        <Context> the referenced type of the pointer value
                "<expression>" is restrict, but the referenced type
                of the target of this assignment is not.

 Description    In an assignment of two pointer types, the type
                pointed to by the destination operand must have all
                the type qualifiers of the type pointed to by the
                source operand.  In this case, the type pointed to by
                the source has the restrict type qualifier, but the
                type pointed to by the destination does not.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.  Note that
                care should be taken in assigning to a restricted
                pointer type.

 41.559 - NOTRIGHTMOST

 Message        <Context> "<identifier>" is not the rightmost
                parameter to "<function>".

 Description    The second argument to va_start was not the rightmost
                parameter in the variable parameter list in the
                function definition.  This is an invalid argument to
                va_start.  Other compilers might not accept this
                program.

 User Action    Update the second argument to va_start to use the
                rightmost parameter.

 41.560 - NOTSCALARCTRL

 Message        The controlling expression "<expression>" has <type>
                type, which is not scalar.

 Description    An execution control expression does not have scalar
                type.  This is not valid.  An example of an execution
                control expression is the expression following the
                while keyword in a while statement.

 User Action    Change the control expression to have scalar type.

 41.561 - NOTTYPEDEF

 Message        <Context> "<name>" does not name a type.

 Description    This message is output when the compiler encounters
                an identifier that it believes is a typedef and no
                valid typedef by this name is defined in the current
                scope.  This most often occurs when there was an
                error in the declaration of the typedef name.

 User Action    Correct the declaration of typedef.

 41.562 - NOTUNALQUA

 Message        <Context> the referenced type of the pointer value
                "<expression>" is __unaligned, but the referenced
                type of the target of this assignment is not.

 Description    In an assignment of two pointer types, the type
                pointed to by the destination operand must have all
                the type qualifiers of the type pointed to by the
                source operand.  In this case, the type pointed to by
                the source has the __unaligned type qualifier, but
                the type pointed to by the destination does not.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.

 41.563 - NOTVOLQUAL

 Message        <Context> the referenced type of the pointer value
                "<expression>" is volatile, but the referenced type
                of the target of this assignment is not.

 Description    In an assignment of two pointer types, the type
                pointed to by the destination operand must have all
                the type qualifiers of the type pointed to by the
                source operand.  In this case, the type pointed to by
                the source has the volatile type qualifier, but the
                type pointed to by the destination does not.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.

 41.564 - NOTYPES

 Message        Declaration has no type or storage class.

 Description    A file-scope declaration contains no type and no
                storage-class specifier.  In some modes, the Compaq C
                compiler will treat this as a tentative definition of
                an int variable.  Accepting this declaration is an
                extension to standard C provided for compatibility
                with other compilers.

 User Action    Rewrite the declaration to contain a data type and/or
                storage class.

 41.565 - NOUNIQFORMALS

 Message        Non-unique formal parameter definition.

 Description    The same name has been used for more than one formal
                parameter in a macro definition.  Any occurrence of
                the name in the macro body will correspond to the
                last formal parameter given this name.

 User Action    Each macro formal parameter should have a unique
                name.

 41.566 - NOWHILE

 Message        Missing "while".

 Description    While processing a do statement, the compiler did not
                find a while clause.

 User Action    Supply a while clause for the do statement.

 41.567 - OBJECTTOOBIG

 Message        The size of "<name>" exceeds the maximum size of an
                object allowed on this platform which is <size>
                bytes.

 Description    An object has been declared with a size that is too
                large for this platform.

 User Action    Reduce the size of the object.

 41.568 - OKCPPINARGS

 Message        "#<directive>" directive within a macro argument list
                is not portable.

 Description    Compaq C/C++ will allow certain directives to appear
                within the argument list of a macro invocation.  This
                might not be portable.

 User Action    If possible, rewrite the macro invocation.

 41.569 - OPENBRACE

 Message        Missing "{".

 Description    The compiler was expecting an open brace, but one was
                not found.

 User Action    Correct the program syntax.

 41.570 - OPENCOMMENT

 Message        A comment is not terminated.

 Description    The end of a file was reached while within a comment.
                The message will indicate the start of the comment.
                All source files, even those included via the
                #include preprocessing directive, must not end in a
                pending comment.

 User Action    Terminate the comment before the end of the source
                file.

 41.571 - OPENPAREN

 Message        Missing "(".

 Description    The compiler was expecting an open parenthesis, but
                one was not found.

 User Action    Correct the program syntax.

 41.572 - OPTIMIZEPOP

 Message        This "restore" has underflowed the pragma optimize
                stack.  No corresponding "save" was found.

 Description    The optimize stack, managed by the #pragma optimize
                and #pragma environment directives, contains more
                restores than saves.  This could signify a coding or
                logic error in the program.

 User Action    Make sure each restore has a corresponding save.

 41.573 - OPTLEVEL

 Message        Invalid optimization level <number>, defaulted to
                <number>.

 Description    An optimization level that is outside the range of
                valid optimization levels has been specified.  The
                compiler will default to the stated level.

 User Action    Supply a valid optimization level on the command
                line.

 41.574 - OTHERDECLUSED

 Message        <Context> "<name>" is not declared in a scope active
                at this point in the compilation.  However, there is
                a declaration of this identifer with extern storage
                class in another scope at <where>.  This declaration
                will be used.

 Description    In some modes, if the compiler cannot find the
                declaration of an object in the current scope, it
                will search other scopes for extern declarations of
                that object.  If it finds such a declaration, it will
                be used.  Note that this is a language extension
                provided for compatibility with other compilers.

 User Action    Declare the object so that it is visible at all
                places it is referenced.

 41.575 - OTHERMEMBER

 Message        <Context> "<name>" is a member of another struct or
                union.

 Description    In certain modes, the compiler will allow a struct or
                union reference whose right operand is not a member
                of the struct or union type of the left operand.
                This is allowed for compatibility with other
                compilers.

 User Action    Correct the struct or union reference so that the
                member specifier is a member of the type of the left
                operand.

 41.576 - OUTARGPREC

 Message        <Context> the type of this argument to <function
                name> is not appropriate for the precision argument
                of the conversion specifier "<incorrect conversion>".
                Behavior can be unpredictable.

 Description    This argument corresponds to an output precision
                specification.  C requires that this argument have
                integer type, and it does not.

 User Action    Cast the argument to an int type.

 41.577 - OUTARGWIDTH

 Message        <Context> the type of this argument to <function
                name> is not appropriate for the width argument of
                the conversion specifier "<incorrect conversion>".
                Behavior can be unpredictable.

 Description    This argument corresponds to an output width
                specifier.  C requires that this argument have
                integer type, and it does not.

 User Action    Cast the argument to an int type.

 41.578 - OUTFLOATINT

 Message        <Context> this argument to <function name> and
                conversion specifier "<incorrect conversion>" combine
                integer and floating-point types.  Behavior can be
                unpredictable.

 Description    The compiler has detected an output conversion
                specifier whose data type does not match its
                corresponding argument in a way that will cause
                unpredictable behavior.

 User Action    Modify either the argument or the conversion
                specifier so that they match.

 41.579 - OUTSTRINGTYPE

 Message        <Context> this argument to <function name> is of
                "<type name>" type and is not appropriate for the
                conversion specifier "<incorrect conversion>".  The
                value will be formatted in an unintended manner.

 Description    The compiler has detected a string conversion
                specifier that does not match its corresponding
                argument.  This might not have been what you
                intended.

 User Action    Modify either the argument or the conversion
                specifier so that they match.

 41.580 - OUTTOOFEW

 Message        <Context> the number of conversion specifiers to
                <function name> exceeds the number of values to be
                converted.  Conversion specifiers from "<last valid
                conversion>" onward will process meaningless and
                perhaps invalid data.

 Description    The number of conversion specifiers is greater than
                the number of values to be converted as specified in
                the parameter list.  This is probably not what you
                intended.

 User Action    Make sure the number of conversion specifiers match
                the values to be converted.

 41.581 - OUTTOOMANY

 Message        <Context> additional arguments to <function name> are
                provided for which there are no conversion specifiers
                in the format string.  Arguments from "<last
                expression>" onward will be evaluated, but not
                processed by <function name>.

 Description    The number of conversion specifiers is less than the
                number of values to be converted as specified in the
                parameter list.  This is probably not what you
                intended.

 User Action    Make sure the number of conversion specifiers match
                the values to be converted.

 41.582 - OUTTYPELEN

 Message        <Context> this argument to <function name> is of
                "<typeclass>" type and is not appropriate for the
                conversion specifier "<incorrect conversion>".  The
                value might be truncated or formatted in an
                unintended manner.

 Description    The compiler has detected an output conversion
                specifier that does not match its corresponding
                argument.  This might not have been what you
                intended.

 User Action    Modify either the argument or the conversion
                specifier so that they match.

 41.583 - OUTVARORDER

 Message        <Context> variable ordering is used in a conversion
                specifier for <function name>.  If variable ordering
                is used, it must be specified for all conversions.

 Description    A conversion specification can contain only one type
                of conversion specification - % or %n$.  Mixing them
                will cause unpredictable behavior.

 User Action    Change the format specification to use only one type
                of conversion specification.

 41.584 - PACKSTACKPOP

 Message        This "pop" has underflowed the pragma <stack name>
                stack.  No corresponding "push" was found.

 Description    The member_alignment/pack stack, managed by the
                #pragma pack and #pragma member_alignment directives,
                contains more pops/restores than pushes/saves, This
                could signify a coding or logic error in the program.

 User Action    Make sure each pop/restore has a corresponding
                push/save.

 41.585 - PARAMREDECL

 Message        <Context> "<name>" overrides a formal parameter
                declared at <where>.

 Description    A declaration within a function body redeclares a
                formal parameter.

 User Action    Change the name of either the formal parameter or the
                declared variable.

 41.586 - PARENLITERAL

 Message        <Context> accepting a string literal in parentheses
                as the initializer for a character array is a
                language extension.

 Description    The compiler accepts this kind of initializer for
                compatibility with many other C compilers.  According
                to the C standard, a string literal in parentheses is
                a character pointer.  Therefore, this program does
                not conform to the standard and may be rejected by
                other compilers.

 User Action    Remove the parentheses.

 41.587 - PARMINCOMP

 Message        <Context> the parameter <name> has an incomplete
                type.

 Description    The parameter of an old-style function definition has
                an incomplete type.  This is not valid.

 User Action    Complete the type before the declaration of the
                parameter.  Compaq also recommends that old-style
                function definitions be replaced by prototype-format
                definitions.

 41.588 - PARMINIT

 Message        <Context> a parameter declaration cannot include an
                initializer.

 Description    The parameter declaration list of an old-style
                function definition included an initializer.  This is
                not valid.

 User Action    Remove the initializer from the declaration and
                initialize the parameter in the function body.
                Compaq also recommends that old-style function
                definitions be replaced by prototype-format
                definitions.

 41.589 - PARMSTORCLS

 Message        <Context> a parameter has an explicit storage class
                other than "register".

 Description    The only storage class that can be specified for a
                formal parameter is "register".

 User Action    Either remove the storage class or use "register" if
                that is desired.

 41.590 - PARMSTORMOD

 Message        <Context> a parameter cannot have a storage class
                modifier.

 Description    A formal parameter cannot be declared with a storage
                class modifier.

 User Action    Remove the storage class modifier.

 41.591 - PARMTYPLIST

 Message        Ill-formed parameter type list.

 Description    While processing a function declaration, an invalid
                parameter type list was encountered.

 User Action    Correct the program syntax.

 41.592 - PARNOIDENT

 Message        Missing identifier.

 Description    While processing an old-style function definition,
                the compiler was expecting an identifier, but one was
                not found.

 User Action    Correct the program syntax.  Compaq also recommends
                that old-style function definitions be replaced by
                prototype-format definitions.

 41.593 - PDBOPERR

 Message        Error opening PDB file <text>:  <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.594 - PDBTYPERR

 Message        Error adding type record to PDB file:  <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.595 - PDOINDEXNOTPRIV

 Message        index variable of PDO <text> is not a private
                variable

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.596 - PDONEINSTATIC

 Message        pdone <text> in statically-scheduled PDO will be
                ignored

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.597 - PDONENOTINPDO

 Message        pdone <text> is not nested in a PDO

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.598 - PLUSWSTOCLS

 Message        The use of the <spelling> option has prevented this
                redeclaration of "<variable>" from changing its
                linkage.  The linkage will be that specified by the
                earlier declaration at <location>.

 Description    In many cases, the compiler will allow a
                redeclaration of an item to change its linkage.  For
                example, in most modes, if an object is declared with
                extern linkage and later with static linkage, the
                compiler will give it static linkage.  This changing
                of linkage usually causes a warning to be issued.
                However, in cases where interfile optimization has
                been selected (-ifo on UNIX, /PLUS_LIST_OPTIMIZE on
                OpenVMS), the compiler cannot allow a later
                declaration to modify the linkage of a previous
                declaration.

 User Action    Change all declarations to use the same linkage.

 41.599 - POINTERINTCAST

 Message        <Context> the 64-bit pointer "<expression>" is being
                cast to an integer type that is only <size> bits in
                size.  This behavior is undefined.

 Description    Casting a 64-bit pointer to a shorter integer type is
                undefined behavior.  This also could indicate code
                that relies on pointers and integers being the same
                size.  The code will cause an unexpected loss of data
                on 64-bit platforms.

 User Action    If this is the intended behavior, first cast the
                pointer to a 64-bit integer, then cast the result to
                the desired integer type.

 41.600 - POPMISMATCH

 Message        The member alignment popped/restored with pragma
                <pragma name> was saved using pragma <pragma name>.
                The member alignment restored will take effect.

 Description    Compaq C supports two forms of the member alignment
                directives.  One begins with #pragma pack, the other
                with #pragma member_alignment.  A program has mixed
                the pack and the member_alignment form of the
                directives in a way that is not recommended.  This
                might indicate a programming error.

 User Action    If a member alignment has been saved by one form of
                the member-alignment directive, it should be restored
                by the same form of the directive.

 41.601 - PRAGIGNORE

 Message        The pointer size control <name> pragma is not active.
                Pragma is ignored.

 Description    Either one of the pragmas that used to control
                pointer size has been specified on a platform that
                does not support mixed pointer sizes, or the #pragma
                pointer_size directive has been used without the
                appropriate command-line option or qualifier.  In all
                cases, the directive is ignored.

 User Action    Either remove the directive or add the appropriate
                command-line option.

 41.602 - PRAGMA

 Message        Strict standard C extension:  A #pragma directive was
                encountered.

 Description    As the purpose of a #pragma directive is to specify
                implementation-defined behavior, it is likely that
                other C compilers will not treat this pragma in the
                same way Compaq C/C++ will.

 User Action    Be aware of this if you wish to port the program.

 41.603 - PRAGMAIDENT

 Message        Please use the preferred "#pragma ident" directive in
                place of the "#ident" directive.

 Description    The #ident directive is a language extension.  Other
                C compilers might not accept it.

 User Action    Use the portable #pragma ident directive instead.

 41.604 - PRAGMAINBLK

 Message        The pragma <name> cannot be used inside a function
                block.

 Description    This #pragma directive is only permitted at file
                scope, outside of all function definitions.

 User Action    Move the directive to file scope, preceding the
                function definition that is to be affected.  To limit
                the pragma to just that particular function, sandwich
                the #pragma and the function definition between a
                pair of matching pragmas with the save and restore
                keywords.

 41.605 - PRAGMAMOD

 Message        Please use the preferred "#pragma module" directive
                in place of the "#module" directive.

 Description    The #module directive is a language extension.  Other
                C compilers are unlikely to accept it.

 User Action    Use the portable #pragma module directive instead.

 41.606 - PRAGMAOPTDUP

 Message        This #pragma optimize has already modified this
                optimization setting.  This setting will replace the
                old.

 Description    A #pragma optimize has specified the same
                optimization setting more than once.  The later
                setting will replace the previous one.

 User Action    Remove the earlier setting.

 41.607 - PRAGMAOPTLVL

 Message        The level set by a #pragma optimize directive must be
                between 0 and 5.  Pragma is ignored.

 Description    A #pragma optimize has tried to set the optimization
                level to a value outside the valid range.  The
                compiler will ignore the directive.

 User Action    Set the optimization level to a number from 0 to 5.

 41.608 - PRAGMAOPTSPEC

 Message        Setting speculation control is not available on this
                platform.  The setting will be ignored.

 Description    Setting speculation control in only available on
                certain platforms.  Trying to modify the setting on
                other platforms will have no effect.

 User Action    Remove the speculation setting.

 41.609 - PRAGMAOPTZERO

 Message        If a #pragma optimize specifies level=0, that must be
                the only optimization setting specified by the
                pragma.  Pragma is ignored.

 Description    If a #pragma optimize specifies level=0, that must be
                the only optimization setting specified by the
                pragma.  The compiler will ignore the directive.

 User Action    Remove the other settings specified by the directive.

 41.610 - PREOPTE

 Message        An error was detected in the processing of a <option
                spelling> option:  <#define or #undefine problem>

 Description    An error was encountered during the processing of a
                macro definition specified on the command line.  The
                message should provide additional information about
                the error.

 User Action    Correct the command line argument.

 41.611 - PREOPTW

 Message        A problem was detected in the processing of a <option
                spelling> option:  <#define or #undefine problem>

 Description    A problem was encountered during the processing of a
                macro definition specified on the command line.  The
                message should provide additional information about
                the problem.

 User Action    Correct the command-line argument.

 41.612 - PREPROCOUT

 Message        An error occurred while attempting to open the
                preprocessor output file:  <problem>.

 Description    An unexpected error occurred during the creation of a
                preprocessor output file or a dependency file.  The
                message text will contain additional information
                about the failure.

 User Action    Correct the condition that caused the failure.

 41.613 - PRIVATENOTSHARE

 Message        variable <text> on a local or lastlocal list is not
                declared in a shared scope.

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.614 - PROMOTMATCH

 Message        <Context> the promoted type of <name> is incompatible
                with the type of the corresponding parameter in a
                prior declaration.

 Description    The promoted type of a parameter of an old-style
                function declaration does not match the type given
                earlier in a prototype declaration of the function.

 User Action    Correct the data types so they match.  Compaq also
                recommends that old-style function definitions be
                replaced by prototype-format definitions.

 41.615 - PROMOTMATCHW

 Message        <Context> the promoted type of <name> is incompatible
                with the type of the corresponding parameter in a
                prior declaration.

 Description    The promoted interger or floating type of a parameter
                of an old-style function declaration does not match
                the integer or floating type given earlier in a
                prototype declaration of the function.

 User Action    Correct the data types so they match.  Compaq also
                recommends that old-style function definitions be
                replaced by prototype-format definitions.

 41.616 - PROTOF

 Message        An error occurred while attempting to open the
                prototype output file:  <problem>.

 Description    An unexpected error occurred during the creation of a
                prototype output file.  The message text will contain
                additional information about the failure.

 User Action    Correct the condition that caused the failure.

 41.617 - PROTOSCOPE

 Message        The type "<type>" has been declared within and is
                limited to a function prototype scope.  It will not
                be compatible with an identical type declared in
                another scope.  This might not be what you intended.

 Description    A type is declared within a function prototype.  The
                type is local to the function prototype and will not
                be visible outside the prototype.  This might cause
                unexpected errors later in the compilation.

 User Action    Declare the type before the function prototype.

 41.618 - PROTOSCOPE2

 Message        <Context> the struct type was previously declared
                with prototype scope in this function.  Now it is
                declared with a different prototype scope.

 Description    This function declaration contains a parameter that
                is a pointer to a type that has prototype scope, and
                an earlier declaration of the function contains a
                parameter that is also a pointer to a type that has a
                different prototype scope.  In most compiler modes
                this will cause the function redeclarations to
                differ.

 User Action    Avoid declaring types with function prototype scope.

 41.619 - PROTOSCOPE3

 Message        <Context> the struct type was previously declared in
                this function with prototype scope.  Now it is
                declared with file scope.

 Description    This message is generated when the compiler first
                encounters a function prototype that declares a type
                with prototype scope, and then later sees a second
                declaration or definition of that same function with
                the parameter declared using the same type declared
                at file scope.  For example:  void foo(struct S { int
                a; int b;} *s); struct S { int a; int b;} s; void
                foo(struct S *s);

 User Action    Declare the type at file scope before the first
                prototype declaration.

 41.620 - PROTOSTATIC

 Message        The extracted header file contains prototypes for
                static functions, which should be removed before
                including the header in a source file other than the
                originator.

 Description    When extracting function prototype declarations, the
                compiler has encountered a static function.  The
                prototype declaration placed in the output .H file
                should be removed if the .H file is included in any
                source other than that used to create the .H file.
                This is because those static functions may not be
                declared in the other files.  This message can only
                be generated when the compiler has been invoked with
                the option to extract function prototype
                declarations, and the suboption to generate
                prototypes for static functions has also been
                specified.

 User Action    Be aware of this if you wish to use the output .H
                file in a file other than the one from which the .H
                file was generated.

 41.621 - PROTOTAG

 Message        The extracted header file contains prototypes with
                tag names, which should be moved to after the tag
                name declaration.

 Description    When extracting function prototype declarations, the
                compiler has encountered a parameter type specifier
                that references a tag.  Because the created prototype
                will use this tag, it should be moved after the tag
                declaration in the final compilation source.  This
                message can only be generated when the compiler has
                been invoked with the option to extract function
                prototype declarations.

 User Action    Be aware of this if you wish to use the output .H
                file.

 41.622 - PROTOTYPEDEF

 Message        The extracted header file contains prototypes with
                typedefs, which should be moved to after the typedef
                declaration.

 Description    When extracting function prototype declarations, the
                compiler has encountered a parameter type specifier
                that is defined by a typedef.  Because the created
                prototype will use this typedef, it should be moved
                after the typedef declaration in the final
                compilation source.  This message can only be
                generated when the compiler has been invoked with the
                option to extract function prototype declarations.

 User Action    Be aware of this if you wish to use the output .H
                file.

 41.623 - PROTOVLA

 Message        The extracted header file contains prototypes for
                functions which have formal parameters with variably
                modified type.  All variable length bound specifiers
                have been replaced by a "*" signifying a variable
                length array of unspecified size.

 Description    When extracting function prototype declarations, the
                compiler has encountered a function or functions
                which have a formal parameter with variably modified
                type.  The compiler is unable to recreate the source
                that specified the number of array elements.
                Instead, the output prototype will use the "*" bounds
                specifier.  Note that the output prototype is valid
                for the function.

 User Action    Be aware that the compiler has made this minor change
                to the function declaration.

 41.624 - PSECTFIRST

 Message        "#pragma <psect_type>" directive must precede any
                declarations.

 Description    The #pragma code_psect or #pragma linkage_psect
                directives must appear before any function or
                external data definitions.

 User Action    Place the directive earlier in the source program.

 41.625 - PSECTTOOLONG

 Message        Psect name is too long (maximum is 31 characters).
                Pragma is ignored.

 Description    A psect name specified in a #pragma code_psect,
                #pragma linkage_psect, or #pragma extern_model
                directive must be less than 32 characters in length.
                The compiler will ignore the directive.

 User Action    Shorten the psect name.

 41.626 - PTRINTTOLONG

 Message        <Context> "<expression>", a pointer to a 32-bit
                integer, is being cast to a pointer to a 64-bit
                integer.  This may lead to unintended results.

 Description    On many platforms long integers are the same size as
                integers, and casting a pointer to int to a pointer
                to long int is not a problem.  On this platform long
                integers are 64-bits.  This cast could indicate a
                potential porting problem.

 User Action    Verify that this is the intended behavior.

 41.627 - PTRLONGTOINT

 Message        <Context> "<expression>", a pointer to a 64-bit
                integer, is being cast to a pointer to a 32-bit
                integer.  This may lead to unintended results.

 Description    On many platforms long integers are the same size as
                integers, and casting a pointer to long int to a
                pointer to int is not a problem.  On this platform
                long integers are 64-bits.  This cast could indicate
                a potential porting problem.

 User Action    Verify that this is the intended behavior.

 41.628 - PTRMISMATCH

 Message        <Context> the referenced type of the pointer value
                "<expression>" is "<type>", which is not compatible
                with "<target type>".

 Description    In a pointer assignment, the type pointed to by the
                source pointer is different than the type pointed to
                by the destination pointer.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.

 41.629 - PTRMISMATCH1

 Message        <Context> the referenced type of the pointer value
                "<expression>" is "<type>", which is not compatible
                with "<target type>" because they differ by
                signed/unsigned attribute.

 Description    In a pointer assignment, the type pointed to by the
                source pointer is different than the type pointed to
                by the destination pointer.  In this case the types
                differ because the signed/unsigned type attributes
                are different.

 User Action    Correct the assignment to use compatible types.  This
                can be done by inserting a cast operand.

 41.630 - QUALAFTCOMMA

 Message        Type qualifier(s) after a comma ignored.

 Description    In Microsoft mode, the compiler used to accept a type
                qualifier after a comma used for separating
                declarators.  Because Microsoft no longer accepts
                this type of declaration, Compaq C will no longer
                accept it.  The type qualifier is ignored.

 User Action    Remove the type qualifier.

 41.631 - QUALFUNCRET

 Message        The return type of "<name>" is a qualified type.
                Type qualifiers have no meaning for function return
                values.

 Description    A type qualifier has been used as part of the type of
                a function return value.  The type qualifiers have no
                meaning for function return values.

 User Action    Remove the type qualifier.

 41.632 - QUALISPTR

 Message        <Context> "<expression>" has a pointer type, but
                occurs in a context that expects a struct or union.

 Description    The left operand of the struct/union member operator
                (.) is a pointer type instead of a struct or union
                type.

 User Action    Specify the correct struct or union type object as
                the left operand.  In cases where the left operand is
                a pointer to a struct or union, it might be possible
                to use the struct/union pointer operator (->) instead
                of the member operator.

 41.633 - QUALNOTUS

 Message        <Context> the qualifier for "<name>" is not a struct
                or union.

 Description    In certain modes, the compiler will allow the left
                operand of a struct/union member reference to be
                certain types other than a struct or union type.  In
                these cases the compiler will issue a warning that
                this non-standard syntax is being accepted.

 User Action    Modify the left operand to be a struct or union type.

 41.634 - QUESTCOMPARE

 Message        <Context> the unsigned expression "<expr>" is being
                compared with a relational operator to a constant
                whose value is not greater than zero.  This might not
                be what you intended.

 Description    An ordered comparison between an unsigned value and a
                constant that is less than or equal to zero often
                indicates a programming error.  Humans consider an
                unsigned value to be larger than any negative value.
                But in C a negative value is converted to an unsigned
                value before the comparison, so any negative value
                compares larger than most unsigned values.  An
                ordered comparison of an unsigned value to zero
                suggests a programming error because the value can
                only be greater than or equal to zero.  If the code
                is correct, the comparison could be more clearly
                coded by testing for equality with zero.

 User Action    Cast (or otherwise rewrite) one of the operands of
                the compare to match the signedness of the other
                operand, or compare for equality with zero.

 41.635 - QUESTCOMPARE1

 Message        <Context> the unsigned expression "<expr>" is being
                compared with an equality operator to a constant
                whose value is negative.  This might not be what you
                intended.

 Description    An unsigned value and a signed constant whose value
                is negative are being compared for equality.
                Logically, these value would never be equal.  But in
                C the negative constant value is converted to an
                unsigned value before the comparison, and may well
                compare equal.

 User Action    Cast (or otherwise rewrite) one of the operands of
                the compare to match the signedness of the other
                operand.

 41.636 - QUESTCOMPARE2

 Message        <Context> the unsigned expression "<expr>" is being
                tested to see if it is greater than zero.  This might
                not be what you intended.

 Description    An ordered comparison between an unsigned value and a
                constant that is zero may indicate a programming
                error.  Often C programmers do not realize that an
                expression has an unsigned type.  If the code is
                correct, the comparison could be more clearly coded
                by testing for equality with zero.

 User Action    Cast (or otherwise rewrite) one of the operands of
                the compare to match the signedness of the other
                operand, or compare for equality with zero.

 41.637 - READONLYEXT

 Message        readonly is a language extension.

 Description    The readonly storage class modifier is a language
                extension of Compaq C.  Other C compilers might not
                successfully compile a program that uses the
                extension.

 User Action    Be aware of this extension if you wish to port the
                code.

 41.638 - REDECLNOPARAM

 Message        <Context> the declaration of the function "<name>"
                containing no parameter information replaces an
                earlier declaration of "<name>" at <location>.

 Description    A function which was previously declared with a
                function prototype has been redeclared without
                parameter information.  This is a violation of the C
                standard.  The Compaq C compiler will accept this for
                compatibility with older compilers.

 User Action    Remove one of the declarations.

 41.639 - REDEF

 Message        This declaration contains a redefinition of "<name>".
                The previous declaration is at <location>.

 Description    This declaration has tried to redefine an identifier
                that was defined earlier.  This is not valid.

 User Action    Remove one of the definitions.

 41.640 - REDEFSTRUCT

 Message        <Context> the struct "<name>" is redefined.

 Description    The struct tag declared in this declaration is
                already declared as a struct tag by another
                declaration.

 User Action    Change the name of the struct tag.

 41.641 - REDEFTAG

 Message        <Context> the tag "<name>" is redeclared.

 Description    The tag declared in this declaration is already
                declared.

 User Action    Change the name of the tag.

 41.642 - REDEFUNION

 Message        <Context> the union "<name>" is redefined.

 Description    The union tag declared in this declaration is already
                declared as a union tag by another declaration.

 User Action    Change the name of the union tag.

 41.643 - REFBEFORETLS

 Message        <Context> the reference to the variable "<var>"
                lexically precedes its use in a #pragma omp
                threadprivate directive.  This is not allowed.

 Description    An OpenMP threadprivate directive must lexically
                precede all references to any varible in its variable
                list.  The compiler had detected a reference to a
                variable which appears in a subsequent threadprivate
                directive.

 User Action    Move the threadprivate directive before the
                reference.

 41.644 - REGCONFLICT

 Message        Conflicting required uses of register(s):  <text>

 Description    The special linkage associated with a function has
                specified that one of the standard calling convention
                registers be used in a nonstandard way without also
                replacing its standard use with another register.  An
                example would be a function that returns an int value
                using a special linkage that states R0 is not used,
                and does not specify another register to hold the
                return value.

 User Action    Correct the #pragma linkage directive that specifies
                the special linkage.

 41.645 - REGNOSHARE

 Message        <Context> noshare cannot be used with the register
                storage class.  Modifier noshare is ignored.

 Description    The storage class modifier noshare is meaningless for
                objects declared with register storage class.  The
                compiler ignores the noshare.

 User Action    Remove the noshare storage class modifier.

 41.646 - RELOCALIGNMENT

 Message        An initialization requiring relocation is not
                correctly aligned at Psect <text> + <number>

 Description    On some platforms, initializing an object to an
                address requires that the object be aligned on a
                natural boundary.

 User Action    Either remove the static initializer or align the
                object being initialized.

 41.647 - RESMISMATCH

 Message        The pointer size restored with pragma <pragma name>
                was saved using pragma <pragma name>.  The pointer
                size restored will take effect.

 Description    Compaq C supports two forms of the pointer-size
                directives.  One begins with #pragma pointer_size,
                the other with #pragma required_pointer_size.  A
                program has mixed the required_pointer_size and the
                pointer_size form of the pointer-size directives in a
                way that is not recommended.  This might indicate a
                programming error.

 User Action    If a pointer size has been saved by one form of the
                pointer-size directive, it should be restored by the
                same form of the directive.

 41.648 - RESTRICTEXT

 Message        The __restrict type qualifier is a language
                extension.

 Description    The use of the __restrict type qualifier might not be
                portable to other C compilers.

 User Action    Be aware of this portability concern.

 41.649 - RESTRICTEXT1

 Message        Placement of the __restrict qualifier within the
                array-bound specifier of a formal parameter
                declaration is a language extension.

 Description    The use of the restrict type qualifier within the
                array bound specifier of a formal parameter is a
                language extension supported by Compaq C.  Other C
                compilers might not successfully compile a program
                that uses this extension.

 User Action    Be aware of this if you wish to port the program.

 41.650 - RESTRICTEXT2

 Message        The restrict type qualifier is a new feature in C99.
                Other C compilers might not successfully compile a
                program that uses this feature.

 Description    The use of the restrict type qualifier might not be
                portable to other C compilers.

 User Action    Be aware of this portability concern.

 41.651 - RESTRICTNOP

 Message        The restrict type qualifier can only be applied to a
                pointer type that points to an object or incomplete
                type.  Qualifier is ignored.

 Description    The restrict type qualifier has been used with an
                invalid type.  Only pointers to object or incomplete
                types can have the restrict type qualifier.  The
                compiler will ignore the type qualifier in all other
                cases.

 User Action    Remove the type qualifier or change the type to one
                that accepts the qualifier.

 41.652 - RETLOCALADDR

 Message        This return statement returns the address of a local
                variable.  The address returned cannot be used by the
                caller in any meaningful way.

 Description    The storage for all local variables is undefined
                after a function has returned.  Returning the address
                of a local variable will cause undefined behavior
                when the return value is used in the calling program.

 User Action    Either change the variable to have static storage
                duration, use malloc to allocate the storage (and
                free it after its use), or change the interface to
                have the caller pass in the address at which data is
                to be stored.

 41.653 - RETVALTOOBIG

 Message        The size of return value of "<name>" exceeds the
                maximum size of an object allowed on this platform
                which is <size> bytes.

 Description    A function's return value is too large for this
                platform.

 User Action    Reduce the size of the return value.

 41.654 - RIGHTSHIFTOVR

 Message        <Context> the right shift count "<number>" is greater
                than or equal to the size of the unpromoted operand
                "<expression>".

 Description    The compiler has detected a right shift count that is
                greater than or equal to the size of the operand to
                be shifted (before application of the integral
                promotions).  This might not be what you intended, as
                the result contains none of the original bits of the
                operand.  For an unsigned operand, the result is
                always 0.  For a signed operand, the result is either
                0 or -1, depending on whether or not the operand had
                a negative value.  The same result would be achieved
                by shifting a signed operand one fewer bits.

 User Action    Correct the shift count (or replace the expression by
                0 if appropriate).

 41.655 - RTLMAPNOTFOUND

 Message        C RTL mapping information for RTL <name> not found.
                Could not access <image_name>.

 Description    In most cases, the Compaq C compiler will
                automatically map names of C standard library
                functions to their corresponding names in the Compaq
                C RTL shareable image.  In many cases, this is done
                simply by adding a "DECC$" prefix to the name.  In
                order for this mapping to work, the compiler accesses
                an RTL mapping table.  This message is issued if the
                compiler was unable to open the mapping table.  In
                these cases, no name mapping will be performed.  The
                most common cause of this message is specifying bad
                name in the /PREFIX=RTL="name" compiler qualifier.

 User Action    Specify a valid RTL on the /PREFIX=RTL qualifier.  If
                no qualifier was used, it might be necessary to
                reinstall the compiler and/or RTL.  For more
                information consult the Compaq C Run-time Library
                Manual for OpenVMS Systems.

 41.656 - RTLMISMATCH

 Message        Compaq C RTL prefix table version mismatch:  RTL
                table is V<major>.<minor>, compiler needs
                V<major>.<minor>.

 Description    In most cases, the Compaq C compiler will
                automatically map names of C standard library
                functions to their corresponding names in the Compaq
                C RTL shareable image.  In many cases, this is done
                simpl by adding a "DECC$" prefix to the name.  In
                order for this mapping to work, the compiler accesses
                an RTL mapping table.  The compiler also requires
                that the version of the RTL mapping table be
                compatible with the version of the compiler.  In
                cases where the versions are incompatible, this
                message is generated.  In these cases, no name
                mapping will be performed.  The most common cause of
                this message is specifying an old RTL name in the
                /PREFIX=RTL="name" compiler qualifier.

 User Action    Specify a new RTL on the /PREFIX=RTL qualifier.  If
                no qualifier was used, it might be necessary to
                reinstall the compiler and/or RTL.  For more
                information, consult the Compaq C Run-time Library
                Manual for OpenVMS Systems.

 41.657 - SAMEASTYPEDEF

 Message        <Context> the extern has the same name as a
                file-scope typedef.  This is a language extension.

 Description    The program has declared an extern inside a function
                whose name matches a file-scope typedef.  This is not
                allowed by the C standard, but is accepted for
                compatibility with other C compilers.

 User Action    Change the name of the variable or the typedef.

 41.658 - SCACALL

 Message        This function contains too many parameters for SCA to
                handle.  Function parameter info will be truncated.

 Description    The parameter information for this function contains
                more data than SCA can process.  The compiler will
                truncate the parameter information.  Be aware that
                the parameter information will be incomplete.

 User Action    Simplify the parameter information.

 41.659 - SCAID2LONG

 Message        The identifier exceeds the SCA limit of <number>
                characters.  In the SCA file the name will be
                truncated to "<truncated spelling>".

 Description    The length of an identifier supported by SCA is less
                than the length of an identifier supported by the
                Compaq C compiler.  Because of this, the compiler
                will truncate an identifier name to fit the SCA
                limits.

 User Action    Either reduce the identifier name, or be aware of
                this when using SCA.

 41.660 - SCALEFACTOR

 Message        The CDD description for <name> specifies a scale
                factor of <number>.  The scale factor is being
                ignored.

 Description    Compaq C does not support scaled arithmetic.

 User Action    Verify that all computations involving this item are
                correctly scaled.

 41.661 - SCAOVFLO

 Message        Compiler Internal Error:  SCA event buffer
                overflowed.  Please submit an SPR.

 Description    When building SCA information, the compiler
                overflowed its internal buffer.  This should not
                happen.

 User Action    Please submit a problem report detailing the failure.

 41.662 - SEQUENCEEXT

 Message        <Context> allowing a comma operator is a language
                extension.

 Description    In this context the C standard does not allow the
                comma (sequence) operator.  Compaq C allows this
                syntax for compatibility with some other C compilers.
                Be aware that this syntax may not be accepted by
                other C compilers.

 User Action    If the intent is to use an expression that is not
                necessarily a constant expression, then enclose it in
                parentheses.  But if the intent of the declaration is
                to use a constant expression, then the comma operator
                cannot be used.

 41.663 - SESEMULTIEXITS

 Message        parallel directive scope <text> has multiple exits

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.664 - SESEMULTIPREDS

 Message        parallel directive scope <text> has multiple entry
                paths

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.665 - SESEVFLOW

 Message        parallel directive scope <text> is crossed by a
                VBRANCH

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.666 - SHARECONST

 Message        In this declaration, noshare has been ignored due to
                the presence of const or readonly.

 Description    A variable declared with the readonly storage class
                modifier, or the const type modifier cannot also have
                the noshare storage class modifier.  The compiler
                will ignore the noshare storage class modifier.

 User Action    Remove either the noshare storage class modifier or
                the const or readonly modifiers.

 41.667 - SHIFTCOUNT

 Message        <Context> the shift count "<number>" is negative or
                is greater than or equal to the promoted size of the
                operand "<expression>".

 Description    The compiler has detected a shift count that is
                negative or is greater than or equal to the promoted
                size of the operand to be shifted.  This behavior is
                undefined.

 User Action    Correct the shift count.

 41.668 - SHORTCIRCUIT

 Message        <Context> potential side effects from the evaluation
                of "<operand>" will not take place.  This is because
                the first operand of a logical operator is a constant
                whose value requires that this expression must not be
                evaluated.

 Description    The C language requires that if the first operand of
                a logical || or && operator determines the result of
                the expression, the second operand must not be
                evaluated.  This behavior is different from other
                operators.  The compiler has noticed that the second
                operand will generate code that may produce side
                effects that the programmer expects to take place.
                This message is to inform the user that the code
                generated for the second operand will not be
                executed.

 User Action    Replace the logical expression with its first
                operand.

 41.669 - SIGNEDKNOWN

 Message        <Context> Compaq C recognizes the standard keyword
                "signed".  This differs from the VAX C behavior.

 Description    VAX C does not recognize the "signed" keyword.
                Compaq C will allow this, even in vaxc mode.

 User Action    Be aware of this difference if you plan to compile
                the source with VAX C.

 41.670 - SIGNEDMEMBER

 Message        <Context> Compaq C recognizes the standard C keyword
                "signed" in member declarations.  The VAX C compiler
                does not and would treat the member as unsigned.

 Description    VAX C does not recognize the "signed" keyword in a
                member declaration.  VAX C will treat the member as
                an unsigned type.  Compaq C will recognize the
                keyword and declare the member as a signed type.

 User Action    Be aware of this difference if you plan to compile
                the source with VAX C.

 41.671 - SIMPLEMESSAGE

 Message        <user text>

 Description    The compiler has encountered a #pragma message
                (<quoted string>)directive.  It will output the
                message in the quoted string.

 User Action    Remove the pragma message.

 41.672 - SIZEBIT

 Message        <Context> "<expression>" is a bitfield, and so has no
                size.

 Description    A bitfield expression cannot be used as the argument
                to the sizeof operator or the __builtin_alignof
                builtin.

 User Action    Pass an expression with a valid type to the operator
                or builtin.

 41.673 - SIZEINCOMP

 Message        <Context> "<expression>" is of an incomplete type,
                and so has no size.

 Description    An expression that has incomplete type has no size
                and therefore cannot be used as the argument to the
                sizeof operator.

 User Action    Pass an expression with a valid type to the sizeof
                operator.

 41.674 - SIZEINCOMPTYP

 Message        <Context> "<type>" is an incomplete type, and so has
                no size.

 Description    A incomplete type has no size and therefore cannot be
                used as the argument to the sizeof operator.

 User Action    Pass a valid type to the sizeof operator.

 41.675 - SIZFUNVOIDTYP

 Message        <Context> "<type>" has function or void type and may
                not appear in this context.  The compiler will treat
                the type as if it were char.

 Description    A function or void type cannot be used as the
                argument of the sizeof operator or the
                __builtin_alignof builtin.  For compatibility with
                some other compilers, an output file is still
                created.  The result produced will be the same as if
                a char type was passed.  This may or may not be
                compatible with other compilers that accept this
                syntax.

 User Action    Pass a valid type to the operator or builtin.

 41.676 - STACKPOP

 Message        This "restore" has underflowed the pragma <stack
                name> stack.  No corresponding "save" was found.

 Description    One of the pointer-size stacks, managed by the
                #pragma pointer_size, #pragma require_pointer_size,
                #pragma required_vptr_size, and #pragma environment
                directives, contains more restores than saves.  This
                could signify a coding or logic error in the program.

 User Action    Make sure each restore has a corresponding save.

 41.677 - STATICIFLOAT

 Message        <Context> conversion of a link-time address constant
                to a floating type is required.  This is not allowed.

 Description    The initialization of an object with static extent
                requires a value that is a link-time constant
                expresion.  Link-time constant expressions cannot
                involve values of floating types (other than floating
                constants that are the immediate operands of casts).

 User Action    Remove the floating point types from the
                initialization.

 41.678 - STATICVLA

 Message        <Context> the static object "<name>" cannot be a
                variable length array.

 Description    Only ordinary identifiers with block scope and
                without storage class extern or static, or ordinary
                identifiers with function prototype scope can be
                declared as variable-length arrays.

 User Action    Correct the declaration.

 41.679 - STATINITWARN

 Message        <Context> the linker will be unable to perform this
                static initialization if the initializer is defined
                in a sharable image.

 Description    A static initialization will require that a link-time
                constant be truncated.  If the constant is resolved
                in a sharable image, the linker will issue a
                diagnostic and be unable to perform the
                initialization.  This message is output on OpenVMS
                systems only.

 User Action    Rewrite the static initialization so that the
                link-time constant will not be truncated.

 41.680 - STDARG

 Message        <Context> stdarg.h macros might be required if the
                address of the parameter <name> is used to index
                through a parameter list.

 Description    Some older C programs will traverse a function's
                parameter list by taking the address of one of the
                parameters and then adjusting it to get to subsequent
                parameters.  In most cases, this technique will not
                produce the desired results on Alpha.  This message
                is specific to UNIX, and is only output if -varargs
                option is specified.

 User Action    If the address is used to walk the parameter list,
                recode the function to use the standard stdarg.h
                macros.

 41.681 - STKALLEXC

 Message        Allocations to stack exceeded maximum stack size

 Description    A routine uses more stack space than is available on
                this platform.  This is most often caused by
                declaring too many large automatic variables.

 User Action    Reduce the size required by the automatic variables.

 41.682 - STOALNERR

 Message        Psect <text> alignment is insufficient for allocation
                of <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.683 - STONOTFIRST

 Message        The placement of a storage-class specifier other than
                at the beginning of the declaration specifiers in a
                declaration is an obsolescent feature.

 Description    The standard states that this style of declaration is
                obsolescent.

 User Action    Place the storage-class specifier first in the
                declaration.

 41.684 - STORCLSDCL

 Message        <Context> a storage class without a declarator is
                meaningless.

 Description    This message is generated when the compiler
                encounters certain declarations that contain a
                storage class but no declarator.  For example:
                extern struct S { int a;};

 User Action    Either remove the storage class or add a declarator
                to the declaration.

 41.685 - STOREQEXC

 Message        Allocations to <text> section exceeded growth bounds

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.686 - STORISSTAT

 Message        This redeclaration of the static initialized variable
                "<name>" will have static storage class that differs
                from the VAX C behavior.  The previous declaration is
                at <location>.

 Description    In VAX C mode, if a variable is first declared static
                and then declared extern, the variable will be given
                extern storage class.  This matches the VAX C
                behavior.  If, however, the static variable is
                initialized, the storage class will remain static.

 User Action    Be aware of this difference.

 41.687 - STORMODDCL

 Message        <Context> a storage class modifier without a
                declarator is meaningless.

 Description    This message is generated when the compiler
                encounters certain declarations that contain a
                storage class modifier but no declarator.  For
                example:  readonly struct S { int a;};

 User Action    Either remove the storage class modifier or add a
                declarator to the declaration.

 41.688 - STRCTPADDING

 Message        An additional <number> bytes of padding have been
                implicitly inserted prior to this member for proper
                alignment of this member.

 Description    The compiler has added pad bytes before a member so
                that it will be accessed efficiently.  This might not
                have been what you intended.

 User Action    Consider rearranging the order of member
                declarations.

 41.689 - STRINGCONST

 Message        Ill-formed string constant.

 Description    An invalid string constant was encountered.

 User Action    Correct the string constant.

 41.690 - STRUCTBRACE

 Message        <Context> a required set of braces is missing.

 Description    The initializer for this struct was not enclosed in
                braces.  While some compilers allow this, standard C
                requires braces around the initializer.

 User Action    Enclose the initializer in braces.

 41.691 - STRUCTLIMITSUP

 Message        <Context> Compaq C provides only limited support for
                struct/union types larger than <n> bytes.

 Description    This struct/union type is larger than can be
                represented by size_t.  While Compaq C will allow a
                type declared to be this size, uses of the type are
                not fully supported and may cause unpredictable
                behavior.

 User Action    Reduce the size of the type.

 41.692 - STRUCTOVERFLOW

 Message        Integer overflow occurred when computing the size of
                a struct or union type.

 Description    An struct or union type is larger than allowed on
                this platform.  Note that as the compiler computes
                the size of the type in bits, the limit on the size
                of struct/union types is eight times smaller than the
                size of other types.

 User Action    Reduce the size of the struct/union type.

 41.693 - SUBINVALIDCHR

 Message        Parameter substitution produced an invalid character
                constant.

 Description    In certain modes, the compiler will replace
                identifiers found within a character constant if they
                match a macro argument name.  This form of "old-style
                stringization" is provided for compatibility with
                older C compilers.  This message is output if this
                replacement forms an invalid character constant.

 User Action    Modify the macro argument so that a valid character
                constant is formed.

 41.694 - SUBINVALIDSTR

 Message        Parameter substitution produced an invalid string
                literal.

 Description    In certain modes, the compiler will replace
                identifiers found within a string literal if they
                match a macro argument name.  This form of "old-style
                stringization" is provided for compatibility with
                older C compilers.  This message is output if this
                replacement forms an invalid string literal.

 User Action    Modify the macro argument so that a valid string is
                formed.  Compaq also recommends that the macro body
                be rewritten to use the standard C stringize operator
                (#).

 41.695 - SUBSCRBOUNDS

 Message        <Context> an array is being accessed outside the
                bounds specified for the array type.

 Description    The compiler has detected an array access that is
                outside the bounds of the array.  The array access
                might cause unpredictable behavior.  Note that in C,
                an array is declared using the number of elements,
                but the first element has subscript 0.  It is a
                common coding error to attempt to access the last
                element of an array of "n" elements using a subscript
                of "n" instead of "n - 1".  However, there are two
                common practices that intentionally employ
                out-of-bounds subscripts to useful/correct effects
                that are not reported by this message, but have
                separate optional messages.  First, taking the
                address of an array element that is exactly one
                beyond the last element of an array is completely
                valid in standard C as long as the address is not
                used to access memory.  The optional subscrbounds2
                message can be enabled to report taking the address
                of the array element exactly one beyond the last
                element.  Second, it is a somewhat common practice to
                declare the last member of a struct as an array with
                one element, and then allocate such structs at
                runtime with different sizes, recording the actual
                size in an earlier member of the struct.  The
                optional subscrbounds1 message can be enabled to
                report subscripts greater than zero applied to arrays
                declared with only one element.

 User Action    Specify an array subscript that is within the bounds
                of the array type.

 41.696 - SUBSCRBOUNDS1

 Message        <Context> an array type declared with one element is
                being accessed beyond the end of the array.

 Description    An array declared with one element is being accessed
                beyond the end of the array.  The array access can
                cause unpredictable behavior.  Note that in C, an
                array is declared using the number of elements, but
                the first element has subscript 0.  It is a common
                coding error to attempt to access the last element of
                an array of "n" elements using a subscript of "n"
                instead of "n - 1".

 User Action    Specify an array subscript that is within the bounds
                of the array type.

 41.697 - SUBSCRBOUNDS2

 Message        <Context> accessing the address of an array element
                that is exactly one beyond the end of the array might
                not be what you intended.

 Description    Accessing the address of an array element that is
                exactly one beyond the end of the array might be a
                coding error (e.g.  if the address is then used to
                access memory), or it might be fully correct (e.g.
                to compute a pointer value to be used as the upper
                bound on a loop).

 User Action    Specify an array addressthat is within the bounds of
                the array type.

 41.698 - SWITCHLONG

 Message        The signed or unsigned long expression "<expression>"
                is used in a switch statement.

 Description    A switch value has an integer type of signed or
                unsigned long int.  While Compaq C will allow this,
                some compilers will truncate the value to an int.

 User Action    Be aware of this if porting the code to another
                platform.

 41.699 - SYSREGUSED

 Message        System register specified as external register.

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.700 - SYSTEM

 Message        <text>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.701 - TAGDIFFER

 Message        <Context> the tag "<name>" differs from the tag
                "<name>" used in an earlier declaration of this
                function.

 Description    This function declaration contains a parameter that
                is a pointer to a struct or union type whose tag
                differs from the tag of the struct or union type
                referenced by a pointer type in an earlier
                declaration of this function.  In most modes of the
                compiler, this will cause the function declarations
                to be incompatible.

 User Action    Multiple declarations of a function should use
                exactly the same parameter types.

 41.702 - TAGORBRACE

 Message        Missing tag or "{".

 Description    The enum, struct, and union keywords must be followed
                by either an open brace or a tag.

 User Action    Correct the program syntax.

 41.703 - TENTREDEF

 Message        This <definition or tentative definition> of "<name>"
                is redefining the <definition or tentative
                definition> on <location>.  This is not allowed in
                C++.  <compiler__declare_tent_redef1>.

 Description    C will allow a tentative definition to be redefined
                later in the compilation unit.  C++ does not have the
                concept of a tentative definition.  Therefore this
                redefinition is invalid in C++.

 User Action    Either remove the previous tentative definition, or
                modify it to match the later redefinition.

 41.704 - TEXTARRAY

 Message        The CDD description for <name> specifies that it is
                text 1; It has been translated into an array of char.

 Description    When the CDD type "TEXT" is of length one, Compaq C
                will normally convert this to type "char" in order to
                be compatible with VAX C.  If however, the
                nullterminate or text1toarray keywords are specified
                in a Compaq C dictionary directive, the CDD type TEXT
                will be converted to type "array of char".

 User Action    No action is necessary as long as the type "array of
                char" is the desired datatype.

 41.705 - TEXTARRAYN

 Message        The CDD description for <name> specified that it is
                text 1; It has been translated into an array of char
                because null_terminate was used.

 Description    The CDD type "TEXT" is of length 1 and has been
                converted to the C type "array of char" of size 2
                because the null_terminate keyword was specified on
                the dictionary directive.

 User Action    No action is necessary as long as the type "array of
                char" of size two is the desired C datatype.

 41.706 - TEXTCHAR

 Message        The CDD description for <name> specified that it is
                text 1; It has been translated into a type char.

 Description    When the CDD type "TEXT" is of length one, Compaq C
                will normally convert this to type "char" in order to
                be compatible with VAX C.  However, when the length
                of the CDD type "TEXT" is greater than one, the C
                type "array of char" is generated.  This means that
                CDD type "TEXT" will result in different C datatypes
                depending upon the length of the TEXT stored in the
                dictionary.

 User Action    No action is necessary as long as the type "char" is
                the desired datatype.

 41.707 - TEXTMODULE

 Message        The text library module form of #include is an
                extension.

 Description    On OpenVMS systems, an #include directive whose file
                specifier is not enclosed in either quotation marks
                or angle brackets denotes an include from a text
                library.  This is an extension of Compaq C/C++.  This
                directive will not work as expected on non-VMS
                systems.

 User Action    Be aware of this if you wish to port the program.

 41.708 - THREADFUNC

 Message        <Context> the __declspec(thread) storage class
                modifier cannot be used with a function type.
                Modifier is ignored.

 Description    Only objects can be declared with thread-local
                storage.  The storage class modifier is ignored when
                applied to an identifier with function type.

 User Action    Either remove the storage class modifier or change
                the type to one that is valid for __declspec(thread).

 41.709 - THREADNYI

 Message        <Context> the __declspec(thread) storage class
                modifier is not implemented on this platform.  It
                will be ignored except to verify correct compile-time
                usage.

 Description    Thread-local storage is only supported on UNIX
                platforms.  The compiler will ignore the storage
                class modifier except to verify that it is correctly
                used.

 User Action    Remove the __declspec(thread) storage class modifier
                or compile the program on a platform that supports
                the modifier.

 41.710 - THREADSTO1

 Message        <Context> the __declspec(thread) storage class
                modifier requires a storage class of extern, static,
                or none.  Modifier is ignored.

 Description    Declaring a file-scope object with thread-local
                storage requires that the object have a storage class
                of extern, static or none.  In other cases, the
                compiler will ignore the __declspec(thread) storage
                class modifier.

 User Action    Either remove the storage class modifier or change
                the storage class to one that is valid for
                __declspec(thread).

 41.711 - THREADSTO2

 Message        <Context> the __declspec(thread) storage class
                modifier requires a storage class of extern, or
                static.  Modifier is ignored.

 Description    Declaring a local object with thread-local storage
                requires that the object have a storage class of
                extern, or static.  In other cases, the compiler will
                ignore the __declspec(thread) storage class modifier.

 User Action    Either remove the storage class modifier or change
                the storage class to one that is valid for
                __declspec(thread).

 41.712 - TLSANDSTATIC

 Message        <Context> the storage class modifier
                __declspec(thread) cannot be used with the -static
                option.  The storage class modifier is ignored.

 Description    Thread-local storage cannot be declared in
                compilations that are performed with the -static
                option.  The compiler will ignore the
                __declspec(thread) storage class modifier.

 User Action    Either remove the __declspec(thread) storage class
                modifier or do not compile with the -static option.

 41.713 - TOOFEWACTUALS

 Message        Too few actual parameters in macro call.

 Description    A macro invocation supplied fewer actual arguments
                than the macro expects.  The macro arguments not
                specified in the call will be given a null value.

 User Action    Supply all arguments in the macro invocation.

 41.714 - TOOFEWARGS

 Message        <Context> "<function expression>" expects <correct
                number> arguments, but <actual number> are supplied.

 Description    A function has been invoked with fewer arguments than
                it expects.  In some modes this is a warning message,
                and the compiler will compile the program.  In this
                case, the function being called might not produce the
                expected results.

 User Action    Make sure the number of arguments passed to a
                function match those specified in the function
                declaration.

 41.715 - TOOFEWARGSO

 Message        <Context> "<function expression>", which was declared
                with an old-style function definition, expects
                <correct number> arguments, but <actual number> are
                supplied.

 Description    A function that was declared with an old-style
                function definition has been invoked with fewer
                arguments than it expects.  While this is valid C, it
                might not have been what you intended.

 User Action    Make sure the number of arguments passed to a
                function match those specified in the function
                declaration.  If the function is to be called with a
                variable number of arguments, it should use the
                facilities of <varargs.h> for old-style definitions.
                Compaq generally recommends that old-style function
                definitions be replaced by prototype-format
                definitions, in which case variable argument lists
                are specified using the ...  notation and the
                definition uses the facilities of <stdarg.h>.

 41.716 - TOOLONG

 Message        <Context> , "<expression>" is too long by <count>
                character(s).

 Description    A string initializer for a char array contains more
                characters than the array can hold.  This is not
                valid.

 User Action    Reduce the number of characters to be less than or
                equal to the number of elements in the char array.

 41.717 - TOOMANY

 Message        <Context> , there are <actual number> elements, which
                is <extra number> too many.  The extra initializers
                will be ignored.

 Description    An initializer list contains more initializers than
                there are objects to be initialized.  This is not
                valid.

 User Action    Reduce the number of initializers to be less than or
                equal to the number of objects being initialized.

 41.718 - TOOMANYACTLS

 Message        Too many actual parameters in macro call.

 Description    A macro invocation supplied more actual arguments
                than the macro expects.  The additional arguments
                will be ignored.

 User Action    Remove the extra arguments from the macro invocation.

 41.719 - TOOMANYARGS

 Message        <Context> "<function expression>" expects <correct
                number> arguments, but <actual number> are supplied.

 Description    A function has been invoked with more arguments than
                it expects.  In some modes this is a warning message,
                and the compiler will compile the program.

 User Action    Make sure the number of arguments passed to a
                function match those specified in the function
                declaration.

 41.720 - TOOMANYARGSO

 Message        <Context> "<function expression>", which was declared
                with an old-style function definition, expects
                <correct number> arguments, but <actual number> are
                supplied.

 Description    A function that was declared with an old-style
                function definition has been invoked with more
                arguments than it expects.  While this is valid C, it
                might not have been what you intended.

 User Action    Make sure the number of arguments passed to a
                function match those specified in the function
                declaration.  If the function is to be called with a
                variable number of arguments, it should use the
                facilities of <varargs.h> for old-style definitions.
                Compaq generally recommends that old-style function
                definitions be replaced by prototype-format
                definitions, in which case variable argument lists
                are specified using the ...  notation and the
                definition uses the facilities of <stdarg.h>.

 41.721 - TOOMANYERR

 Message        More than <number> errors were encountered in the
                course of compilation.

 Description    After emitting a certain number of errors, the
                compiler will stop the compilation and issue this
                message.  The number of errors output before the
                compilation stops can be changed using the
                /ERROR_LIMIT qualifier on OpenVMS systems, or the
                -error_limit option on UNIX systems.

 User Action    Either reduce the number of errors generated by the
                program or give a larger value for the error limit.

 41.722 - TOOMANYGATES

 Message        only 64 gates maybe be used within a parallel region

 Description    For each parallel region there is a limit of 64
                different gates that can be specified in a #pragma
                enter gate/#pragma exit gate pair.

 User Action    Reduce the number of gates

 41.723 - TOOMANYTOKENS

 Message        Too many tokens in macro expansion.

 Description    An argument to the #line preprocessing directive
                contained a macro whose expansion generated more
                tokens than the #line directive expects.

 User Action    Either modify the macro definition or change the
                arguments to the #line directive.

 41.724 - TOOMANYTXTLIB

 Message        Too many text libraries.  Library <library name> and
                subsequent will not be searched.

 Description    The compiler has tried to open more text libraries
                than it can support in its internal data structures.
                The specified library, and all subsequent libraries
                will not be opened.

 User Action    Reduce the number of text libraries the compilation
                requires.

 41.725 - TOOMNYREL

 Message        Object file section <text> has <number> relocations;
                maximum allowed is <number>

 Description    This message is emitted by the code generator used by
                all Compaq compilers for the Alpha architecture.  It
                should never be output when compiling a C program.

 User Action    Please submit a problem report if you encounter this
                message when compiling a C program.

 41.726 - TRAILCOMMA

 Message        Trailing comma found in enumerator list.

 Description    Accepting an enumerator list that contains a trailing
                comma is an extension of Compaq C provided for
                compatibility with other C compilers.  An enumerator
                list with a trailing comma is not valid in C89, nor
                in C++.  The C99 standard does permit this syntax.

 User Action    Remove the trailing comma.

 41.727 - TRUNCFLTASN

 Message        <Context> "<expression>" has more precision than
                "<target type>".  Assignment might result in loss of
                precision and/or range.

 Description    The destination of a floating-point assignment has
                less range and/or precision than the expression being
                assigned to the destination.  Because of this, the
                assignment might cause a loss of range and/or
                precision.

 User Action    Verify that no unexpected data can be lost by the
                assignment.  If not, cast the expression to the type
                of the destination.

 41.728 - TRUNCFLTINT

 Message        <Context> "<expression>" is a floating-point type
                being assigned to an integer type.  The assignment
                might result in data loss.

 Description    A floating-point expression is being assigned to an
                integer type.  This assignment might cause a loss of
                range and/or precision.

 User Action    Verify that no unexpected data can be lost by the
                assignment.  If not, cast the expression to the type
                of the destination.

 41.729 - TRUNCINTASN

 Message        <Context> "<expression>" has a larger data size than
                "<target type>".  Assignment might result in data
                loss.

 Description    The destination of an integer or pointer assignment
                is smaller than the expression being assigned to the
                destination.  Because of this, the assignment might
                cause data to be lost.

 User Action    Verify that no unexpected data can be lost by the
                assignment.

 41.730 - TRUNCINTCAST

 Message        <Context> "<expression>" has a larger data size than
                "<target type>".  Cast might result in data loss.

 Description    An integer or pointer expression is being cast to a
                size that is smaller than the expression.  Because of
                this, the cast might cause data to be lost.

 User Action    Verify that no unexpected data can be lost by the
                cast.

 41.731 - TRUNCLONGCAST

 Message        <Context> "<expression>", a 64-bit integer, is being
                cast to a 32-bit integer.  The cast might result in
                data loss.

 Description    On many platforms long integers are the same size as
                integers.  On this platform long integers are
                64-bits.  This cast could indicate a potential
                porting problem.

 User Action    Verify that no unexpected data can be lost by the
                cast.

 41.732 - TRUNCLONGINT

 Message        <Context> "<expression>", a 64-bit integer, is being
                assigned to a 32-bit integer.  Assignment might
                result in data loss.

 Description    On many platforms long integers are the same size as
                integers.  On this platform long integers are
                64-bits.  This assignment could indicate a potential
                porting problem.

 User Action    Verify that no unexpected data can be lost by the
                assignment.

 41.733 - TYPEALIGN

 Message        <Context> _align cannot be used with the typedef
                storage class.  Modifier _align is ignored.

 Description    The storage class modifier _align is meaningless for
                typedefs.  The compiler ignores the _align.

 User Action    Remove the _align storage class modifier.

 41.734 - TYPECONFLICT

 Message        <Context> "<typespec1>" cannot be combined with
                "<typespec2>".

 Description    Two type keywords used in the same type specifier
                cannot be combined.  In some modes, the compiler will
                use the most recent keyword as the type specifier.

 User Action    Correct the type specifier.

 41.735 - TYPEDEFFUNC

 Message        In this function definition, "<name>" acquires its
                type from a typedef.

 Description    A function definition acquires its type from a
                typedef.  This is not allowed.

 User Action    Correct the function definition.

 41.736 - TYPEDEFINIT

 Message        The declaration of the typedef "<name>" contains an
                initializer.  The initializer is ignored.

 Description    A typedef declaration must not contain an
                initializer.

 User Action    Remove the initializer from the declaration.

 41.737 - TYPEDEFNA

 Message        Accepting an old-style parameter name that matches a
                typedef is a language extension.

 Description    The Compaq C compiler will allow old-style parameters
                to have the same name as a typedef.  Many other
                compilers will not allow this.

 User Action    Recode the function definition to use the standard C
                prototype syntax.

 41.738 - TYPEDEFNOTDEF

 Message        In this declaration, "<name>" appears to be used as
                if it named a type, but there is no declared type of
                that name visible.

 Description    The compiler has encountered what appears to be a
                typedef declaration that provides a new name for an
                existing type, but the identifier used to specify the
                existing type is not the name of a type that is
                visible.

 User Action    Declare the identifier for the first type, or correct
                its spelling.

 41.739 - TYPEEXPR

 Message        <Context> "<name>" is declared as <a label, tag, or
                typedef>, and so cannot occur as an expression.

 Description    An identifier declared as a typedef has been used in
                an expression when an object or function was
                required.

 User Action    Correct the expression.

 41.740 - TYPEOFEXT

 Message        The use of __typeof__ is a language extension.

 Description    Support for __typeof__ is a language extension
                provided for compatibilty with some other C
                compilers.  Although some other C compilers will
                accept this syntax, many compilers will reject it.

 User Action    Be aware of this difference if you plan to port this
                source to another compiler.

 41.741 - TYPESIGNDIFF

 Message        <Context> a typedef has been declared to
                have<signed>int type.  It had been declared to
                have<signed>int type <where>.  This change will
                affect any subsequent bitfield declarations that are
                declared with this type.

 Description    As this program has been compiled with unsigned
                bitfields, there is a difference between int and
                signed int types.  Any bitfield declared with this
                typedef type after this redeclaration will use the
                new type, while bitfields declared with this type
                before the redeclaration will differ in whether or
                not the high-order bit is treated as a sign bit.
                This may not be what you expected.

 User Action    If the intent is to have different types, use a
                different typedef name.  If the intent is to have the
                same types, correct or remove the second typedef, or
                compile with the default signed-bitfield option.

 41.742 - TYPQUALNOT

 Message        A type qualifier is not allowed in this context.

 Description    In Microsoft mode, the compiler used to accept a type
                qualifier after a comma used to separate declarators.
                This was refered to as a local type qualifier.  This
                message is output when a local type qualifier is
                applied to a declarator that can not be qualified.

 User Action    Remove the local type qualifier because this is no
                longer accepted.

 41.743 - TYPQUALNOT2

 Message        Use of the keyword "static" or a type qualifier
                within the outermost array-bounds specifier of a
                formal parameter declaration is a new feature in the
                C99 standard.

 Description    The C99 construct may not be available in other
                compilers you use to build your application, in which
                case they will likely report it as a syntax error.

 User Action    You may want to conditionalize your code with the
                preprocessor so that you can take advantage of the
                feature on platforms that support it, without getting
                syntax errors from older compilers or language modes
                that do not support it.

 41.744 - TYPQUALNOT3

 Message        Use of the keyword "static" or a type qualifier in an
                array-bounds specifier is invalid in this compilation
                mode.  Keyword/qualifier ignored.

 Description    Use of the keyword "static" or a type qualifier
                within the outermost array bound specifier of a
                formal parameter is a new feature in the C99 standard
                and is not supported in this language mode.

 User Action    Either compile in a mode that supports C99 features,
                or remove the construct from your code.

 41.745 - TYPQUALNOT4

 Message        Use of this type qualifier in an array-bounds
                specifier is invalid.  Qualifier ignored.

 Description    Use of this type qualifier is not a permitted in the
                array bound specifier of a formal parameter.

 User Action    Remove the keyword.

 41.746 - UABORT

 Message        Compilation terminated by user.

 Description    This message is often output when the compilation was
                aborted by the user by hitting Control C.

 User Action    Do not abort the compilation.

 41.747 - UNALIGNEDFUNC

 Message        Ignoring __unaligned type qualifier in declaration of
                <name>.

 Description    The __unaligned type qualifier has no meaning for
                function types.  It is being ignored.

 User Action    Remove the type qualifier.

 41.748 - UNALIGNEXT

 Message        The __unaligned type qualifier is a language
                extension.

 Description    The use of the __unaligned type qualifier might not
                be portable to other C compilers.

 User Action    Be aware of this portability concern.

 41.749 - UNAVAILPRAGMA

 Message        The pragma "<pragma name>" is not available on this
                platform.

 Description    The compiler has encountered a pragma that is not
                currently supported on this platform.  The compiler
                will ignore the pragma.

 User Action    Compile the program on a platform that does support
                the pragma.  Otherwise, understand that this pragma
                will have no effect.

 41.750 - UNAVOLACC

 Message        volatile access appears unaligned, but must be
                aligned at run-time to ensure atomicity and byte
                granularity

 Description    The compiler has detected an unaligned access to a
                volatile variable.  Because the access is unaligned,
                there is no guarantee of atomicity and byte
                granularity.  Therefore the access may not work as
                you expect.

 User Action    Make sure volatile objects are aligned on a natural
                boundary.

 41.751 - UNCALLED

 Message        routine <text> can never be called

 Description    The compiler has detected a static function that is
                never referenced.

 User Action    Remove the unused function.

 41.752 - UNDECLARED

 Message        <Context> "<name>" is not declared.

 Description    An identifier used in an expression has not been
                declared.  The only time an identifier can be used
                and not previously declared is when the identifier
                specifies the function name in a function call.

 User Action    Either declare the identifier or remove its use.

 41.753 - UNDECLFUN

 Message        There is no function declaration for the identifier
                "<name>" at the point of this #pragma <pragma type>
                <attributes>.

 Description    An identifier specified in a #pragma assert
                func_attrs directive must refer to a function
                declaration at the point of the pragma.

 User Action    Either remove the identifer from the pragma, correct
                its spelling, or reorder the source to ensure that a
                declaration of the identifier as a function is
                visible at the point of the pragma.  Identifier must
                be a function declaration; no other kind of
                declaration (i.e.  typedef, var, etc.) is allowed for
                func_attrs.

 41.754 - UNDECLVAR

 Message        There is no global declaration visible for the
                variable "<name>" at the point of this #pragma assert
                global_status_variable.

 Description    An identifier specified in a #pragma assert directive
                must refer to a global variable declaration visible
                at the point of the pragma.  The identifier will be
                ignored.

 User Action    Either remove the identifer from the pragma, correct
                its spelling, or reorder the source to ensure that a
                declaration of the identifier as a global_variable is
                visible at the point of the pragma.

 41.755 - UNDEFENUM

 Message        <Context> the enum "<name>" is not defined.

 Description    The enum tag used to declare an enum variable is not
                defined at this point in the compilation.

 User Action    Define the enum tag before using it.

 41.756 - UNDEFESCAP

 Message        An undefined escape sequence was encountered; the
                backslash is being ignored.

 Description    The character or characters following a backslash do
                not form a valid escape sequence.  The compiler will
                ignore the backslash.

 User Action    Correct the escape sequence.

 41.757 - UNDEFVARFETCH

 Message        <Context> the expression "<expr>" modifies "<var>",
                and fetches its value in a computation that is not
                used to produce the modified value without an
                intervening sequence point.  This behavior is
                undefined.

 Description    The compiler has detected a case where the same
                variable has been modified and fetched in a
                computation that does not later modify that same
                variable.  Because the order of the variable fetch
                and store is not defined, this expression might
                produce different results on different platforms.

 User Action    Rewrite the expression so that if a variable is
                stored to, it is fetched only to determine the value
                to be stored.

 41.758 - UNDEFVARMOD

 Message        <Context> the expression "<expr>" modifies the
                variable "<var>" more than once without an
                intervening sequence point.  This behavior is
                undefined.

 Description    The compiler has detected a case where the same
                variable has been modified more than once in an
                expression without a sequence point between the
                modifications.  Because what modification will occur
                last is not defined, this expression might produce
                different results on different platforms.

 User Action    Rewrite the expression so that each variable is
                modified only once.

 41.759 - UNDERFLOW

 Message        <Context> underflow occurs in evaluating the
                expression "<expression>".

 Description    A floating-point underflow occurred while evaluating
                a constant expression.  The value of the expression
                is undefined.

 User Action    Correct the floating-point constant expression.

 41.760 - UNINIT1

 Message        The scalar variable "<var>"<declared in> is fetched
                but not initialized<inlineinfo>.  And there may be
                other such fetches of this variable that have not
                been reported in this compilation.

 Description    A variable's value has been used without being set.
                This might not have been what you intended.  The
                algorithms that detect this situation only report it
                once for a given variable, and not necessarily at the
                first use of the uninitialized value.

 User Action    Provide the variable with a value before the variable
                is used.  If you only provide a value for the use
                reported here, you may find that when you recompile
                your program another uninitialized use is detected.
                It is best to initialize variables as close as
                possible to the point of declaration.

 41.761 - UNINIT2

 Message        Part or all of the non-scalar variable
                "<var>"<declared in> is fetched but not
                initialized<inlineinfo>.  And there may be other such
                fetches of this variable that have not been reported
                in this compilation.

 Description    A non-scalar variable has had its value used and some
                or all of the variable has not been given a value.
                This might not have been what you intended.  The
                algorithms that detect this situation only report it
                once for a given variable, and not necessarily at the
                first use of the uninitialized value.

 User Action    Provide the variable with a value before the variable
                is used.  If you only provide a value for the use
                reported here, you may find that when you recompile
                your program another uninitialized use is detected.
                It is best to initialize variables as close as
                possible to the point of declaration.

 41.762 - UNINIT3

 Message        Variable "<var>"<declared in> is fetched but not
                initialized<inlineinfo>.  And there may be other such
                fetches of this field that have not been reported in
                this compilation.

 Description    The specified member of a struct variable has been
                used without being set.  This might not have been
                what you intended.  The algorithms that detect this
                situation only report it once for a given field, and
                not necessarily at the first use of the uninitialized
                value.

 User Action    Provide the struct member with a value before the
                variable is used.  If you only provide a value for
                the use reported here, you may find that when you
                recompile your program another uninitialized use is
                detected.  It is best to initialize variables as
                close as possible to the point of declaration.

 41.763 - UNINIT4

 Message        Byte offsets <start> to <end> of "<var>"<declared in>
                are fetched but not initialized<inlineinfo>.  And
                there may be other such fetches of this field that
                have not been reported in this compilation.

 Description    The specified byte offsets of a variable have been
                used without being set.  This might not have been
                what you intended.  The algorithms that detect this
                situation only report it once for a given field, and
                not necessarily at the first use of the uninitialized
                value.

 User Action    Provide the full variable with values before the
                variable is used.  If you only provide a value for
                the use reported here, you may find that when you
                recompile your program another uninitialized use is
                detected.  It is best to initialize variables as
                close as possible to the point of declaration.

 41.764 - UNINIT5

 Message        <fragment uninit5a><inlineinfo>.  Also the variable
                itself is not initialized.  And there may be other
                fetches of this variable that have not been reported
                in this compilation.

 Description    The specified storage location has been used without
                being set.  This might not have been what you
                intended.  In addition, as this fetch is outside the
                storage allocated to the variable, the behavior is
                undefined.

 User Action    First verify that the fetch is correct(code that uses
                the address of a declared object to access memory
                outside the address range allocated to that object is
                not likely to be reliable).  Then initialize the
                storage being fetched and, if necessary, the variable
                noted in the message.  If you only provide a value
                for the use reported here, you may find that when you
                recompile your program another uninitialized use is
                detected, since the algorithms that detect this
                situation only report it once for a given variable,
                and not necessarily at the first use of the
                uninitialized value.  It is best to initialize
                variables as close as possible to the point of
                declaration.

 41.765 - UNIONBRACE

 Message        <Context> a required set of braces is missing.

 Description    The initializer for this union was not enclosed in
                braces.  While some compilers allow this, standard C
                requires braces around the initializer.

 User Action    Enclose the initializer in braces.

 41.766 - UNKEXTMOD

 Message        Unknown extern model.  Pragma is ignored.

 Description    The compiler was unable to parse a #pragma
                extern_model directive.  The extern_model must be an
                identifier that specifies one of the valid extern
                models.  The directive will be ignored.

 User Action    Correct the directive.

 41.767 - UNKINTRIN

 Message        The function "<routine name>" is not a known
                intrinsic function and cannot be used with #pragma
                intrinsic.  Pragma not applied to this function.

 Description    A function identifier specified in a #pragma
                intrinsic directive is not a valid intrinsic function
                on this platform.  The pragma will not be applied to
                this identifier, leaving it to be treated as an
                ordinary function.

 User Action    Either correct the function name to specify an
                intrinsic supported for this platform, or remove it
                from the pragma.

 41.768 - UNKMSGCMD

 Message        Bad or missing command in pragma message.  Pragma is
                ignored.

 Description    The #pragma message directive must be followed by an
                identifier that specifies message-related action for
                the compiler to perform.  Either something other than
                an identifier was found, or the identifier did not
                specify one of the valid actions.  The compiler will
                ignore the pragma.

 User Action    Specify a valid action for #pragma message.

 41.769 - UNKMSGID

 Message        Unknown message id or group "<id>" is ignored.

 Description    A message identifier in a #pragma message directive
                did not specify a valid message id or message group.
                The identifier will be ignored.

 User Action    Update the identifier so that it specifies a valid
                message id or message group.

 41.770 - UNKNOWNLINK

 Message        The specified linkage is undefined.  Pragma is
                ignored.

 Description    The linkage specified in a #pragma use_linkage
                directive has not been defined by an earlier #pragma
                linkage directive.  The compiler will ignore the
                entire pragma.

 User Action    Either define the linkage first or change the linkage
                name.

 41.771 - UNKNOWNMACRO

 Message        "<name>" is not currently defined as a macro.  It has
                been replaced by the constant zero.

 Description    An identifier found in an #if or #elif is not
                defined.  This might not have been what you intended.
                The compiler will replace the identifier with the
                constant zero.

 User Action    Verify the use of the identifier.

 41.772 - UNKNOWNPRAGMA

 Message        The pragma "<pragma text>" is unrecognized.

 Description    A pragma that has no meaning to Compaq C/C++ was
                encountered.  The pragma will be ignored.

 User Action    Make sure that you did not misspell the pragma.
                Also, make certain you are running the correct
                version of Compaq C/C++.  If the spelling and
                compiler version are correct, understand that this
                pragma will have no effect.

 41.773 - UNKNOWNPRGMA

 Message        Unrecognized #pragma directive.

 Description    This #pragma preprocessing directive is not
                recognized by Compaq C.  The directive will be
                ignored.

 User Action    Make sure that this is the intended behavior.

 41.774 - UNKPSECTATTR

 Message        Unknown psect attribute for extern model.  Attribute
                is ignored.

 Description    A psect attribute specified in a #pragma extern_model
                is invalid.  In general, the psect attributes
                accepted by Compaq C/C++ match those accepted by the
                assembler.  The psect attribute will be ignored.

 User Action    Correct the psect attribute.

 41.775 - UNMATCHENDIF

 Message        Out of place #endif directive ignored.

 Description    An #endif preprocessing directive was encountered
                without a previous #if directive.  The directive will
                be ignored.

 User Action    Remove the directive.

 41.776 - UNNAMEDMEM

 Message        An unnamed member does not have a bitfield, struct,
                or union type.  Member is ignored.

 Description    An unnamed member of a struct or union type has no
                meaning unless it is a bitfield or a struct/union
                type.  The compiler will ignore this member.

 User Action    If the member is desired, give it a name.  Otherwise
                remove the unnamed member.

 41.777 - UNNAMEPARM

 Message        In the definition of the function <name>, a parameter
                has no name.

 Description    This function declaration contained a parameter type
                but no parameter name.

 User Action    Provide a name for the formal parameter.

 41.778 - UNNECCDD

 Message        It is not necessary to include this dictionary
                directive, if other unused dictionary directives and
                unused include directives are removed.

 Description    There is some reference to this file from an unused
                include file or from an unused dictionary directive
                when using the current set of compilation options.
                If you remove the unused include files and unused
                dictionary directives, this dictionary directive
                could also be eliminated when compiling with the
                current set of compilation options.

 User Action    When compiling with the current set of compilation
                options, to increase compilation efficiency you may
                exclude this dictionary directive if you also remove
                other unused files.

 41.779 - UNNECINCL

 Message        It is not necessary to include this file, if other
                unused include directives are removed.

 Description    There is some reference to this file from another
                include file or dictionary directive that is not used
                when using the current set of compilation options.
                If you remove the unused include files and unused
                dictionary directives, this include file could also
                be eliminated when compiling with the current set of
                compilation options.

 User Action    When compiling with the current set of compilation
                options, to increase compilation efficiency you may
                exclude this include file if you also remove other
                unused files.

 41.780 - UNREACHCODE

 Message        Code at or just after this location can never be
                executed<inline info>.

 Description    The compiler has detected code that can never be
                executed.  Often unreachable code represents a real
                coding error such as a label that is incorrectly
                spelled, or a statement that was inserted on the
                wrong line.  But sometimes it occurs in good code as
                a result of logical expressions that depend only on
                the values of constants (typically through macro
                expansion).

 User Action    Usually any code correction is obvious.  And often it
                is straightforward to rewrite compile-time logical
                expressions in terms of preprocessing constructs to
                avoid this diagnostic.  But in some programs it may
                be necessary to suppress this informational message
                explicitly in order to obtain a diagnostic-free
                compilation of production code, since rewriting the
                expression not to be evaluated at compile time would
                impact performance.

 41.781 - UNREFADECL

 Message        This local identifier is declared but not referenced
                in this module.

 Description    A declaration was found for an identifier which is
                not referenced in this module

 User Action    Examine your code to determine if this declaration is
                needed in this module.

 41.782 - UNREFDECL

 Message        This identifier is declared but not defined or
                referenced in this module.

 Description    A declaration was found for an identifier which is
                not defined or referenced in this module

 User Action    Examine your code to determine if this declaration is
                needed in this module.

 41.783 - UNREFSDECL

 Message        A static variable is declared but never referenced in
                this module.

 Description    This identifier is defined but never referenced when
                using the current set of compilation options.

 User Action    Examine your code to determine if this definition is
                needed in this module.

 41.784 - UNREFSFUNC

 Message        A static function definition or prototype is found,
                but never referenced.

 Description    A static function declaration was found in this
                module, but is unused when compiling with the current
                settings.

 User Action    Examine your code to determine if this function is
                needed in this module.

 41.785 - UNREFTYP

 Message        This type is never referenced in this module.

 Description    A type is declared but never referenced when using
                the current set of compilation options.

 User Action    Examine your code to determine if this declaration is
                needed in this module.

 41.786 - UNRLINKATTR

 Message        Unrecognized attribute for linkage pragma.  Pragma is
                ignored.

 Description    The compiler encountered an attribute in a #pragma
                linkage directive that it did not recognize.  The
                message should point to the offending attribute.  The
                compiler will ignore the entire pragma.

 User Action    Correct the directive.

 41.787 - UNSIGNEDPRES

 Message        <Context> the conversion of the unsigned char/short
                value "<expression>" to unsigned int shows one
                example of this program's use of unsigned-preserving
                integral promotion.  This differs from the
                value-preserving semantics of standard C compilers.

 Description    This expression shows one of possibly many places
                where this compilation uses unsigned-preserving
                semantics for small integer promotions rather than
                value-preserving semantics required of standard C
                compilers.  In cases where an unsigned char or
                unsigned short int is promoted to an integer, there
                are two different ways the convert could happen.
                Standard C requires that the type be converted to a
                signed int (value-preserving semantics) while some
                older compilers will convert to an unsigned int
                (unsigned-preserving semantics).  The difference in
                the choice of int or unsigned int can have an impact
                on results of expressions that use the converted
                value.  The compiler cannot determine whether or not
                a particular instance of this usage will cause an
                observable behavior difference in the program.  For
                more information, consult Section 3.2.1.1 of the
                Rationale for ANSI C.

 User Action    Be aware that standard compilers might interpret this
                expression differently.

 41.788 - UNSTRUCTMEM

 Message        The declaration of a member that is an unnamed struct
                or union type is an extension and might not be
                portable.

 Description    Compaq C allows a member of a struct or union to be
                an unnamed struct or union type.  This is an
                extension of Compaq C that other compilers might not
                support.  In addition this behavior does not conform
                to the C standard.

 User Action    If portability is desired, provide a name for the
                struct/union member.

 41.789 - UNSUPCONV

 Message        Hexadecimal floating point constants are not yet
                implemented.

 Description    Hexadecimal floating point constants are a new C99
                feature that is not yet supported on this platform.

 User Action    Please use traditional syntax for floating point
                numbers.

 41.790 - UNSUPCONVSPEC

 Message        <Context> this argument to <function name> has a
                conversion specification "<incorrect conversion>"
                that is not supported or not fully supported on this
                platform.

 Description    The compiler has detected a conversion specification
                that will not work as specified on this platform.

 User Action    Review the documentation for this function and modify
                the conversion specification as necessary to
                accomplish your objective.

 41.791 - UNSUPCONVV

 Message        Hexadecimal floating point constants are not
                supported on this platform.

 Description    Hexadecimal floating point constants are a new
                feature in C99 that is not being implemented on the
                VAX platform.

 User Action    Please use traditional syntax for floating point
                numbers.

 41.792 - UNSUPIEEE

 Message        The _FASTMATH version of this function has been
                specified, but _FASTMATH routines do not support the
                IEEE behaviors requested and will simply trap and
                terminate when given arguments or computing values
                outside the normal range.

 Description    The compiler has recognized a math intrinsic function
                that has a _FASTMATH version and the compilation has
                defined the macro _FASTMATH, but command line options
                have also specified IEEE trapping behaviors other
                than the default of flushing underflow to zero and
                aborting on all others.

 User Action    If the body of your code relies on IEEE denormals,
                infinities, or nans, but is careful to condition the
                arguments to math library functions to avoid passing
                or computing these values, you may ignore or suppress
                this warning.  Otherwise, you should either remove
                the options specifying non-default IEEE behavior or
                else undefine the _FASTMATH macro.

 41.793 - UNSUPPTYPE

 Message        The CDD description for <name> specifies a data type
                not supported in C.

 Description    There is no Compaq C datatype to exactly represent
                this type.  Compaq C has created a declaration of the
                same total size as the unsupported data type.

 User Action    If the type provided by the Compaq C compiler is not
                satisfactory, change the CDD description to one that
                the compiler can represent more exactly.

 41.794 - UNUSEDCDD

 Message        This CDD record appears to be unused.

 Description    The contents of this CDD record are not used by the
                rest of the compilation.

 User Action    For compilation efficiency, you can exclude this
                dictionary directive when compiling with the current
                set of compilation options.

 41.795 - UNUSEDINCL

 Message        This nested include file appears to be unused.

 Description    The contents of this include file are not used by the
                rest of the compilation.

 User Action    For compilation efficiency, you can exclude this
                include file when compiling with the current set of
                compilation options.

 41.796 - UNUSEDTOP

 Message        This include directive does not contribute to the
                compilation, perhaps because the file has already
                been included.

 Description    The contents of this top-level include file are not
                used by the rest of the compilation.  This message
                can occur when the include file has already been
                included, perhaps by a nested include file.

 User Action    For compilation efficiency, you can exclude this
                include file when compiling with the current set of
                compilation options.

 41.797 - USELESSALIGN

 Message        <Context> _align cannot be used with the <class>
                storage class.  Modifier _align is ignored.

 Description    The storage class modifier _align is meaningless for
                objects declared with register, globalref, or
                globalvalue storage class.  The compiler ignores the
                _align.

 User Action    Remove the _align storage class modifier.

 41.798 - USELESSSTOMOD

 Message        <Context> <noshare or readonly> cannot be used with
                the typedef storage class.  Modifier is ignored.

 Description    The storage class modifiers noshare and readonly are
                meaningless for typedefs.  The compiler ignores the
                storage class modifier.

 User Action    Remove the storage class modifier.

 41.799 - USELESSTYPED

 Message        This typedef declaration is useless because it does
                not declare a typedef name.

 Description    This typedef declaration does not declare a typedef
                name.  This case can occur when a declaration tries
                to declare both a tag and a typedef, but the name of
                the typedef is not included.

 User Action    Either remove the typedef keyword or add a typedef
                name.

 41.800 - VAARGSBODY

 Message        __VA_ARGS__ may not appear except in a function-like
                macro that uses the ellipsis notation in the
                parameters.

 Description    The identifier __VA_ARGS__ may only appear in the
                replacement list of a function-like macro definion
                that uses ellipsis notation in the parameters.

 User Action    Either remove __VA_ARGS__ or change its spelling.

 41.801 - VAARGSFORMAL

 Message        __VA_ARGS__ may not be used as a formal parameter.

 Description    The identifier __VA_ARGS__ may only appear in the
                replacement list of a function-like macro definion
                that uses ellipsis notation in the parameters.

 User Action    Rename the formal parameter.

 41.802 - VALUEPRES

 Message        <Context> the conversion of the unsigned char/short
                value "<expression>" to signed int shows one example
                of this program's use of value-preserving integral
                promotion.  This differs from the unsigned-preserving
                semantics of some older C compilers.

 Description    This expression shows one of possibly many places
                where this compilation uses value-preserving
                semantics for small integer promotions rather than
                unsigned-preserving semantics used by some older
                compilers.  In cases where an unsigned char or
                unsigned short int is promoted to an integer, there
                are two different ways the convert could happen.
                Standard C requires that the type be converted to a
                signed int (value-preserving semantics) while some
                older compilers will convert to an unsigned int
                (unsigned-preserving semantics).  The difference in
                the choice of int or unsigned int can have an impact
                on results of expressions that use the converted
                value.  The compiler cannot determine whether or not
                a particular instance of this usage will cause an
                observable behavior difference in the program.  For
                more information, consult Section 3.2.1.1 of the
                Rationale for ANSI C.

 User Action    Be aware that older, non-standard compilers might
                interpret this expression differently.

 41.803 - VARIANTDCL

 Message        A declaration of a variant struct or variant union
                must have a single declarator that is an identifier.

 Description    A variant_struct or variant_union member was either
                not followed by a declarator or followed by more than
                one declarator.  This is not valid.

 User Action    Declare the variant_struct or variant_union member
                with a single identifier.

 41.804 - VARIANTDUP

 Message        The anonymous struct or union member "<member name>"
                duplicates the name of a member in the enclosing
                struct or union.

 Description    As members of an anonymous structure or union are
                promoted to membership of the enclosing struct/union
                type, the names of each element of the anonymous
                struct/union must not match an element name in the
                enclosing struct/union.  This message can also be
                output when the variant_struct or variant_union
                syntax is used instead of the anonymous struct/union.

 User Action    Choose a new name for either the offending anonymous
                struct/union member or the matching member of the
                enclosing type.

 41.805 - VARIANTEXT

 Message        variant struct or union is a language extension.

 Description    Declaring a member to be a variant_struct or
                variant_union is a language extension of Compaq C.
                Other C compilers might not successfully compile a
                program that uses the extension.

 User Action    Consider using an anonymous struct or union (one
                without a tag or declarator) instead:  anonymous
                structs/unions are supported by Compaq C and some
                other vendors' C compilers.

 41.806 - VARIANTTAG

 Message        A variant struct or union cannot have a tag.

 Description    A variant_struct or variant_union declaration
                specified a tag name.  This is not allowed.

 User Action    Either remove the tag or change the declaration to be
                a regular struct or union instead of a variant struct
                or union.

 41.807 - VARNOMEM

 Message        A variant struct or variant union can occur only as a
                member of a struct or union.

 Description    A declaration contained a variant_struct or
                variant_union in some place other than a member of a
                struct or union.  This is not valid.

 User Action    Correct the offending declaration.

 41.808 - VERTICALSPDIR

 Message        Vertical whitespace within pp directive.

 Description    Unexpected vertical white space as been encountered
                within a preprocessing directive.

 User Action    Remove the vertical white space from the directive.

 41.809 - VLAEXTENSION

 Message        <Context> variable length arrays are a new feature in
                the C99 standard.  Other C compilers may not support
                this extension.

 Description    This is a new language feature in the C99 revision of
                the standard.  While having a standard specification
                for portability, the feature may not yet be available
                in all of the compilers you use.

 User Action    Determine whether or not the use of this feature will
                cause portability problems for this code.

 41.810 - VOIDRETURN

 Message        The function "<name>" has return type void, and so
                must not contain a return statement with an
                expression.

 Description    The current function was declared with a void return
                type.  The expression specified in the return value
                will be evaluated but will not be returned to the
                caller.

 User Action    Either change the return type in the function
                declaration or remove the return value from the
                return statement.

 41.811 - VOIDRETURN1

 Message        The function "<name>" has return type void.  The
                return statement must not specify a return value even
                if the return expression has void type.

 Description    The current function was declared with a void return
                type.  Although some C compilers allow such a
                function to return a void expression, this is a
                violation of the C standard and may not be portable.

 User Action    Modify the program so that the return statement does
                not specify a return value.

 41.812 - VOLATILEFUNC

 Message        Ignoring volatile type qualifier in declaration of
                <name>.

 Description    The volatile type qualifier cannot be used with a
                function type.  The compiler will ignore the type
                qualifier.

 User Action    Remove the type qualifier.

 41.813 - WRTINNOWRT

 Message        Writable variable resides in nowrt extern model.

 Description    The current extern model places all external objects
                in a read-only section.  An object without a const
                type qualifier in such a section means that while the
                compiler will not diagnose writes to the object, any
                attempt to modify the object at runtime will cause
                the program to fail.  This might not have been what
                you intended.

 User Action    Place non-const objects in sections that can be
                modified.

 41.814 - XFERINTOVLA

 Message        This statement performs an invalid transfer into a
                block that declares a variably modified type or
                object.  The identifier "<name>" is variably
                modified, and declared at <where>.

 Description    It is invalid to transfer control into a block after
                that block declares a variably modified type.

 User Action    Either remove the transfer, or move the declaration
                of the variably modified type.

 41.815 - XTRALARGE

 Message        Line number is greater than the 32767 specified by
                the C standard and might not be portable.

 Description    A #line preprocessing directive specified a line
                value that is greater than 32767.  While the value is
                supported by Compaq C, the C89 standard specifies
                that the value must not be greater than 32767.
                Therefore, this program does not conform to the C89
                standard, and the directive might not be accepted by
                other C compilers.

 User Action    Be aware of this if you wish to port the program.

 41.816 - ZERODIV

 Message        <Context> division by zero occurs in evaluating the
                expression "<expression>".

 Description    A divide by zero occurred while evaluating a constant
                expression.  The value of the expression is
                undefined.

 User Action    Correct the constant expression so that it does not
                contain a division by zero.

 41.817 - ZERODIVIDE

 Message        Division by zero in expression.

 Description    A divide by zero occurs in a preprocessor constant
                expression.  The result of the divide will be zero.

 User Action    Correct the preprocessor constant expression.

 41.818 - ZEROELEMENTS

 Message        <Context> zero cannot be used as an element count
                specifier.  The specifier will be ignored, (leaving
                the member/parameter with an incomplete array type)
                in this context.

 Description    The C standard states that if an element count
                specifier is a constant expression then it shall have
                a value greater than zero.  For compatibility with
                some other C compilers, Compaq C will accept a zero
                element count specifier.  When appearing in a
                struct/union member or a parameter, the specifier
                will be ignored.

 User Action    Remove the zero.

 41.819 - ZEROELEMENTS1

 Message        <Context> zero cannot be used as an element count
                specifier.  It will be replaced with the constant one
                in this context.

 Description    The C standard states that if an element count
                specifier is a constant expression then it shall have
                a value greater than zero.  For compatibility with
                some other C compilers, Compaq C will accept a zero
                element count specifier.  When appearing outside a
                struct/union member or a parameter, the compiler will
                replace the zero with the value one.  This may or may
                not be compatible with the behavior of other C
                compilers.

 User Action    Use a valid element count specifier.

  42 - Language topics

 Compaq C language topics

 42.1 - Block

  A block is a compound statement.  It allows more than one statement
  to appear where a single statement ordinarily is used.  It is made
  up of a list of declarations and statements, enclosed in braces:

           { [declaration ...] [statement ...] }

  The declaration list is optional; if it is included, all
  declarations of variables are local to the block and supersede
  previous declarations for the duration of the block.  A block is
  entered normally when control flows into it, or when a goto
  statement transfers control to a label at the beginning of the
  block.  Each time the block is entered normally, storage is
  allocated for auto or register variables.  If, on the other hand, a
  goto statement transfers control to a label inside the block or if
  the block is the body of a switch statement, these storage
  allocations do not occur.  Blocks can be used wherever single
  statements are valid -- for example, as the action clause of an if
  statement:

            if ( i < 1 )
               {                       /* BEGINNING OF BLOCK */
                  char x;
                  for (x = 'a';  x <= 'z';  x++)
                     printf("char = %c\n", x);
               }                       /* END OF BLOCK      */

 42.2 - Valid File Specifications

  In Compaq C source programs, you can include both OpenVMS and UNIX*
  style file specifications.  Combinations of the two specifications
  are not supported by Compaq C.

  Example of a valid UNIX* file specification:

       beatle!/dba0/lennon/songs.lis.3

  Example of an invalid UNIX* file specification:

       BEATLE::DBA0:[LENNON.C]/songs.lis.3

 ----------
 * UNIX is a trademark of The Open Group.

 42.3 - Data Types

  The data type of an object must be specified in its declaration.
  The fundamental data types are the scalar types:

  short int           16-bit signed integer
  signed short int    16-bit signed integer
  unsigned short int  16-bit unsigned integer
  int                 32-bit signed integer
  signed int          32-bit signed integer
  unsigned int        32-bit unsigned integer
  long int            32-bit signed integer
  signed long int     32-bit signed integer
  unsigned long int   32-bit unsigned integer
  char                8-bit signed integer
  signed char         8-bit signed integer
  unsigned char       8-bit unsigned integer
  wchar_t             Long character (32-bit unsigned integer)
  float               32-bit (single-precision) floating-point number
  double              64-bit (double-precision) floating-point number
  long float          Interchangeable with double, but usage is
                      obsolete
  _Bool               An unsigned int that has the value 0 or 1
  _Imaginary          A C99-specified data type.  In Compaq C, use of
                      the _Imaginary keyword produces a warning,
                      which is resolved by treating it as an ordinary
                      identifier.

  The signed keyword is the default.  Declaring an object with int,
  for example, is equivalent to declaring it with signed int.
  However, char declarations should be explicitly declared, as the
  compiler offers command-line options to change the default.  If in
  doubt, use signed char over char because signed char is more
  portable.

  Strings are arrays of characters terminated by the null character
  (\0).

  Also, view the contents of the <ints.h> header file for definitions
  of platform-specific integer types.

 42. 3.1 - Array

  An array is an aggregate of subscripted elements of the same type.
  Elements of an array can have one of the fundamental data types or
  can be structures, unions, or other arrays (multidimensional
  arrays).  An array is declared using square brackets.  The
  following example declares array1 to be an array of 10 integers.
  The valid subscripts for array1 range from 0 to 9.

       int array1[10];

  The next example declares array2 to be a two-dimensional (2 by 3)
  array of integers:

       int array2[2][3];

  The elements are stored in row-major order as follows:

       array2[0][0], array2[0][1], ...  array2[1][2].

 42. 3.2 - enum

  An enumerated type is used to restrict the possible values of an
  object to a predefined list.  Elements of the list are called
  enumeration constants.

  The main use of enumerated types is to explicitly show the symbolic
  names, and therefore the intended purpose, of objects that can be
  represented with integer values.  Objects of enumerated type are
  interpreted as objects of type signed int, and are compatible with
  objects of other integral types.  The compiler automatically
  assigns integer values to each of the enumeration constants,
  beginning with 0.

  An enumerated type is a set of scalar objects that have type names.
  Variables are declared with enum specifiers in the place of the
  type specifier.  An enumerated type can have one of the following
  forms:

       enum { enumerator,...  }
       enum tag { enumerator,...  }
       enum tag

  Each enumerator defines a constant of the enumerated type (tag).
  The enumerator list forms an ordered list of the type's values.
  Each enumerator has the form "identifier [= expression]", where the
  "identifier" is the name to be used for the constant value and the
  optional "expression" gives its integer equivalent.  If a tag
  appears but no list of enumerators, the enum-specifier refers to a
  previous definition of the enumerated type, identified by the tag.

  The following example declares an enumerated object
  'background_color' with a list of enumeration constants:

  enum colors { black, red, blue, green, } background_color;

  Later in the program, a value can be assigned to the object
  'background_color':

  background_color = red;

  In this example, the compiler automatically assigns the integer
  values as follows:  black = 0, red = 1, blue = 2, and green = 3.
  Alternatively, explicit values can be assigned during the
  enumerated type definition:

  enum colors { black = 5, red = 10, blue, green = black+2 };

  Here, black equals the integer value 5, red = 10, blue = 11, and
  green = 7.  Note that blue equals the value of the previous
  constant (red) plus one, and green is allowed to be out of
  sequential order.

  Because the ANSI C standard is not strict about assignment to
  enumerated types, any assigned value not in the predefined list is
  accepted without complaint.

 42. 3.3 - Pointer

  A pointer in C is a variable that holds the address of another
  variable.  Pointers are declared with the asterisk operator.  For
  example:

       int i, *ip, *np;       /* i IS AN INTEGER, ip AND np ARE
                                 POINTERS TO INTEGERS           */

       The following operations are permitted on pointers:

       o  Assigning an address to the pointer (as in ip = &i;)

       o  Fetching the object of the pointer (by dereferencing the
          pointer) with the asterisk operator (i = *ip;, which
          assigns the addressed integer to i)

       o  Adding (as in ip += 5;, which makes ip point to the object
          that is five longwords away from the initial address in ip)

       o  Subtracting (as in i = np - ip;, which gives the number of
          objects separating the objects pointed to by np and ip)

 42. 3.4 - Structure

  A structure is an aggregate of members whose data types can differ.
  Members can be scalar variables, arrays, structures, unions, and
  pointers to any object.  The size of a structure is the sum of the
  sizes of its members, which are stored in the order of their
  declarations.  Structures are defined with the keyword struct,
  followed by an optional tag, followed by a structure-declaration
  list in braces.  The syntax is:

       struct [identifier] { struct-declaration ...  }

  Each struct-declaration is a type specifier (type keyword, struct
  tag, union tag, enum tag, or typedef name) followed by a list of
  member declarators:

       type-specifier member-declarator,...  ;

  Each member declarator defines either an ordinary variable or a bit
  field:

       declarator
  or
       [declarator] :  constant-expression

  The following example declares a new structure employee with two
  structure variables bob and susan of the structure type employee:

  struct employee {
     char *name;
     int   birthdate; /* name, birthdate, job_code, and salary are */
     int   job_code;  /* treated as though declared with const.    */
     float salary;
     };

  struct employee bob, susan;

 42. 3.5 - typedef

   Use the typedef keyword to define an abbreviated name, or
   synonym,  for a lengthy type definition.  Grammatically,
   typedef is a storage-class specifier, so it can precede any valid
   declaration.  In  such  a declaration, the identifiers name types
   instead of variables. For  example:

       typedef char CH, *CP, STRING[10], CF();

   In the scope of this declaration, CH is a synonym for "character,"
   CP  for "pointer to character," STRING for "10-element array of
   characters," and CF for "function returning a character." Each of
   the  type definitions can be used in that scope to declare
   variables. For example:

       CF     c;       /* c IS A FUNCTION RETURNING A CHARACTER */
       STRING s;       /* s IS A 10-CHARACTER STRING            */

 42. 3.6 - Union

  A union is an aggregate of members whose data types can differ.
  Members can be scalar variables, arrays, structures, unions, and
  pointers to any object.  The size of a union is the size of its
  longest member plus any padding needed to meet alignment
  requirements.  All its members occupy the same storage.  Unions are
  defined with the union keyword, followed by an optional tag,
  followed by a union-declaration list in braces.  The syntax is:

       union [identifier] { union-declaration ...  }

  Each union-declaration is a type specifier (type keyword, struct
  tag, union tag, enum tag, or typedef name) followed by a list of
  member declarators:

       type-specifier member-declarator,...  ;

  Each member declarator defines either an ordinary variable or a bit
  field:

       declarator
  or
       [declarator] :  constant-expression

  Once a union is defined, a value can be assigned to any of the
  objects declared in the union declaration.  For example:

       union name {
         dvalue;
         struct x { int value1; int value2; };
         float fvalue;
       } alberta;

       alberta.dvalue = 3.141596; /*Assigns pi to the union object*/

 Here, alberta can hold a double, struct, or float value.  The
 programmer has responsibility for tracking the current type
 contained in the union.  The type is maintained until explicitly
 changed.  An assignment expression can be used to change the type of
 value held in the union.

 42. 3.7 - Void

  You can use the void data type to declare functions that do not
  return a value.  Functions declared to be of this type cannot
  contain return statements and cannot be used in statements where a
  return value is expected.  The void data type can be used in the
  cast operation if casting to a "function without a return value
  ...".  You can also use the void data type with pointers.

 42.4 - Declarations

  Declarations specify the functions and variables referenced in a
  program.  Declarations in C have the following syntax:

        declaration:

           declaration-specifiers [init-declarator-list];

        declaration-specifiers:

           storage-class-specifier [declaration-specifiers]
           type-specifier [declaration-specifiers]
           type-qualifier [declaration-specifiers]

        init-declarator-list:

           init-declarator
           init-declarator-list, init-declarator

        init-declarator:

           declarator
           declarator = initializer

  Note the following items about the general syntax of a declaration:

   o  The storage-class-specifier, type-qualifier, and type-specifier
      can be listed in any order.  All are optional, but, except for
      function declarations, at least one such specifier or qualifier
      must be present.  Placing the storage-class-specifier anywhere
      but at the beginning of the declaration is an obsolete style.

   o  Storage-class keywords are auto, static, extern, and register.

   o  Type qualifiers are const, volatile, and __restrict.

   o  The declarator is the name of the object being declared.  A
      declarator can be as simple as a single identifier, or can be a
      complex construction declaring an array, structure, pointer,
      union, or function (such as *x, tree(), and treebar[10]).

   o  Initializers are optional and provide the initial value of an
      object.  An initializer can be a single value or a
      brace-enclosed list of values, depending on the type of object
      being declared.

   o  A declaration determines the beginning of an identifier's
      scope.

   o  An identifier's linkage is determined by the declaration's
      placement and its specified storage class.

  Consider the following example:

       volatile static int var_number = 10;

 This declaration shows a qualified type (a type, int, with a type
 qualifier, volatile), a storage class (static), a declarator (data),
 and an initializer (10).  This declaration is also a definition,
 because storage is reserved for the data object var_number.

 For more information, see HELP CC LANGUAGE_TOPICS DATA_TYPES, HELP
 CC LANGUAGE_TOPICS STORAGE_CLASSES, and HELP CC LANGUAGE_TOPICS
 TYPE_QUALIFIERS.

 42. 4.1 - Interpretation

  The symbols used in declarations are C operators, subject to the
  usual rules of precedence and associativity.  These operators are
  parentheses, brackets, and asterisks for "function returning...",
  "array of...", and "pointer to...", respectively.  Parentheses and
  brackets associate left to right; asterisk operators associate
  right to left.  Parentheses and brackets have the same precedence,
  which is higher than that of asterisks.  Parentheses are also used
  to change the associativity of the other operators.

  The following declaration, for example, is a "function returning a
  pointer to an array of pointers to char":

         char * ( *x() ) [];

  This is how the declaration is broken down to determine what it is:

         char * ( *x() ) [];

              * ( *x() ) [] is char
                ( *x() ) [] is (pointer to) char
                  *x()      is (array of) (pointer to) char
                   x()      is (pointer to) (array of) (pointer to)
                                char
                   x        is (function returning) (pointer to)
                               (array of) (pointer to) char

  In this sort of breakdown, lower precedence operators are removed
  first.  With two equal precedence operators, remove the rightmost
  if they are left-to-right operators, and the leftmost if they are
  right-to-left operators.  For example, "[]()" means "array of
  functions returning...".

 42.5 - Functions

  Functions consist of one or more blocks of statements that perform
  one logical operation.  They can be called from other functions
  either in the same program or in different programs.  A function
  may exchange values with the calling function by use of parameters.

  Function declarations have the following syntax:

       function_name()
  or
       function_name(arg1, arg2,...)
  or
       function_name(data-type arg1, data-type arg2,...)

  In the first form of the function declaration, the function takes
  no arguments.  In the second form, the function takes arguments;
  the arguments are declared outside the parameter list.  In the
  third form, the function declaration is a function prototype that
  specifies the type of its arguments in the identifier list; the
  prototype form is recommended.  In all three cases, the parenthesis
  after the function name are required.

  Compaq C for OpenVMS Systems provides a library of common
  functions.  These functions perform standard I/O operations,
  character and string handling, mathematical operations,
  miscellaneous system services, and UNIX* system emulation.  For
  more information, see HELP CC RUN-TIME_FUNCTIONS.

 ----------
 * UNIX is a trademark of The Open Group.

 42.6 - Builtin Functions

  Built-in functions allow you to directly access hardware and
  machine instructions to perform operations that are cumbersome,
  slow, or impossible in pure C.

  These functions are very efficient because they are built into the
  Compaq C compiler.  This means that a call to one of these
  functions does not result in a reference to a function in the C
  run-time library or in your programs.  Instead, the compiler
  generates the machine instructions necessary to carry out the
  function directly at the call site.  Because most of these built-in
  functions closely correspond to single VAX or Alpha machine
  instructions, the result is small, fast code.

  Some of these functions (such as those that operate on strings or
  bits) are of general interest.  Others (such as the functions
  dealing with process context) are of interest if you are writing
  device drivers or other privileged software.  Some of the functions
  are privileged and unavailable to user mode programs.

  Be sure to include the <builtins.h> header file in your source
  program to access these built-in functions.

  Compaq C supports the #pragma builtins preprocessor directive for
  compatibility with VAX C, but it is not required.

  Some of the built-in functions have optional arguments or allow a
  particular argument to have one of many different types.  To
  describe different valid combinations of arguments, the description
  of each built-in function may list several different prototypes for
  the function.  As long as a call to a built-in function matches one
  of the prototypes listed, the call is valid.  Furthermore, any
  valid call to a built-in function acts as if the corresponding
  prototype was in scope, so the compiler performs the argument
  checking and argument conversions specified by that prototype.

  The majority of the built-in functions are named after the machine
  instruction that they generate.  For more information on these
  built-in functions, see the documentation on the corresponding
  machine instruction.  In particular, see that reference for the
  structure of queue entries manipulated by the queue built-in
  functions.

  The Compaq C for OpenVMS VAX built-in functions use enumerated
  typedefs to define possible return values.  We recommend that you
  use the enumerated types to store and compare return values.

 42. 6.1 - Add Aligned Word Interlocked

  The _ADAWI function adds its source operand to the destination.
  This operation is interlocked against similar operations by other
  processors or devices in the system.

  Syntax:

       typedef enum {_adawi_sum_neg=-1, _adawi_sum_zero,
                     _adawi_sum_pos} _ADAWI_STATUS;

       _ADAWI_STATUS _ADAWI(short __src, short *__dest);

 42. 6.2 - ALLOCA

  Allocates n bytes from the stack and returns a pointer to the
  allocated memory.

  Syntax:

       void *__ALLOCA (unsigned int n);

 42. 6.3 - Branch on Bit Clear-Clear Interlocked

  The _BBCCI function performs the following functions in interlocked
  fashion:

   o  Returns the complement of the bit specified by the two
      arguments

   o  Clears the bit specified by the two arguments

  Syntax:

       typedef enum {_bbcci_oldval_1, _bbcci_oldval_0} _BBCCI_STATUS;

       _BBCCI_STATUS _BBCCI(int __position, void *__address);

 42. 6.4 - Branch on Bit Set-Set Interlocked

  The _BBSSI function performs the following functions in interlocked
  fashion:

   o  Returns the status of the bit specified by the two arguments

   o  Sets the bit specified by the two arguments

  Syntax:

       typedef enum {_bbssi_oldval_0, _bbcci_oldval_1} _BBSSI_STATUS;

       _BBSSI_STATUS _BBSSI(int __position, void *__address);

 42. 6.5 - Find First Clear Bit

  The _FFC function finds the position of the first clear bit in a
  field.  The bits are tested for clear status starting at bit 0 and
  extending to the highest bit in the field.

  Syntax:

       typedef enum {_ff_bit_not_found, _ff_bit_found} _FF_STATUS;

       _FF_STATUS _FFC(int __start, char __size, const void * __base,
                       int *__position);

 42. 6.6 - Find First Set Bit

  The _FFS function finds the position of the first set bit in a
  field.  The bits are tested for set status starting at bit 0 and
  extending to the highest bit in the field.

  Syntax:

       typedef enum {_ff_bit_not_found, _ff_bit_found} _FF_STATUS;

       _FF_STATUS _FFS(int __start, char __size, const void *__base,
                       int *__position);

 42. 6.7 - Halt

  The _HALT function halts the processor when executed by a process
  running in kernel mode.  This is a privileged function.

  Syntax:

       void _HALT(void);

 42. 6.8 - Insert Entry into Queue at Head Interlocked

  The _INSQHI function inserts an entry into the front of a queue in
  an indivisible manner.  This operation is interlocked against
  similar operations by other processors or devices in the system.

  Syntax:

       typedef enum {_insqi_inserted_many, _insqi_not_inserted,
                     _insqi_inserted_only} _INSQI_STATUS;

       _INSQI_STATUS _INSQHI(void *__new_entry, void *__head);

 42. 6.9 - Insert Entry into Queue at Tail Interlocked

  The _INSQTI function inserts an entry at the end of a queue in an
  indivisible manner.  This operation is interlocked against similar
  operations by other processors or devices in the system.

  Syntax:

       typedef enum {_insqi_inserted_many, _insqi_not_inserted,
                     _insqi_inserted_only} _INSQI_STATUS;

       _INSQI_STATUS _INSQTI(void *__new_entry, void *__head);

 42. 6.10 - Insert Entry in Queue

  The _INSQUE function inserts a new entry into a queue following an
  existing entry.

  Syntax:

       typedef enum {_insque_inserted_only, _insque_inserted_many}
                     _INSQUE_STATUS;

       _INSQUE_STATUS _INSQUE(void *__new_entry, void
                              *__predecessor);

 42. 6.11 - Locate Character

  The _LOCC function locates the first character in a string matching
  the target character.

  Syntax:

       unsigned short _LOCC(char __target, unsigned short __length,
                            const char *__string, ...);

  where the optional argument (...) is char **position.

 42. 6.12 - Move from Processor Register

  The _MFPR function returns the contents of a processor register.
  This is a privileged function.

  Syntax:

       void _MFPR(int register_num, int *destination);
       void _MFPR(int register_num, unsigned int *destination);

 42. 6.13 - Move Character 3 Operand

  The _MOVC3 function copies a block of memory.  It is the preferred
  way to copy a block of memory to a new location.

  Syntax:

       void _MOVC3(unsigned short __length, const char *__src, char
                   *__dest, ...);

  where the ... is one or two optional arguments:

   o  char **endscr

   o  char **enddest

 42. 6.14 - Move Character 5 Operand

  The _MOVC5 function allows the source string specified by the
  pointer and length pair to be moved to the destination string
  specified by the other pointer and length pair.  If the source
  string is smaller than the destination string, the destination
  string is padded with the specified character.

  Syntax:

       void _MOVC5(unsigned short __srclen, const char *__src, char
                   __fill, unsigned short __destlen, char *__dest,
                   ...);

  where the ... is one to three optional arguments:

   o  unsigned short *unmoved_src

   o  char ** endscr

   o  char **enddest

 42. 6.15 - Move from Processor Status Longword

  The _MOVPSL function stores the value of the Processor Status
  Longword (PSL).

  Syntax:

       void _MOVPSL(void *__psl);

 42. 6.16 - Move to Processor Register

  The _MTPR function loads a value into one of the special processor
  registers.  It is a privileged function.

  Syntax:

       int _MTPR(int src, int register_num);

 42. 6.17 - Probe Read Accessibility

  The _PROBER function checks to see if you can read the first and
  last byte of the given address and length pair.

  Syntax:

       typedef enum {_probe_not_accessible, _probe_accessible}
                     _PROBE_STATUS;

       _PROBE_STATUS _PROBER(char __mode, unsigned short __length,
                             const void *__address);

 42. 6.18 - Probe Write Accessibility

  The _PROBEW function checks the write accessibility of the first
  and last byte of the given address and length pair.

  Syntax:

       typedef enum {_probe_not_accessible, _probe_accessible}
                     _PROBE_STATUS;

       _PROBE_STATUS _PROBEW(char __mode, unsigned short __length,
                             const void *__address);

 42. 6.19 - Read General-Purpose Register

  The _READ_GPR function returns the value of a general-purpose
  register.

  Syntax:

       int _READ_GPR(int register_number);

 42. 6.20 - Remove Entry from Queue at Head Interlocked

  The _REMQHI function removes the first entry from the queue in an
  indivisible manner.  This operation is interlocked against similar
  operations by other processors or devices in the system.

  Syntax:

       typedef enum {_remqi_removed_more, _remqi_not_removed,
                     _remqi_removed_empty, _remqi_empty}
                     _REMQI_STATUS;

       _REMQI_STATUS _REMQHI(void *__head), void *__removed_entry);

 42. 6.21 - Remove Entry from Queue at Tail Interlocked

  The _REMQTI function removes the last entry from the queue in an
  indivisible manner.  This operation is interlocked against similar
  operations by other processors or devices in the system.

  Syntax:

       typedef enum {_remqi_removed_more, _remqi_not_removed,
                     _remqi_removed_empty, _remqi_empty}
                     _REMQI_STATUS;

       _REMQI_STATUS _REMQTI(void *__head, void *__removed_entry);

 42. 6.22 - Remove Entry from Queue

  The _REMQUE function removes an entry from a queue.

  Syntax:

       typedef enum {_remque_removed_more, _remque_removed_empty,
                     _remque_empty} _REMQUE_STATUS;

       _REMQUE_STATUS _REMQUE(void *__entry, void *__removed_entry);

 42. 6.23 - Scan Characters

  The _SCANC function locates the first character in a string with
  the desired attributes.  The attributes are specified through a
  table and a mask.

  Syntax:

       unsigned short _SCANC(unsigned short __length, const char
                             *__string, const char *__table, char
                             __mask, ...);

  where the optional argument (...) is char **match.

 42. 6.24 - Skip Character

  The _SKPC function locates the first character in a string that
  does not match the target character.

  Syntax:

       unsigned short _SKPC(char __target, unsigned short __length,
                            const char *__string, ... );

  where the optional argument (...) is char **position.

 42. 6.25 - Span Characters

  The _SPANC function locates the first character in a string without
  certain attributes.  The attributes are specified through a table
  and a mask.

  Syntax:

       unsigned short _SPANC(unsigned short __length, const char
                             *__string, const char *__table, char
                             __mask, ...);

  where the optional argument (...) is char **mask.

 42.7 - Variable Length Argument Lists

  The set of functions and macros defined and declared in the
  <varargs.h> and the <stdarg.h> header files provide a method of
  accessing variable-length argument lists.  (Note that the
  <stdarg.h> functions are defined by the ANSI C standard and are,
  therefore, portable as compared with those defined in <varargs.h>.)

  The Compaq C RTL functions such as printf and execl, for example,
  use variable-length argument lists.  User-defined functions with
  variable-length argument lists that do not use <varargs.h> or
  <stdarg.h> are not portable due to the different argument-passing
  conventions of various machines.

  To use these functions and macros in <stdarg.h>, you must include
  the <stdarg.h> header file with the following preprocessor
  directive:

       #include <stdarg.h>

  The <stdarg.h> header file declares a type (va_list) and three
  macros (va_start, va_arg, and va_end) for advancing through a list
  of function arguments of varying number and type.  The macros have
  the following syntax:

       void va_start(va_list ap, parmN);

       type va_arg(va_list ap, type);

       void va_end(va_list ap);

  The va_start macro initializes the object ap of type va_list for
  subsequent use by va_arg and va_end.  The va_start macro must be
  invoked before any access to the unnamed arguments.  The parameter
  parmN is the identifier of the rightmost parameter in the variable
  parameter list of the function definition.  If parmN is declared
  with the register storage class, with a function or array type, or
  with a type that is not compatible with the type that results after
  application of the default arguments promotions, the behavior is
  undefined.  The va_start macro returns no value.

  The va_arg macro expands to an expresion that has the type and
  value of the next argument in the call.  The parameter ap is the
  same as the one initialized by va_start.  Each invocation of va_arg
  modifies ap so that the values of successive arguments are returned
  in turn.  The parameter "type" is a type name specified such that
  the type of a pointer to an object that has the specified type can
  be obtained by postfixing an asterisk (*) to "type".  If there is
  no actual next argument, or if type is not compatible with the type
  of the next actual argument (as promoted according to the default
  argument promotions), the behavior is undefined.  The first
  invocation of va_arg after that of va_start returns the value of
  the argument after that specified by parmN.  Successive invocations
  return the values of the remaining arguments in turn.

  The va_end macro facilitates a normal return from the function
  whose variable argument list was referred to by the expansion of
  va_start that initialized the va_list ap object.  The va_end macro
  can modify ap) so that it can no longer be used (without an
  intervening invocation of va_start).  If there is no corresponding
  invocation of va_start or if va_end is not invoked before the
  return, the behavior is undefined.  The va_end macro returns no
  value.

 42.8 - Preprocessor

  The Compaq C preprocessor uses directives to affect the compilation
  of a source file.  For Compaq C on OpenVMS systems, these
  directives are processed by an early phase of the compiler, not by
  a separate program.

  The preprocessor directives begin with a number sign (#) and do not
  end with a semicolon.  The number sign must appear in the first
  column of the source line.

 42. 8.1 - Null directive (#)

  A preprocessing directive of the form # <newline> is a null
  directive and has no effect.

 42. 8.2 - Conditional Compilation

  Conditional compilation is provided by the following directives:

  #if constant-expression
     Checks whether the constant expression is nonzero (true).

  #ifdef identifier
     Checks whether the identifier is defined.

  #ifndef identifier
     Checks whether the identifier is undefined.

  #else
     Introduces source lines to be compiled as an alternative to the
     conditions tested by the previous directives.

  #elif constant-expression
     Delimits alternative source lines to be compiled if the constant
     expression in the corresponding #if, #ifdef, or #ifndef
     directive is false and if the additional constant expression
     presented in the #elif directive is true.  An #elif directive is
     optional.

  #endif
     Ends the scope of the previous directives.

  If the condition checked by #if, #ifdef, or #ifndef is true, then
  all lines between the #else, #elif, and #endif are ignored.  If the
  condition is false, then any lines between the conditional
  directive and the #else or #elif (if any) are ignored.  If there is
  no #else, then the lines between the conditional and the #endif are
  ignored.

 42. 8.3 - #define

  The #define preprocessor directive has the form:

       #define identifier token-string

  The preprocessor substitutes the token string everywhere in the
  program that it finds the identifier except within comments,
  character constants, or string constants.

  Macro replacements are defined in a #define directive of the
  following form:

       #define name([parm1[,parm2,...]]) token-string

  Within the program, all macro references that have the following
  form are replaced by the token string.  The arguments in the macro
  reference replace the corresponding parameters in the token string.

       name([arg1[,arg2,...]])

 42. 8.4 - #dictionary

  The #dictionary directive is retained for compatibility with VAX C
  and is supported only when running the Compaq C compiler in VAX C
  mode (/STANDARD=VAXC).  See also the ANSI C equivalent #pragma
  dictionary directive.

  The #dictionary directive extracts Common Data Dictionary (CDD)
  definitions from the specified dictionary.  These definitions are
  then translated into Compaq C and included in the program.

  The #dictionary directive has the following form:

       #dictionary "cdd_path"

  The cdd_path is a character string that gives the path name of the
  CDD record.  It can also be a macro that resolves to such a
  character string.

 42. 8.5 - #error

  The #error directive issues an optional diagnostic message, and
  ends compilation.  This directive has the following form:

       #error [message] <newline>

 42. 8.6 - #include

  The #include directive instructs the preprocessor to insert the
  contents of the specified file or module into the program.  An
  #include directive can have one of three forms:

       #include "filespec"
       #include <filespec>
       #include module-name

  The first two forms are ANSI-compliant methods of file inclusion
  and are therefore more portable.  In these forms, .h is the default
  file type, unless the compiler is instructed to supply no default
  type (that is, a type of just ".") by the
  /ASSUME=NOHEADER_TYPE_DEFAULT qualifier.

  The third form is specific to OpenVMS systems for specifying the
  inclusion of a module from a text library, and is not generally
  needed or recommended because the ANSI forms also cause the text
  libraries to be searched.

  For the order of search, see /INCLUDE_DIRECTORY.

  There is no defined limit to the nesting level of #include files
  and modules.

 42. 8.7 - #line

  The #line directive applies a specified line number and optional
  file specification to the next line of source text.  This can be
  useful for diagnostic messages.  The #line directive has the
  following forms:

       #line integer-constant <newline>
       #line integer-constant "filename" <newline>
       #line pp-tokens <newline>

  In the first two forms, the compiler gives the line following a
  #line directive the number specified by the integer constant.  The
  optional filename in quotation marks indicates the name of the
  source file that the compiler will provide in its diagnostic
  messages.  If the filename is omitted, the file name used is the
  name of the current source file or the last filename specified in a
  previous #line directive.

  In the third form, macros in the #line directive are expanded
  before it is interpreted.  This allows a macro call to expand into
  the integer-constant, filename, or both.  The resulting #line
  directive must match one of the other two forms, and is then
  processed as appropriate.

 42. 8.8 - #module

  The #module directive is retained for compatibility with VAX C and
  is supported only when running the Compaq C compiler in VAX C mode
  (/STANDARD=VAXC).  See also the ANSI C equivalent #pragma module
  directive.

  The #module directive passes information about an object module to
  the compiler.

  The #module directive can have one of the following forms:

       #module identifier identifier
       #module identifier string

  The first argument of the directive is a Compaq C identifier or
  macro that resolves to an identifier.  It gives the
  system-recognized (for example, internally recognized by the
  debugger and the librarian) name of the module; the object file
  name remains the same.  The second argument specifies the optional
  identification that appears on listings.  This may be either a VAX
  C identifier, a character-string constant with no more than 31
  characters, or a macro that resolves to one of these.

  There can be only one #module directive per compilation.  It can
  appear anywhere before the C language text.

 42. 8.9 - #pragma

  The #pragma directive performs compiler-specific tasks as
  designated by each implementation of the C language.

  All pragmas have a <pragma-name>_m version, which makes the pragma
  subject to macro replacement.  For example, #pragma assert is not
  subject to macro expansion, but #pragma assert_m is.

  Compaq C for OpenVMS Systems supports the following pragmas:

  #pragma assert[_m]

      Lets you specify assertions that the compiler can make about a
      program to generate more efficient code.  Can also be used to
      verify that certain compile-time conditions are met; this is
      useful in detecting conditions that could cause run-time
      faults.

      The #pragma assert directive is never needed to make a program
      execute correctly, however if a #pragma assert is specified,
      the assertions must be valid or the program might behave
      incorrectly.

      Syntax:

      #pragma assert non_zero(constant-expression) string-literal

      When the compiler encounters this directive, it evaluates the
      constant-expression.  If the expression is zero, the compiler
      generates a message that contains both the specified
      string-literal and the compile-time constant-expression.  For
      example:

      #pragma assert non_zero(sizeof(a) == 12) "a is the wrong size"

      In this example, if the compiler determines that the sizeof a
      is not 12, the following diagnostic message is output:

      CC-W-ASSERTFAIL, The assertion "(sizeof(a) == 12)" was not
      true. a is the wrong size.

      The #pragma assert non_zero directive can appear either inside
      or outside a function body.  When used inside a function body,
      the pragma can appear wherever a statement can appear, but the
      pragma is not treated as a statement.  When used outside a
      function body, the pragma can appear anywhere a declaration can
      appear, but the pragma is not treated as a declaration.

      Because macro replacement is not performed on #pragma assert,
      you might need to use the #pragma assert_m directive to obtain
      the results you want.  Consider the following program that
      verifies both the size of a struct and the offset of one of its
      elements:

      #include <stddef.h>
      typedef struct {
          int a;
          int b;
      } s;
      #pragma assert non_zero(sizeof(s) == 8) "sizeof assert failed"
      #pragma assert_m non_zero(offsetof(s,b) == 4) "offsetof assert
      failed"

      Because offsetof is a macro, the second pragma must be #pragma
      assert_m so that offsetof will expand correctly.

  #pragma builtins[_m]

      Enables the Compaq C built-in functions that directly access
      processor instructions.

      The #pragma builtins directive is provided for VAX C
      compatibility.

      Compaq C implements #pragma builtins by including the
      <builtins.h> header file, and is equivalent to #include
      <builtins.h> on OpenVMS systems.

      This header file contains prototype declarations for the
      built-in functions that allow them to be used properly.  By
      contrast, VAX C implemented this pragma with special-case code
      within the compiler, which also supported a #pragma nobuiltins
      preprocessor directive to turn off the special processing.
      Because declarations cannot be "undeclared", Compaq C does not
      support #pragma nobuiltins.  Furthermore, the names of all the
      built-in functions use a naming convention defined by ANSI C to
      be in a namespace reserved to the C language implementation.

  #pragma dictionary[_m]

      Allows you to extract CDD data definitions and include these
      definitions in your program.

      The ANSI C compliant #pragma dictionary directive is equivalent
      to the VAX C compatible #dictionary directive, but is supported
      in all compiler modes.  (The #dictionary directive is retained
      for compatibility and is supported only when compiling with the
      /STANDARD=VAXC qualifier.)

      Syntax:

           #pragma dictionary "cdd_path" [null_terminate]
           [name(structure_name)] [text1_to_array | text1_to_char]

      The cdd_path is a character string that gives the path name of
      the CDD record.  It can also be a macro that resolves to such a
      character string.

      The optional null_terminate keyword can be used to specify that
      all string data types should be null-terminated.

      The optional name() can be used to supply an alternate tag name
      or a declarator, struct_name for the outer level of a CDD
      structure.

      The optional text1_to_char keyword forces the CDD type "text"
      to be translated to char, rather than "array of char" if the
      size is 1.  This is the default if null_terminate is not
      specified.

      The optional text1_to_array keyword forces the CDD type "text"
      to be translated to type "array of char" even when the size
      is 1.  This is the default when null_terminate is specified.

  #pragma environment[_m]

       Sets, saves, or restores the states of context pragmas.  This
       directive protects include files from contexts set by
       encompassing programs, and protects encompassing programs from
       contexts that could be set in header files that they include.

       The #pragma environment directive affects the following
       pragmas:

        o  #pragma extern_model

        o  #pragma extern_prefix

        o  #pragma member_alignment

        o  #pragma message

        o  #pragma names

        o  #pragma pointer_size

        o  #pragma required_pointer_size

       Syntax:

           #pragma environment command_line
           #pragma environment header_defaults
           #pragma environment restore
           #pragma environment save

      command_line

           Sets, as specified on the command line, the states of all
           the context pragmas.  You can use this pragma to protect
           header files from environment pragmas that take effect
           before the header file is included.

      header_defaults

           Sets the states of all the context pragmas to their
           default values.  This is almost equivalent to the
           situation in which a program with no command-line options
           and no pragmas is compiled, except that this pragma sets
           the pragma message state to #pragma nostandard, as is
           appropriate for header files.

      save

           Saves the current state of every pragma that has an
           associated context.

      restore

           Restores the current state of every pragma that has an
           associated context.

  #pragma extern_model[_m]

       Controls the compiler's interpretation of objects that have
       external linkage.  This pragma lets you choose the global
       symbol model to be used for externs.

       Syntax:

           #pragma extern_model common_block [attr[,attr]...]
           #pragma extern_model relaxed_refdef [attr[,attr]...]
           #pragma extern_model strict_refdef "name" [attr[,attr]...]
           #pragma extern_model strict_refdef
           #pragma extern_model globalvalue
           #pragma extern_model save
           #pragma extern_model restore

      The default model on Compaq C is #pragma relaxed_refdef noshr.
      This is different from the model used by VAX C, which is common
      block, shr.

      The [attr[,attr]...] are optional psect attribute
      specifications chosen from the following (at most one from each
      line):

       o  gbl lcl (Not allowed with relaxed_refdef)

       o  shr noshr

       o  wrt nowrt

       o  pic nopic (Not meaningful for Alpha)

       o  ovr con

       o  rel abs

       o  exe noexe

       o  vec novec

       o  2 long 3 quad 4 octa 9 page

      See the Compaq C User's Guide for more information on the
      #pragma extern_model directive.

  #pragma extern_prefix[_m]

       Controls the compiler's synthesis of external names, which the
       linker uses to resolve external name requests.

       When you specify #pragma extern_prefix with a string argument,
       the compiler prepends the string to all external names
       produced by the declarations that follow the pragma
       specification.

       This pragma is useful for creating libraries where the
       facility code can be attached to the external names in the
       library.

       Syntax:

           #pragma extern_prefix "string" [(id[,id]...)]
           #pragma extern_prefix  save
           #pragma extern_prefix  restore

      Where "string" prepends the quoted string to external names in
      the declarations that follow the pragma specification.

      You can also specify an extern prefix for specific identifiers
      using the optional list [(<emphasis>(id)[,<emphasis>(id)]...)].

      The save and restore keywords can be used to save the current
      pragma prefix string and to restore the previously saved pragma
      prefix string, respectively.

      The default external prefix, when none has been specified by a
      pragma, is the null string.

  #pragma [no]inline[_m]

      Expands function calls inline.  The function call is replaced
      with the function code itself.

      Syntax:

           #pragma inline (id,...)
           #pragma noinline (id,...)

      If a function is named in an inline directive, calls to that
      function will be expanded as inline code, if possible.

      If a function is named in a noinline directive, calls to that
      function will not be expanded as inline code.

      If a function is named in both an inline and a noinline
      directive, an error message is issued.

      For calls to functions named in neither an inline nor a
      noinline directive, DEC C expands the function as inline code
      whenever appropriate as determined by a platform-specific
      algorithm.

  #pragma [no]member_alignment[_m]

      Tells the compiler to align structure members on the next
      boundary appropriate to the type of the member rather than the
      next byte.  For example, a long variable is aligned on the next
      longword boundary; a short variable on the next word boundary.

      Syntax:

           #pragma nomember_alignment [base_alignment]
           #pragma member_alignment [save | restore]

      The optional base_alignment parameter can be used with #pragma
      nomember_alignment to specify the base alignment of the
      structure.  Use one of the following keywords to specify the
      base_alignment:

       o  BYTE (1 byte)

       o  WORD (2 bytes)

       o  LONGWORD (4 bytes)

       o  QUADWORD (8 bytes)

       o  OCTAWORD (16 bytes)

      The optional save and restore keywords can be used to save the
      current state of the member_alignment and to restore the
      previous state, respectively.  This feature is necessary for
      writing header files that require member_alignment or
      nomember_alignment, or that require inclusion in a
      member_alignment that is already set.

  #pragma message[_m]

      Controls the issuance of individual diagnostic messages or
      groups of messages.  Use of this pragma overrides any
      command-line options that may affect the issuance of messages.

      Syntax:

           #pragma message option1 message-list
           #pragma message option2
           #pragma message (quoted-string)

      where option1 is:

         disable             Suppresses the issuance of the indicated
                             messages.

                             Only messages of severity Warning (W) or
                             Information (I) can be disabled.  If the
                             message has severity of Error (E) or
                             Fatal (F), it is issued regardless of
                             any attempt to disable it.

         enable              Enables the issuance of the indicated
                             messages.

         emit_once           Emits the specified messages only once
                             per compilation.

         emit_always         Emits the specified messages at every
                             occurrence of the condition.

         error               Sets the severity of each message in the
                             message-list to Error.

         fatal               Sets the severity of each message on the
                             message-list to Fatal.

         informational       Sets the severity of each message in the
                             message-list to Informational.

         warning             Sets the severity of each message in the
                             message-list to Warning.

      The message-list can be any one of the following:

       o  A single message identifier (within parentheses or not).

       o  A single message-group name (within parentheses or not).
          Message-group names are:

             ALL             All the messages in the compiler

             ALIGNMENT       Messages about unusual or inefficient
                             data alignment.

             C_TO_CXX        Messages reporting the use of C features
                             that would be invalid or have a
                             different meaning if compiled by a C++
                             compiler.

             CDD             Messages about CDD (Common Data
                             Dictionary) support.

             CHECK           Messages reporting code or practices
                             that, although correct and perhaps
                             portable, are sometimes considered
                             ill-advised because they can be
                             confusing or fragile to maintain.  For
                             example, assignment as the test
                             expression in an "if" statement.

                             NOTE:  The check group gets defined by
                             enabling level5 messages.

             DEFUNCT         Messages reporting the use of obsolete
                             features:  ones that were commonly
                             accepted by early C compilers but were
                             subsequently removed from the language.

             NEWC99          Messages reporting the use of the new
                             C99 Standard features.

             NOANSI          Messages reporting the use of non-ANSI
                             Standard features.  The NOANSI message
                             group is a synonym for NOC89.  Also see
                             message groups NEWC99, NOC89, NOc99.

             NOC89           Messages reporting the use of non-C89
                             Standard features.

             NOC99           Messages reporting the use of non-C99
                             Standard features.

             OBSOLESCENT     Messages reporting the use of features
                             that are valid in ANSI Standard C, but
                             which were identified in the standard as
                             being obsolescent and likely to be
                             removed from the language in a future
                             version of the standard.

             OVERFLOW        Messages that report assignments and/or
                             casts that can cause overflow or other
                             loss of data significance.

             PERFORMANCE     Messages reporting code that might
                             result in poor run-time performance.

             PORTABLE        Messages reporting the use of language
                             extensions or other constructs that
                             might not be portable to other compilers
                             or platforms.

             PREPROCESSOR    Messages reporting questionable or
                             non-portable use of preprocessing
                             constructs.

             QUESTCODE       Messages reporting questionable coding
                             practices.  Similar to the check group,
                             but messages in this group are more
                             likely to indicate a programming error
                             rather than just a non-robust style.
                             Enabling the QUESTCODE group provides
                             lint-like checking.

             RETURNCHECKS    Messages related to function return
                             values.

             UNINIT          Messages related to using uninitialized
                             variables.

             UNUSED          Messages reporting expressions,
                             declarations, header files, CDD records,
                             static functions, and code paths that
                             are not used.

                             Note, however, that unlike any other
                             messages, these messages must be enabled
                             on the command line
                             (/WARNINGS=ENABLE=UNUSED) to be
                             effective.

      o  A single message-level name (within parentheses or not).

         Note:  There is a core of very important compiler messages
         that are enabled by default, regardless of anything
         specified with /WARNINGS or #pragma message.  Referred to as
         message level 0, it includes all messages issued in header
         files, and comprises what is known as the nostandard group.
         All other message levels add additional messages to this
         core of enabled messages.

         You cannot disable level 0.  However, you can disable
         individual messages in level 0 that are not errors or
         fatals.

         Message-level names are:

           LEVEL1          Important messages.  These are less
                           important than level 0, because messages
                           in this group are not displayed if #pragma
                           nostandard is active.

           LEVEL2          Moderately important messages.  This level
                           is used to introduce new messages that
                           will be output in the DIGITAL UNIX V4.0
                           release.  LEVEL2 is the default for
                           DIGITAL UNIX and Tru64 UNIX platforms.

           LEVEL3          Less important messages.  In general,
                           these are the messages output by default
                           in DEC C Version 5.5 for OpenVMS Systems.
                           LEVEL3 is the default message level for
                           Compaq C for OpenVMS systems.

           LEVEL4          Useful check/portable messages.

           LEVEL5          Not so useful check/portable messages.

           LEVEL6          All messages in LEVEL5 plus additional
                           "noisy" messages.

        Enabling a level also enables all the messages in the levels
        below it.  So enabling LEVEL3 messages also enables messages
        in LEVEL2 and LEVEL1.

        Disabling a level also disables all the messages in the
        levels above it.  So disabling LEVEL4 messages also disables
        messages in LEVEL5 and LEVEL6.

      o  A comma-separated list of message identifiers, group names,
         and messages levels, freely mixed, enclosed in parentheses.

     option2 is:

           save -- saves the current state of which messages are
           enabled and disabled.

           restore -- restores the previous state of which messages
           are enabled and disabled.

     The save and restore options are useful primarily within header
     files.

     The #pragma message (quoted-string) form outputs the
     quoted-string as a compiler message.  This form of the pragma is
     subject to macro replacement.  For example, the following is
     valid:

        #pragma message ("Compiling file " __FILE__)

  #pragma module[_m]

      The ANSI C compliant #pragma module directive is equivalent to
      the VAX C compatible #module directive, but is supported in all
      compiler modes.  (The #module directive is retained for
      compatibility and is supported only when compiling with the
      /STANDARD=VAXC qualifier.) The #pragma module directive is
      specific to Compaq C for OpenVMS Systems and is not portable.

      Use the #pragma module directive to change the
      system-recognized module name and version number.  You can find
      the module name and version number in the compiler listing file
      and the linker load map.

      Syntax:

           #pragma module identifier identifier
           #pragma module identifier string

      The first parameter must be a valid Compaq C identifier.  It
      specifies the module name to be used by the linker.  The second
      parameter specifies the optional identification that appears on
      listings and in the object file.  It must be either a valid
      Compaq C identifier of 31 characters or less, or a
      character-string constant of 31 characters or less.

      Only one #pragma module directive can be processed per
      compilation unit, and that directive must appear before any C
      language text.  The #pragma module directive can follow other
      directives, such as #define, but it must precede any function
      definitions or external data definitions.

  #pragma names[_m]

      Provides the same kinds of control over the mapping of external
      identifiers' object-module symbols as does the /NAMES
      command-line qualifier, and it uses the same keywords (except
      that the "lowercase" keyword is not supported).  But as a
      pragma, the controls can be applied selectively to regions of
      declarations.

      This pragma should only be used in header files and is intended
      for use by developers who supply libraries and/or header files
      to their customers.

      The pragma has a save/restore stack that is also managed by
      #pragma environment, and so it is well-suited for use in header
      files.  The effect of #pragma environment header_defaults is to
      set NAMES to "uppercase,truncated", which is the compiler
      default.

      Syntax:

           #pragma names <stack-option>
           #pragma names <case-option>
           #pragma names <length-option>

      Where

      <stack-option> is one of:

       o  save - save the current names state

       o  restore - restore a saved names state

      <case-option> is one of:

       o  uppercase - uppercase external names

       o  as_is - do not change case

      <length-option> is one of:

       o  truncated - truncate at 31 characters

       o  shortened - shorten to 31 using CRC

  #pragma pack[_m]

      Specifies the byte boundary for packing members of C
      structures.

      Syntax:

           #pragma pack [n]

      The n specifies the new alignment restriction in bytes:

          1 - align to byte

          2 - align to word

          4 - align to longword

          8 - align to quadword

          16 - align to octaword

      A structure member is aligned to either the alignment specified
      by #pragma pack or the alignment determined by the size of the
      structure member, whichever is smaller.  For example, a short
      variable in a structure gets byte-aligned if #pragma pack 1 is
      specified.  If #pragma pack 2, 4, or 8 is specified, the short
      variable in the structure gets aligned to word.

      When #pragma pack is specified with a value of 0, packing
      reverts to that specified by the /[NO]MEMBER_ALIGNMENT
      qualifier setting (either explicit or default) on the command
      line.

  #pragma [no]standard[_m]

      Directs the compiler to define regions of source code where
      portability diagnostics are not to be issued.

      Use #pragma nostandard to suppress diagnostics about non-ANSI C
      extensions, regardless of the /STANDARD qualifier specified,
      until a #pragma standard directive is encountered.

      Use #pragma standard to reinstate the setting of the /STANDARD
      qualifier that was in effect before before the last #pragma
      nostandard was encountered.

      Every #pragma standard directive must be preceded by a
      corresponding #pragma nostandard directive.

      Note that this pragma does not change the current mode of the
      compiler or enable any extensions not already supported in that
      mode.

 42. 8.10 - #undef

  The #undef directive cancels a previously defined macro
  replacement.  Any other macro replacements that occurred before the
  #undef directive remain.

  The #undef directive has the following syntax:

       #undef identifier

 42.9 - Predefined Macros

  In addition to the ANSI-compliant, implementation-independent
  macros described in the Compaq C Language Reference Manual, Compaq
  C for OpenVMS systems provides the following predefined macros:

 42. 9.1 - System Identification Macros

  Each implementation of the Compaq C compiler automatically defines
  macros that you can use to identify the system on which the program
  is running.  These macros can assist in writing code that executes
  conditionally, depending on the architecture or operating system on
  which the program is running.

  The following table lists the traditional and new spellings of
  these predefined macro names for Compaq C on OpenVMS systems.  Both
  spellings are defined for each macro unless ANSI C mode is in
  effect (/STANDARD=ANSI89), in which case only the new spellings are
  defined.

        Traditional spelling      New spelling

             vms                   __vms
             VMS                   __VMS
             vms_version           __vms_VERSION
             VMS_VERSION           __VMS_VERSION
                                   __VMS_VER
                                   __DECC_VER
                                   __DECCXX_VER
             vax                   __vax
             VAX                   __VAX
             vaxc                  __vaxc
             VAXC                  __VAXC
             vax11c                __vax11C
             VAX11C                __VAX11C
              ---                  __DECC
              ---                  __STDC__
                                   __STDC_HOSTED__
                                   __STDC_VERSION__
                                   __STDC_ISO_10646__
                                   __MIA

  Note that __STDC__ is defined only in strict ANSI C mode.

  Predefined macros (with the exception of vms_version, VMS_VERSION,
  __vms_version and __VMS_VERSION) are defined as 1 or 0, depending
  on the system you're compiling on (VAX or Alpha processor), the
  compiler defaults, and the qualifiers used.  For example, if you
  compiled using G_floating format, then __D_FLOAT and __IEEE_FLOAT
  (Alpha processors only) are predefined to be 0, and __G_FLOAT is
  predefined as if the following were included before every
  compilation unit:

  #define  __G_FLOAT  1

  These macros can assist in writing code that executes
  conditionally.  They can be used in #elif, #if, #ifdef, and #ifndef
  directives to separate portable and nonportable code in a Compaq C
  program.  The vms_version, VMS_VERSION, __vms_version, and
  __VMS_VERSION macros are defined with the value of the OpenVMS
  version on which you are running (for example, Version 6.0).

 42. 9.2 - Compiler Mode Macros

  The following predefined macros are defined as 1 if the
  corresponding compiler mode is selected (Otherwise, they are
  undefined):

  __DECC_MODE_STRICT     !  /STANDARD=ANSI89
  __DECC_MODE_RELAXED    !  /STANDARD=RELAXED_ANSI89
  __DECC_MODE_VAXC       !  /STANDARD=VAXC
  __DECC_MODE_COMMON     !  /STANDARD=COMMON
  __STDC__               !  /STANDARD=ANSI89, /STANDARD=RELAXED_ANSI89
  __STDC_VERSION__       !  /STANDARD=ISOC94
  __MS                   !  /STANDARD=MS

 42. 9.3 - Floating Point Macros

  Compaq C automatically defines the following predefined macros
  pertaining to the format of floating-point variables.  You can use
  them to identify the format with which you are compiling your
  program:

  __D_FLOAT
  __G_FLOAT

 42. 9.4 - RTL Standards Macros

  Compaq C defines the following macros that you can explicitly
  define (using the /DEFINE qualifier or the #define preprocessor
  directive) to control which Compaq C RTL functions are declared in
  header files and to obtain standards conformance checking:

  _XOPEN_SOURCE_EXTENDED
  _XOPEN_SOURCE
  _POSIX_C_SOURCE
  _ANSI_C_SOURCE
  _VMS_V6_SOURCE
  _DECC_V4_SOURCE
  __BSD44_CURSES
  __VMS_CURSES
  _SOCKADDR_LEN

 42. 9.5 - HIDE FORBIDDEN NAMES

  The ANSI C standard specifies exactly what identifiers in the
  normal name space are declared by the standard header files.  A
  compiler is not free to declare additional identifiers in a header
  file unless the identifiers follow defined rules (the identifier
  must begin with an underscore followed by an uppercase letter or
  another underscore).

  When running the Compaq C compiler in strict ANSI C mode
  (/STANDARD=ANSI89), versions of the standard header files are
  included that hide many identifiers that do not follow the rules.
  The header file <stdio.h>, for example, hides the definition of the
  macro TRUE.  The compiler accomplishes this by predefining the
  macro __HIDE_FORBIDDEN_NAMES in strict ANSI mode.

  You can use the command line qualifier
  /UNDEFINE="__HIDE_FORBIDDEN_NAMES" to prevent the compiler from
  predefining this macro, thus including macro definitions of the
  forbidden names.

  The header files are modified to only define additional VAX C names
  if __HIDE_FORBIDDEN_NAMES is undefined.  For example, <stdio.h>
  might contain the following:

          #ifndef __HIDE_FORBIDDEN_NAMES
          #define TRUE    1
          #endif

 42. 9.6 - CC$gfloat

  When you compile using the /G_FLOAT qualifier, CC$gfloat is defined
  as 1.  When you compile without the /G_FLOAT qualifier, CC$gfloat
  is defined as 0.  The CC$gfloat macro is provided for compatiblity
  with VAX C.  The __G_FLOAT predefined macro should be used instead.

 42. 9.7 - DATE

  The __DATE__ macro evaluates to a string specifying the date on
  which the compilation started.  The string presents the date in the
  form "Mmm dd yyyy" The names of the months are those generated by
  the asctime library function.  The first d is a space if dd is less
  than 10.

  Example:

       printf("%s",__DATE__);

 42. 9.8 - FILE

  The __FILE__ macro evaluates to a string literal specifying the
  file specification of the current source file.

  Example:

       printf("file %s", __FILE__);

 42. 9.9 - LINE

  The __LINE__ macro evaluates to a decimal constant specifying the
  number of the line in the source file containing the macro
  reference.

  Example:

       printf("At line %d in file %s", __LINE__, __FILE__);

 42. 9.10 - TIME

  The __TIME__ macro evaluates to a string specifying the time that
  the compilation started.  The time has the following format:

       hh:mm:ss

  Example:

       printf("%s", __TIME__);

  The value of this macro remains constant throughout the translation
  unit.

 42.10 - Predeclared Identifiers

 42. 10.1 - __func__

  The __func__ predeclared identifier evaluates to a static array of
  char, initialized with the spelling of the function's name.  It is
  visible anywhere within the body of a function definition.

  Example:

       void foo(void) {printf("%s\n", __func__);}

  This function prints "foo".

 42.11 - Statements

  Statements are the executable instructions performed by the
  program.  Statements produce values and control program flow.  A
  group of statements enclosed in braces makes up a block.

  Any valid expression or declaration terminated by a semicolon is
  considered a statement.  The statements that control program flow
  are described in further HELP frames.

  See also HELP CC LANGUAGE_TOPICS DECLARATION and HELP CC
  LANGUAGE_TOPICS PREPROCESSOR.

 42. 11.1 - break

  The break statement terminates the immediately enclosing while, do,
  for, or switch statement.  Control passes to the statement
  following the terminated statement.
  Syntax:

       break ;

 42. 11.2 - continue

  The continue statement passes control to the test portion of the
  immediately enclosing while, do, or for statement.
  Syntax:

       continue ;

  In each of the following statements, a continue statement is
  equivalent to "goto label;":

    while (expression) { statement ... label: ; }

    do { statement ... label: ; } while (expression);

    for (expression; expression; expression)
        { statement ... label: ; }

  The continue statement is not intended for switches.  A continue
  statement inside a switch statement inside a loop causes
  reiteration of the loop.

 42. 11.3 - do

  The do statement executes a statement one or more times, as long as
  a stated condition expression is true.
  Syntax:

       do statement while ( expression ) ;

  The do statement is executed at least once.  The expression is
  evaluated after each execution of the statement.  If the expression
  is not 0, the statement is executed again.  The statement following
  the do statement (the body of the do statement) is not optional;
  the null statement (a lone semicolon) is provided for specifying a
  do statement with an empty body.

 42. 11.4 - for

  The for statement executes a statement zero or more times, with
  three specified control expressions.  Expression-1 is evaluated
  only once, before the first iteration; expression-2 is evaluated
  before every iteration; expression-3 is evaluated after every
  iteration.  The for loop terminates if, on evaluation, expression-2
  is 0.
  Syntax:

       for ( [expression-1] ; [expression-2] ; [expression-3] )
           statement

  The for statement is equivalent to the following format:

       expression-1;
       while ( expression-2 ) { statement expression-3; }

  You can omit any of the three expressions.  If expression-2 is
  omitted, the while condition is true.

 42. 11.5 - goto

  The goto statement transfers control unconditionally to a labeled
  statement.
  Syntax:

       goto identifier ;

  The identifier must be a label located in the current function.
  You may use goto to branch into a block, but no initializations are
  performed on variables declared in the block.

 42. 11.6 - if

  The if statement is a conditional statement.  It can be written
  with or without an else clause as follows:

       if ( expression ) statement
       if ( expression ) statement else statement

  In both cases, the expression is evaluated, and if it is not 0, the
  first statement is executed.  If the else clause is included and
  the expression is 0, the statement following else is executed
  instead.  In a series of if-else clauses, the else matches the most
  recent else-less if.

 42. 11.7 - Labeled

  Any statement can be preceded by a label prefix of the following
  form:

       identifier:

  This declares the identifier as a label.  The scope of such a
  declaration is the current function.  Labels are used only as the
  targets of goto statements.

 42. 11.8 - Null

  A null statement is a semicolon:

       ;

  The null statement provides a null action -- for example, the body
  of a for loop that takes no action:

       for(i=0; i < ARRAYSIZE && x[i] == 5; i++)
           ;

 42. 11.9 - return

   The return statement causes a return from a function, with or
   without a  return value.
   Syntax:

       return ;
       return expression ;

  The return value is undefined if not specified in a return
  statement.  If an expression is specified in the return statement,
  it is evaluated and the value is returned to the calling function;
  the value is converted, if necessary, to the type with which the
  called function was declared.  If a function does not have a return
  statement, the effect (on reaching the end of the function) is the
  same as with a return statement that does not specify an
  expression.  Functions declared as void may not contain return
  statements specifying an expression.

 42. 11.10 - switch

  The switch statement executes one or more of a series of cases,
  based on the value of an integer expression.
  Syntax:

       switch ( expression ) body

  The switch's body typically is a block, within which any statement
  can be prefixed with one or more case labels as follows:

       case constant-expression :

  At most one statement in the body may have the label as follows:

       default :

  The switch expression is evaluated and compared to the cases.  If
  there is a case matching the expression's value, it is executed; if
  not, the default case is executed.  The switch is normally
  terminated by a break, return, or goto statement in one of the
  cases.  If there is no matching case and no default, the body of
  the switch statement is skipped.

 42. 11.11 - while

  The while statement executes a statement 0 or more times, as long
  as a stated condition is true.
  Syntax:

       while ( expression ) statement

  The expression is evaluated before each execution, and the
  statement is executed if the expression is not 0.  The statement
  following the parentheses (the body of the while statement) is not
  optional; the null statement (a lone semicolon) is provided for
  specifying a while statement with an empty body.

 42.12 - Storage Classes

  The storage class of a variable determines when its storage is
  allocated, whether its contents are preserved across different
  blocks or functions, and what link-time scope the variable has.

  Auto variables are allocated at run time.  They are not preserved
  across functions.  Auto is the default storage class for variables
  declared within a function.

  Extern variables are allocated at compile time.  They are preserved
  across functions.  There can be only 65,532 extern variables per
  program.  Extern is the default storage class for variables
  declared outside a function.

  Globaldef, globalref, and globalvalue variables are allocated at
  compile time.  They are preserved across functions.  The number of
  global symbols is unlimited.

  Register variables are allocated at run time.  They cannot be
  referenced from other separately compiled functions.

  Static variables are allocated at compile time.  If externally
  declared, they retain their values across functions.  If internally
  declared (inside of a function), they cannot be referenced from
  other functions; if control passes from the defining function, to
  other functions, and then passed back to the defining function, the
  variable retains its previous value and is not reinitialized.

 42.13 - Type Qualifiers

  Data-type qualifiers affect the allocation or access of data
  storage.  The data-type qualifiers are const, volatile, and
  __restrict.

 42. 13.1 - const

  The const data-type qualifier restricts access to stored data.  If
  you declare an object to be of type const, you cannot modify that
  object.  You can use the const data-type qualifier with the
  volatile data-type qualifier or with any of the storage-class
  specifiers or modifiers.  The following example declares the
  variable x to be a constant integer:

       int const x;

 42. 13.2 - volatile

  The volatile data-type qualifier prevents an object from being
  stored in a machine register, forcing it to be allocated in memory.
  This data-type qualifier is useful for declaring data that is to be
  accessed asynchronously.  A device driver application often uses
  volatile data storage.  Like const, you can specify the volatile
  data-type qualifier with any of the storage-class specifiers or
  modifiers with the exception of the register storage class.

 42. 13.3 - __restrict

  The __restrict data-type qualifier is used to designate a pointer
  as pointing to a distinct object, thus allowing compiler
  optimizations to be made.

 42.14 - Storage Class Modifiers

  The storage-class modifiers allow individual attributes of a
  variable to change without changing the other default attributes
  connected with a given storage class.  Storage-class keywords and
  storage-class modifiers can be specified in either order.

  Syntax:

       modifier storage_class_keyword identifier;

  If you specify a storage-class modifier but not a storage class
  keyword, the storage class defaults to extern.

 42. 14.1 - noshare

  Noshare variables are assigned the PSECT attribute NOSHR.  Noshare
  variables may not be shared between processes.  This modifier is
  used when linking variables that are not to be shared within a
  shareable image.  You can use the noshare modifier with the
  storage-class keywords static, [extern], globaldef, and
  globaldef{"name"}.

 42. 14.2 - readonly

  Readonly variables are assigned the PSECT attribute NOWRT and are
  stored in the PSECT $CODE, which is a nonwritable data area.  Other
  programs can access the PSECT directly, but none of the information
  can be overwritten.  You can use the readonly modifier with the
  storage-class keywords [extern], static, globaldef, and
  globaldef{"name"}.

  You can use both the readonly and noshare modifiers with the
  [extern] and the globaldef{"name"} specifiers.  If you use both
  modifiers with either the static or the globaldef specifiers, the
  compiler ignores noshare and accepts readonly.

 42. 14.3 - _align

  The _align modifier allows you to align objects of any of the
  Compaq C data types on a specified storage boundary.  Use the
  _align modifier in a data declaration or definition.

  When specifying the boundary of the data alignment, you can use a
  predefined constant:  BYTE or byte, WORD or word, LONGWORD or
  longword, QUADWORD or quadword, OCTAWORD or octaword, and PAGE or
  page.

  You can also specify an integer value that is a power of two.  The
  power of two tells Compaq C the number of bytes to pad in order to
  align the data:

    For OpenVMS VAX systems, specify a constant 0, 1, 2, 3, 4, or 9.

    For OpenVMS Alpha systems, specify any constant from 0 to 16.

 42. 14.4 - __align

  The __align storage-class modifier has the same semantic meaning as
  the _align keyword.  The difference is that __align is a keyword in
  all compiler modes while _align is a keyword only in modes that
  recognize VAX C keywords.  For new programs, using __align is
  recommended.

 42. 14.5 - __forceinline

  Similar to the __inline storage-class modifier, the __forceinline
  storage-class modifier marks a function for inline expansion.
  However, using __forceinline on a function definition and prototype
  tells the compiler that it must substitute the code within the
  function definition for every call to that function.  (With
  __inline, such substitution occurs at the discretion of the
  compiler.)

  Syntax:

       __forceinline [type] function_definition

 42. 14.6 - __inline

  The __inline modifier marks a function for inline expansion.  Using
  __inline on a function definition and prototype tells the compiler
  that it can substitute the code within the function definition for
  every call to that function.  Substitution occurs at the discretion
  of the compiler.  The __inline storage-class specifier has the same
  effect as the #pragma inline preprocessor directive, except that
  the latter attempts to provide inline expansion for all functions
  in a translation unit, rather than for selected functions.

  Syntax:

       __inline [type] function_definition

 42. 14.7 - inline

  Similar to the __inline storage-class modifier, the inline
  storage-class modifier can be used as a declaration specifier in
  the declaration of a function.  This modifier is supported in
  relaxed ANSI C mode (/STANDARD=RELAXED_ANSI89) or if the
  /ACCEPT=C99_KEYWORDS or /ACCEPT=GCCINLINE qualifier is specified.

  With static functions, inline has the same effect as applying
  __inline or #pragma inline to the function.

  However, when inline is applied to a function with external
  linkage, besides allowing calls within that translation unit to be
  inlined, the inline semantics provide additional rules that also
  allow calls to the function to be inlined in other translation
  units or for the function to be called as an external function, at
  the compiler's discretion:

   o  If the inline keyword is used on a function declaration with
      external linkage, then the function must also be defined in the
      same translation unit.

   o  If all of the file scope declarations of the function use the
      inline keyword but do not use the extern keyword, then the
      definition in that translation unit is called an inline
      definition, and no externally-callable definition is produced
      by that compilation unit.

      Otherwise, the compilation unit does produce an
      externally-callable definition.

   o  An inline definition must not contain a definition of a
      modifiable object with static storage duration, and it must not
      refer to an identifier with internal linkage.  These
      restrictions do not apply to the externally-callable
      definition.

   o  As usual, at most one compilation unit in an entire program can
      supply an externally-callable definition of a given function.

   o  Any call to a function with external linkage may be translated
      as a call to an external function, regardless of the presence
      of the inline qualifier.  It follows from this and the previous
      point that any function with external linkage that is called
      must have exactly one externally-callable definition among all
      the compilation units of an entire program.

   o  The address of an inline function with external linkage is
      always computed as the address of the unique
      externally-callable definition, never the address of an inline
      definition.

   o  A call to inline function made through a pointer to the
      externally-callable definition may still be inlined or
      translated as a call to an inline definition, if the compiler
      can determine the name of the function whose address was stored
      in the pointer.

  2 Link_libraries
   Both the VAX C RTL and the Compaq C RTL can coexist on your
   OpenVMS VAX system.  The VAX C RTL supports existing VAX C
   applications.  The Compaq C RTL supports ANSI-compliant Compaq C
   and Compaq C++, as well as other components of the OpenVMS
   environment.  In addition, the
   Compaq C RTL provides a mechanism for thread safety, performance
   improvements, and problem fixes.

   Applications developed with VAX C will continue to use the
   VAX C RTL.  However, VAX C applications can be relinked to use
   the Compaq C RTL instead.  This lets you take advantage of the new
   features of the Compaq C RTL and solve potential interoperability
   problems in complex applications that incorporate both the VAX C
   and and the Compaq C RTLs.  Existing applications that are
   relinked to use the Compaq C RTL should be carefully tested for
   possible problems resulting from the differences in behavior
   between the VAX C RTL and the Compaq C RTL.  See the applicable
   Compaq C release notes and OpenVMS release notes for additional
   detail.

   Most linking needs should be satisfied by using the Compaq C RTL
   shareable image DECC$SHR.EXE in the SYS$LIBRARY directory.  Use
   this linking method for programs that are written entirely in
   Compaq C or Compaq C++ code; that is, with no VAX C object
   modules.

   Because DECC$SHR.EXE has only prefixed names (no unprefixed
   names), to successfully link against it, make sure you cause
   prefixing to occur for all Compaq C RTL entry points.  Do this by
   compiling in one of two ways:

   1.  Compile with the /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES
       qualifier.

   2.  Compile with the /STANDARD=VAXC or /STANDARD=COMMON qualifier;
       you get /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES as the default.

   After making sure that all Compaq C RTL entry points are prefixed,
   link against the shareable image using the LINK command.  For
   example:

   $ CC/DECC/PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES PROG1
   $ LINK PROG1

   For a description of additional ways to link to the Compaq C RTL,
   see the Compaq C Run-Time Library Reference Manual for OpenVMS
   Systems.

  43 - Run-time functions

  Note:  You might have a newer version of Compaq C that has header
  files and documentation for functions that are not supported on
  your older OpenVMS system.  For example, if your target operating
  system platform is OpenVMS Version 7.2, you cannot use Compaq C RTL
  functions that are introduced on OpenVMS Version 7.3, even though
  they are documented in this help and in the Compaq C RTL Reference
  manual.

  See Appendix of the Compaq C Run-Time Library Reference Manual for
  a series of tables that list what DEC C RTL functions are supported
  on recent OpenVMS versions.  This is helpful for determining the
  functions to avoid using on your target OpenVMS platforms.

  In the Curses Screen Management Package, there are pairs of
  functions and macros with equivalent functionality.  Many Curses
  functions and macros are expressed as follows:

       [w]addch
       [no]echo

  The descriptions of the addch macro and the waddch function are
  found under the heading, [w]addch.  The descriptions of the macros
  echo and noecho are found under the heading, [no]echo.  For more
  information about Curses Screen management functions and macros,
  see HELP CC RUN-TIME_FUNCTIONS CURSES and HELP CC LINK_LIBRARIES.

  All other library functions are listed alphabetically under
  separate headings.

  All library functions are reentrant unless explicitly stated
  otherwise.

 43.1 - abort

  Sends the signal SIGABRT that terminates the process.

  Syntax:

       #include <stdlib.h>

       void abort(void);

 43.2 - abs

  Returns the absolute value of an integer.

  Syntax:

       #include <stdlib.h>

       int abs(int integer);

 43.3 - access

  Checks a file to see if a specified access mode is allowed.

  Syntax:

       #include <unistd.h>

       int access(const char *file_spec, int mode);

  The mode is interpreted as follows:

      F_OK -- Test to see if the file exists

      X_OK -- Execute

      W_OK -- Write (implies delete access)

      R_OK -- Read

 43.4 - acos

  Returns a value in the range 0 to pi, which is the arc cosine of
  its radian argument.

  Syntax:

       #include <math.h>

       double acos(double x);

 43.5 - [w]addch

  Curses Screen Management function and macro that add the character
  ch to the window at the current position of the cursor.  The addch
  macro operates on the stdscr window.

  Syntax:

       #include <curses.h>

       int addch(char ch);
       int waddch(WINDOW *win, char ch);

 43.6 - [w]addstr

  Curses Screen management function and macro that add the string
  pointed to by str to the window at the current position of the
  cursor.  The addstr macro operates on the stdscr window.

  Syntax:

       #include <curses.h>

       int addstr(char *str);
       int waddstr(WINDOW *win, char *str);

 43.7 - alarm

  Sends the signal SIGALRM to the invoking process after the number
  of seconds indicated by its argument has elapsed.  This function is
  nonreentrant.

  Syntax:

       #include <unistd.h>

       unsigned int alarm(unsigned int seconds);  (POSIX-1)

       int alarm(unsigned int seconds);  (Compatibility)

 43.8 - asctime, asctime_r

  Converts a broken-down time into a 26-character string in the
  following form:

  Sun Sep 16 01:03:52 1984\n\0

  All fields have a constant width.

  asctime_r puts the result into a user-specified buffer.

  asctime puts the result into thread-specific static memory
  allocated by the Compaq C RTL, which can be overwritten by
  subsequent calls to ctime or asctime; you must make a copy if you
  want to save it.

  Syntax:

       #include <time.h>

       char *asctime(const struct tm *timeptr);

       char *asctime_r(const struct tm *timeptr, char *buffer);
       [posix1]

 43.9 - asin

  Returns a value in the range -pi/2 to pi/2, which is the arc sine
  of its radian argument.

  Syntax:

       #include <math.h>

       double asin(double x);

 43.10 - assert

  Used to implement run-time diagnostics in programs.

  Syntax:

        #include <assert.h>

        void assert(int expression);

 43.11 - atan

  Returns a value in the range -pi/2 to pi/2, which is the arc
  tangent of its radian argument.

  Syntax:

       #include <math.h>

       double atan(double x);

 43.12 - atan2

  Returns a value in the range -pi to pi, which is the arc tangent of
  x/y, where x and y are the two arguments.

  Syntax:

       #include <math.h>

       double atan2(double x, double y);

 43.13 - atexit

  Registers a function that is called without arguments at program
  termination.

  Syntax:

       #include <stdlib.h>

       int atexit(void (*func) (void));

 43.14 - atof

  Converts a character string to a double-precision number.  The
  character string has the following form:

  [white-spaces][+|-]digits[radix-character][digits][e|E[+|-]integer]

  Where radix-character is defined in the current locale.

  The first unrecognized character ends the conversion.

  The string is interpreted by the same rules that are used to
  interpret floating constants.

  Syntax:

       #include <stdlib.h>

       double atof(const char *nptr);

 43.15 - atoi

  Converts strings of ASCII characters to the appropriate numeric
  values.  The ASCII string has the following form:

       [white-spaces][+|-]digits

  This function does not account for overflow resulting from the
  conversion.

  Syntax:

       #include <stdlib.h>

       int atoi(const char *nptr);

 43.16 - atol

  Converts strings of ASCII characters to the appropriate numeric
  values.  The ASCII string has the following form:

       [white-spaces][+|-]digits

  The function does not account for overflow resulting from the
  conversion.

  Syntax:

       #include <stdlib.h>

       long int atol(const char *nptr);

 43.17 - basename

  Returns the last component of a path name.

  Syntax:

        #include <libgen.h>

        char *basename (char *path);

 43.18 - bcmp

  Compares byte strings.

  Syntax:

        #include <strings.h>

        void bcmp (const void *string1,
                               const void *string2,
                               size_t length);

 43.19 - bcopy

  Copies byte strings.

  Syntax:

        #include <strings.h>

        void bcopy (const void *source,
                    void *destination,
                    size_t length);

 43.20 - box

  Curses Screen Management function that draws a box around the
  window using the character vert as the character for drawing the
  vertical lines of the rectangle, and hor for drawing the horizontal
  lines of the rectangle.

  Syntax:

       #include <curses.h>

       int box(WINDOW *win, char vert, char hor);

 43.21 - brk

  Determines the lowest virtual address that is not used with the
  program.

  Syntax:

       #include <stdlib.h>

       void *brk(unsigned long int addr);

 43.22 - bsearch

  Performs a binary search.  It searches an array of sorted objects
  for a specified object.

  Syntax:

        #include <stdlib.h>

        void *bsearch (const void *key,
                       const void *base,
                       size_t nmemb,
                       size_t size,
                       int (*compar) (const void *, const void *));

 43.23 - btowc

  Converts one-byte multibyte character to a wide character in the
  initial shift state.

  Syntax:

        #include <wchar.h>

        wint_t btowc (int c);

 43.24 - bzero

  Copies nulls into byte strings.

  Syntax:

        #include <strings.h>

        void bzero (void *string, size_t length);

 43.25 - cabs

  Computes the Euclidean distance between two points as the square
  root of their respective squares.  This function returns
  sqrt(x*x + y*y).

  Syntax:

       #include <math.h>

       double cabs(cabs_t z);

 43.26 - calloc

  Allocates an area of zeroed memory.  This function is
  AST-reentrant.

  Syntax:

       #include <stdlib.h>

       void *calloc(size_t number, size_t size);

 43.27 - catclose

  Closes a message catalog.

  Syntax:

       #include <nl_types.h>

       int catclose (nl_catd catd);

 43.28 - catgets

  Retrieves a message from a message catalog.

  The message identified by set_id and msg_id, in the message catalog
  catd, is retrieved The message is stored in a message buffer in the
  nl_catd structure which is overwritten by subsequent calls to
  catgets.  If a message string needs to be preserved, it should be
  copied to another location by the program.

  Syntax:

       #include <nl_types.h>

       char *catgets (nl_catd catd, int set_id, int msg_id, const
       char *s);

 43.29 - catopen

  Opens a message catalog.

  Syntax:

       #include <nl_types.h>

       nl_catd catopen (const char *name, int oflag);

 43.30 - ceil

  Returns (as a double) the smallest integer that is greater than or
  equal to its argument.

  Syntax:

       #include <math.h>

       double ceil(double x);

 43.31 - cfree

  Makes available for reallocation the area allocated by a previous
  calloc, malloc, or realloc call.  This function is AST-reentrant.

  Syntax:

       #include <stdlib.h>

       void cfree(void *pointer);

 43.32 - chdir

  Changes the default directory.

  Syntax:

       #include <unistd.h>

       int chdir(const char *dir_spec);  (POSIX-1)

       int chdir(const char *dir_spec, ...); (Compaq C Extension)

  where the ...  is an optional flag, available in all compilation
  modes except strict ANSI C mode (/STANDARD=ANSI89).  This flag is
  significant only when calling chdir from USER mode.  If the value
  of the flag is 1, the new directory is effective across images.  If
  the value is not 1, the original default directory is restored when
  the image exits.

 43.33 - chmod

  Changes the file protection of a file.

  Syntax:

       #include <stat.h>

       int chmod(const char *file_spec, mode_t mode);

 43.34 - chown

  Changes the owner UIC of a file.

  Syntax:

       #include <unistd.h>

       int chown(const char *file_spec, uid_t owner,
                 gid_t group);  (POSIX-1)

       int chown(const char *file_spec, unsigned int owner,
                 unsigned int group);  (Compatibility)

 43.35 - [w]clear

  Curses Screen Management function and macro that erase the contents
  of the specified window and reset the cursor to coordinates (0,0).
  The clear macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int clear();
       int wclear(WINDOW *win);

 43.36 - clearerr

  Resets the error and end-of-file indicators for a file (so that
  ferror and feof will not return a nonzero value).

  Syntax:

       #include <stdio.h>

       void clearerr(FILE *file_pointer);

 43.37 - clearok

  Sets the clear flag for the window.

  Syntax:

       #include <curses.h>

       clearok(WINDOW *win, bool boolf);

 43.38 - clock

  Determines the amount of CPU time (in 10-millisecond units) used
  since the beginning of program execution.  The time reported is the
  sum of the user and system times of the calling process and any
  terminated child processes for which the calling process has
  executed wait or system.  This function is nonreentrant.

  Syntax:

       #include <time.h>

       clock_t clock(void);

 43.39 - close

  Closes the file associated with a file descriptor.

  Syntax:

       #include <unistd.h>

       int close(int file_descriptor);

 43.40 - closedir

  Closes directories.

  Syntax:

        #include <dirent.h>

        int closedir (DIR *dir_pointer);

 43.41 - [w]clrattr

  Curses Screen Management function and macro that deactivate the
  video display attributes boldface, blinking, reverse video, and
  underlining within a specified window on the terminal screen.  The
  attributes are represented by _BOLD, _BLINK, _REVERSE, and
  _UNDERLINE.  The clrattr macro operates on the stdscr window.

  Syntax:

       #include <curses.h>

       int clrattr(int attr);
       int wclrattr(WINDOW *win, int attr);

 43.42 - [w]clrtobot

  Curses Screen Management function and macro that erase the contents
  of the window from the current position of the cursor to the bottom
  of the window.  The clrtobot macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int clrtobot();
       int wclrtobot(WINDOW *win);

 43.43 - [w]clrtoeol

  Curses Screen Management function and macro that erase the contents
  of the window from the current cursor position to the end of the
  line on the specified window.  The clrtoeol macro acts on the
  stdscr window.

  Syntax:

       #include <curses.h>

       int clrtoeol();
       int wclrtoeol(WINDOW *win);

 43.44 - confstr

  Determines the current value of a specified system variable defined
  by a string value.

  Syntax:

        #include <unisted.h>

        size_t confstr (int name, char *buf, size_t len);

 43.45 - cos

  Returns the cosine of its radian argument.

  Syntax:

       #include <math.h>

       double cos(double x);

 43.46 - cosh

  Returns the hyperbolic cosine of its argument.

  Syntax:

       #include <math.h>

       double cosh(double x);

 43.47 - cot

  Returns the cotangent of its radian argument.

  Syntax:

       #include <math.h>

       double cot(double x);

 43.48 - creat

  Creates a new file.

  Syntax:

       #include <fcntl.h>

       int creat(const char *file_spec, mode_t mode);  (POSIX-1)

       int creat(const char *file_spec, mode_t mode,...); (Compaq C
       Extension)

  where the ...  is an optional argument list of character strings of
  the following form:

  "keyword = value",...,"keyword = value"

  Or in the case of "acc" or "err", this form:

  "keyword"

  The keyword is an RMS field in the file access block (FAB) or
  record access block (RAB), and the value is valid for assignment to
  that field.  Some fields permit you to specify more than one value.
  In these cases, the values are separated by commas.

 43.49 - [no]crmode

  Curses Screen Management macros that set and unset the terminal
  from cbreak mode.  This mode of single-character input is only
  supported with the Curses input routine getch.

  Syntax:

       #include <curses.h>

       crmode()
       nocrmode()

 43.50 - ctermid

  Returns a character string giving the equivalence string of
  SYS$COMMAND.  This is the name of the controlling terminal.  This
  function is nonreentrant.

  Syntax:

       #include <unistd.h>

       char *ctermid(char *str);

 43.51 - ctime, ctime_r

  Converts a time, in seconds, to the following form:

  Sun Sep 16 01:03:52 1984\n\0

  All fields have a constant width.

  ctime_r puts the result into a user-specified buffer.

  ctime puts the result into thread-specific static memory allocated
  by the Compaq C RTL, which can be overwritten by subsequent calls
  to ctime or asctime; you must make a copy if you want to save it.

  Syntax:

       #include <time.h>

       char *ctime(const time_t *bintim);

       char *ctime_r(const time_t *bintim, char *buffer);  [posix1]

 43.52 - Curses

  Curses, the Compaq C Screen Management Package, is comprised of RTL
  functions that create and modify defined sections of the terminal
  screen, and optimize cursor movement.  Using a screen management
  package, you can develop a user interface that is both visually
  attractive and easy to use.  Curses allows you to manipulate the
  screen without worrying about the intricacies of various types of
  terminals, the difficulties of moving data to and from sections of
  the screen, or the problems of efficient cursor movement.

  Using Curses, the terminal screen may be divided into a number of
  rectangular regions called windows.  The size and location of each
  window is given in terms of the number of lines, the number of
  columns, and the starting position -- the upper left corner of the
  window.  A window must fit completely on the terminal screen, being
  as small as a single character or as large as the entire terminal
  screen.  When modifying windows, changes will not appear on the
  terminal screen until the window is refreshed.  When a window is
  refreshed, the updated window is placed onto the terminal screen
  leaving the rest of the terminal screen unaltered.

 43.53 - cuserid

  Returns a pointer to a character string containing the name of the
  user initiating the current process.  This function is
  nonreentrant.

  Syntax:

       #include <unistd.h>

       char *cuserid(char *str);

 43.54 - DECC$CRTL_INIT

  Allows you to call the Compaq C RTL from other languages.  It
  initializes the run-time environment and establishes both an exit
  and condition handler.  VAXC$CRTL_INIT is a synonym for
  DECC$CRTL_INIT.  Either name invokes the same routine.

  Syntax:

       #include <signal.h>

       void DECC$CRTL_INIT(void);

 43.55 - decc$fix_time

  Converts OpenVMS binary system times to UNIX binary times.

  Syntax:

       #include <unixlib.h>

       unsigned int decc$fix_time(void *vms_time);

 43.56 - decc$from_vms

  Converts OpenVMS file specifications to UNIX style file
  specifications.

  Syntax:

       #include <unixlib.h>

       int decc$from_vms(const char *vms_filespec, int
       action_routine, int wild_flag);

 43.57 - decc$match_wild

  Matches a string to a pattern.

  Syntax:

       #include <unixlib.h>

       int decc$match_wild(char *test_string, char *string_pattern);

 43.58 - decc$to_vms

  Converts UNIX style file specifications to OpenVMS file
  specifications.

  Syntax:

       #include <unixlib.h>

       int decc$to_vms(const char *unix_style_filespec,
       int (*action_rtn)(char *unix_style_filespec,
       int type_of_file), int allow_wild, int no_directory);

 43.59 - decc$record_read

  Provides additional flexibility in manipulating and observing RMS
  structures on a per-read basis.  This function is inherently
  specific to OpenVMS systems and should not be used when writing
  portable applications.

  Syntax:

       #include <stdio.h>

       int decc$record_read(FILE *fp, void *buffer, int nbytes);

 43.60 - decc$record_write

  Provides additional flexibility in manipulating and observing RMS
  structures on a per-write basis.

  Syntax:

       #include <stdio.h>

       int decc$record_write(FILE *fp, void *buffer, int nbytes);

 43.61 - decc$set_child_standard_streams

  For a child spawned by a function from the exec family of
  functions, associates specified file descriptors with a child's
  standard streams:  stdin, stdout, and stderr.

  Syntax:

       #include <unistd.h>

       int decc$set_child_standard_streams(int fd1, int fd2,
       int fd3);

 43.62 - decc$set_reentrancy

  Controls the type of reentrancy that reentrant Compaq C RTL
  routines will exhibit.

  Syntax:

       #include <reentrancy.h>

       int decc$set_reentrancy(int type);

  Use one of the following values for type:

   o  C$C_AST (AST)

      Uses the _BBSSI builtin to perform simple locking around
      critical sections of RTL code, and it may additionally disable
      asynchronous system traps (AST)s in locked regions of code.
      This type of locking should be used when AST code contains
      calls to Compaq C RTL I/O routines.

   o  C$C_MULTITHREAD (multithread)

      Designed to be used in conjunction with the DECthreads product.
      It performs DECthreads locking and never disables ASTs.
      DECthreads must be available on your system to use this form of
      reentrancy.

   o  C$C_TOLERANT (tolerant)

      Uses the _BBSSI builtin to perform simple locking around
      critical sections of RTL code, but ASTs are not disabled.  This
      type of locking should be used when ASTs are used and must be
      delivered immediately.  TOLERANT is the default reentrancy
      type.

   o  C$C_NONE (none)

      Gives optimal performance in the Compaq C RTL, but does
      absolutely no locking around critical sections of RTL code.  It
      should only be used in a single-threaded environment when there
      is no chance that the thread of execution will be interrupted
      by an AST that would call the Compaq C RTL.

 43.63 - decc$translate_vms

  Translates OpenVMS file specifications to UNIX style file
  specifications.

  Syntax:

       #include <unixlib.h>

       char *decc$translate_vms(const char *vms_filespec);

 43.64 - decc$validate_wchar

  Validates its argument as a valid wide character in the current
  program's locale.

  Syntax:

        #include <wchar.h>

        int decc$validate_wchar(wchar_t wc);

 43.65 - decc$write_eof_to_mbx

  Writes an end-of-file message to the mailbox.

  Syntax:

        #include <unistd.h>

        int decc$write_eof_to_mbx(int fd);

 43.66 - [w]delch

  Curses Screen Management function and macro that delete the
  character on the specified window at the current position of the
  cursor.  The delch macro operates on the stdscr window.

  Syntax:

       #include <curses.h>

       int delch();
       int wdelch(WINDOW *win);

 43.67 - delete

  Deletes a file.

  Syntax:

       #include <unixio.h>

       int delete(const char *file_spec);

 43.68 - [w]deleteln

  Curses Screen Management function and macro that delete the line at
  the current position of the cursor.  The deleteln macro acts on the
  stdscr window.

  Syntax:

       #include <curses.h>

       int deleteln();
       int wdeleteln(WINDOW *win);

 43.69 - delwin

  Deletes the specified window from memory.

  Syntax:

       #include <curses.h>

       int delwin(WINDOW *win);

 43.70 - difftime

  Computes the difference, in seconds, between the two times
  specified by the time1 and time2 arguments.

  Syntax:

       #include <time.h>

       double difftime (time_t time2, time_t time_1);

 43.71 - dirname

  Reports the parent directory name of a file path name.

  Syntax:

        #include <libgen.h>

        char *dirname (char *path);

 43.72 - div

  Returns the quotient and remainder after the division of its
  arguments.

  Syntax:

       #include <stdlib.h>

       div_t div(int numer, int denom);

 43.73 - dlclose

  deallocates the address space allocated by the Compaq C RTL for the
  handle.

  There is no way on OpenVMS systems to "unload" a shareable image
  that was dynamically loaded by the LIB$FIND_IMAGE_SYMBOL routine,
  which is the routine called by the dlsym function.  In other words,
  there is no way on OpenVMS systems to release the address space
  occupied by the shareable image brought into memory by dlsym.

  Syntax:

       #include <stdio.h>

       void dlclose(void *handle);

 43.74 - derror

  Returns a string describing the last error that occurred from a
  call to dlopen, dlclose, or dlsym.

  Syntax:

       #include <stdio.h>

       char *dlerror(void);

 43.75 - dlopen

  Provides an interface to the dynamic library loader to allow
  shareable images to be loaded and called at run time.

  The dlopen function does not load a shareable image but rather
  saves its pathname argument for subsequent use by the dlsym
  function, which actually loads the shareable image through a call
  to LIB$FIND_IMAGE_SYMBOL.

  Syntax:

       #include <stdio.h>

       void *dlopen(char *pathname, int mode);

 43.76 - dlsym

  Returns the address of the symbol name found in a shareable image.
  If the symbol is not found, a NULL pointer is returned.

  Syntax:

       #include <stdio.h>

       void *dlsym(void *handle, char *name);

 43.77 - drand48

  Generate uniformly distributed pseudorandom number sequences.
  Returns 48-bit, nonnegative, double-precision floating-point
  values.

  Syntax:

        #include <stdlib.h>

        double drand48 (void);

 43.78 - dup

  Allocates a new file descriptor that refers to a file specified by
  a file descriptor returned by open, creat, or pipe.

  Syntax:

       #include <unistd.h>

       int dup(int file_desc1);

 43.79 - dup2

  Makes file_descriptor_2 point to the same file as
  file_descriptor_1.

  Syntax:

       #include <unixio.h>

       int dup2(int file_descriptor_1, int file_descriptor_2);

 43.80 - [no]echo

  Curses Screen Management macros that set the terminal so that
  characters may or may not be echoed on the terminal screen.  This
  mode of single-character input is only supported with Curses.

  Syntax:

       #include <curses.h>

       echo()
       noecho()

 43.81 - ecvt

  Converts its value argument to a null-terminated string of ASCII
  digits and returns the address of the string.  The string is stored
  in a memory location created by the function.

  Syntax:

       #include <stdlib.h>

       char *ecvt(double value, int ndigit, int *decpt, int *sign);

 43.82 - endwin

  Curses Screen Management function that clears the terminal screen
  and frees any virtual memory allocated to Curses data structures.

  Syntax:

       #include <curses.h>

       void endwin(void);

 43.83 - erand48

  Generate uniformly distributed pseudorandom number sequences.
  Returns 48-bit nonnegative, double-precision, floating-point
  values.

  Syntax:

        #include <stdlib.h>

        double erand48 (unsigned short int xsubi[3]);

 43.84 - [w]erase

  Curses Screen Management function and macro that erase the window
  by painting it with blanks.  The erase macro acts on the stdscr
  window.

  Syntax:

       #include <curses.h>

       int erase();
       int werase(WINDOW *win);

 43.85 - execl

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execl (const char *file-spec, const char *arg0,..., (char
       *)0; (POSIX-1)

       int execl (char *file-spec,...); (Compatibility)

  where the ...  is a sequence of pointers to strings.  At least one
  pointer must exist to terminate the list.  This pointer must be the
  null pointer.

 43.86 - execle

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execle (char *file-spec, char *argn,..., (char *)0, char
       *envp[]); (POSIX-1)

       int execle (char *file-spec,...); (Compatibility)

 43.87 - execlp

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execlp (const char *file-spec, const char *arg0,...,(char
       *)0); (POSIX-1)

       int execlp (char *file-spec,...); (Compatibility)

 43.88 - execv

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execv (char *file-spec, char *argv[]);

 43.89 - execve

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execve (const char *file-spec, char *argv[], char
       *envp[]);

 43.90 - execvp

  Passes the name of an image to be activated on a child process.
  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       int execvp (const char *file-spec, char *argv[]);

 43.91 - exit, _exit

  Terminate execution of the program from which they are called.
  These functions are nonreentrant.  They are also identical; the
  _exit function is retained for reasons of compatibility with VAX C.

  The status argument corresponds with an errno value if exiting from
  a child process using vfork and/or an exec function, or with an
  OpenVMS condition value if exiting from a process invoked by DCL.
  The errno values are defined in the <errno.h> header file.  A
  status value of 0 or EXIT_SUCCESS is translated to the OpenVMS
  SS$_NORMAL status code to return the OpenVMS success value.  Any
  other status value is left the same.  The status value is passed to
  the parent process.  A status value of EXIT_FAILURE is translated
  to an error-level exit status.

  If the process was invoked by the DIGITAL Command Language (DCL),
  the status is interpreted by DCL and a message is displayed.  If
  the process was a child process created using vfork or an exec
  function, then the child process is executed and control returns to
  the parent.

  The exit and _exit functions make use of the $EXIT system service.
  If your process is being invoked by the RUN command using any of
  the hibernation and scheduled wakeup qualifiers, the process might
  not correctly return to hibernation state when an exit or _exit
  call is made.

  Syntax:

       #include <stdlib.h>
       void exit(int status)

       #include <unistd.h>
       void _exit(int status);

 43.92 - exp

  Returns the base e raised to the power of the argument.

  Syntax:

       #include <math.h>

       double exp(double x);

 43.93 - fabs

  Returns the absolute value of a floating-point value.

  Syntax:

       #include <math.h>

       double fabs(double x);

 43.94 - fchown

  Changes the owner and group of a file.

  Syntax:

       #include <unistd.h>

       int fchown(int fildes, uid_t owner, gid_t group);

 43.95 - fclose

  Closes a file by flushing any buffers associated with the file
  control block and freeing the file control block and buffers
  previously associated with the file pointer.

  Syntax:

       #include <stdio.h>

       int fclose(FILE *file_pointer);

 43.96 - fcntl

  Performs controlling operations on an open file specified by the
  file_desc parameter.  The values for the request parameter are
  defined in the <fcntl.h> header file.

  Syntax:

       #include <sys/types.h>
       #include <unistd.h>
       #include <fcntl.h>

       int fcntl(int file_desc, int request [, int file_desc2]);

 43.97 - fcvt

  Converts its value argument to a null-terminated string of ASCII
  digits and returns the address of the string.

  Syntax:

       #include <stdlib.h>

       char *fcvt(double value, int ndigit, int *decpt, int *sign);

 43.98 - fdopen

  Associates a file pointer with a file descriptor returned by an
  open, creat, dup, dup2, or pipe function.

  Syntax:

       #include <stdio.h>

       FILE *fdopen(int file_descriptor, char *a_mode);

 43.99 - feof

  Tests a file to see if the end-of-file has been reached.

  Syntax:

       #include <stdio.h>

       int feof(FILE *file_pointer);

 43.100 - ferror

  Returns a nonzero integer if an error occurred while reading or
  writing to a file.

  Syntax:

       #include <stdio.h>

       int ferror(FILE *file_pointer);

 43.101 - fflush

  Writes out any buffered information for the specified file.

  Syntax:

       #include <stdio.h>

       int fflush(FILE *file_pointer);

 43.102 - ffs

  Finds the index of the first bit in a string.

  Syntax:

        #include <strings.h>

        int ffs (int integer);

 43.103 - fgetc

  Returns the next character from a specified file.

  Syntax:

       #include <stdio.h>

       int fgetc(FILE *file_pointer);

 43.104 - fgetname

  Returns the file specification associated with a file pointer.

  Syntax:

       #include <stdio.h>

       char *fgetname(FILE *file_pointer, char *buffer,...);

  where the ...  is an optional additional argument that can be
  either 1 or 0.  If you specify 1, fgetname returns the file
  specification in OpenVMS format.  If you specify 0, fgetname
  returns the file specification in UNIX style format.

  If this argument is omitted, fgetname returns the file name
  according to your current command language interpreter.

 43.105 - fgetpos

  Stores the current value of the file position indicator for the
  stream pointed to by the stream into the object pointed to by pos.

  Syntax:

       #include <stdio.h>

       int fgetpos(FILE *stream, fpos_t *pos);

 43.106 - fgets

  Reads a line from a specified file, up to one less than the
  specified maximum number of characters or up to and including the
  new-line character, whichever comes first.  The string is stored in
  the argument str.

  Syntax:

       #include <stdio.h>

       char *fgets(char *str, int maxchar, FILE *file_ptr);

 43.107 - fgetwc

  Reads the next character from a specified file, and converts it to
  a wide-character code.

  Syntax:

       #include <wchar.h>

       wint_t fgetwc (FILE *file_ptr);

 43.108 - fgetws

  Reads a line of wide characters from a specified file.  and stores
  them in an array pointed to by wstr.

  The function reads up to maxchar - 1 characters or until the
  newline character is encountered.  The function terminates the line
  with a null wide character.

  Syntax:

       #include <wchar.h>

       wchar_t *fgetws (wchar_t *wstr, int maxchar, FILE *file_ptr);

 43.109 - fileno

  Returns the file descriptor associated with the specified file
  pointer.

  Syntax:

       #include <stdio.h>

       int fileno(FILE *file_pointer);

 43.110 - floor

  Returns (as a double) the largest integer that is less than or
  equal to its argument.

  Syntax:

       #include <math.h>

       double floor(double x);

 43.111 - fmod

  Computes the floating-point remainder of the first argument divided
  by the second.  If the second argument is zero, the fuction returns
  zero.

  Syntax:

       #include <math.h>

       double fmod (double x, double y);

 43.112 - fopen

  Opens a file by returning the address of a FILE structure.

  Syntax:

       #include <stdio.h>

       FILE *fopen(const char *file_spec, const char *a_mode); (ANSI
       C)

       FILE *fopen(const char *file_spec, const char *a_mode ,...);
       (Compaq C Extension)

  where the ...  represents optional file attribute arguments.  The
  file attribute arguments are the same as those used in the creat
  function.

 43.113 - fpathconf

  Retrieves file implementation characteristics.

  Syntax:

        #include <unistd.h>

        long int fpathconf (int filedes, int name);

 43.114 - fprintf

  Performs formatted output to a specified file.

  Syntax:

       #include <stdio.h>

       int fprintf(FILE *file_pointer, const char
                   *format_string,...);

  The ...  represents optional expressions whose resultant types
  correspond to conversion specifications given in the format_string.
  If no conversion specifications are given, you can omit the output
  sources.  Otherwise, the function calls must have exactly as many
  output sources as there are conversion specifications, and the
  conversion specifications must match the types of the output
  sources.  Conversion specifications are matched to output sources
  in left-to-right order.

  The format string for the output of information can contain two
  kinds of items:

   o  Ordinary characters, which are copied to the output.

   o  Conversion specifications, each of which causes the conversion
      of a corresponding output source to a character string in a
      particular format.  Conversion specifications are matched to
      output sources in left-to-right order.

 A conversion specification consists of a % (or a %n$), followed by
 one or more optional characters, and concluding with a conversion
 specifier.

 43. 114.1 - Optional character

  flags        You can use the following flag characters, alone or in
               any combined order, to modify the conversion
               specification:

               '         Requests that a numeric conversion is
                         formatted with the thousands separator
                         character.  Only the numbers to the left of
                         the radix character are formatted with the
                         separator character.  The character used as
                         a separator and the positioning of the
                         separators are defined in the program's
                         current locale.

               -(hyphen) Left-justifies the converted output source
                         in its field.

               +         Requests that an explicit sign be present on
                         a signed conversion.  If this flag is not
                         specified, the result of a signed conversion
                         begins with a sign only when a negative
                         value is converted.

               space     Prefixes a space to the result of a signed
                         conversion, if the first character of the
                         conversion is not a sign, or if the
                         conversion results in no characters.  If you
                         specify both the space and the + flag, the
                         space flag is ignored.

               #         Requests an alternate form conversion.
                         Depending on the conversion specified,
                         different actions will occur.  For the o
                         (octal) conversion, the precision is
                         increased to force the first digit to be a
                         0.  For the x (or X) conversion, a nonzero
                         result is prefixed with 0x (or 0X).  For e,
                         E, f, g, and G conversions, the result
                         contains a decimal point even at the end of
                         an integer value.  For g and G conversions,
                         trailing zeros are not trimmed.  For other
                         conversions, the effect of # is undefined.

               0         Uses zeros rather than spaces to pad the
                         field width for d, i, o, u, x, X, e, E, f,
                         g, and G conversions.  If both the 0 and the
                         - flags are specified, then the 0 flag is
                         ignored.  For d, i, o, u, x, and X
                         conversions, if a precision is specified,
                         the 0 flag is ignored.  For other
                         conversions, the behavior of the 0 flag is
                         undefined.

  field width  The minimum field width can be designated by a decimal
               integer constant, or by an output source.  To specify
               an output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.  If the converted
               output source is wider than the minimum field, write
               it out.  If the converted output source is narrower
               than the minimum width, pad it to make up the field
               width.  Pad with spaces, by default.  Pad with zeros
               if the 0 flag is specified; this does not mean that
               the width is an octal number.  Padding is on the left
               by default, and on the right if a minus sign is
               specified.

  period (.)   Separates the field width from the precision.

  precision    The precision defines the minimum number of digits to
               appear for d, i, o, u, x, and X conversions; the
               number of digits to appear after the decimal-point
               character for e, E, and f conversions; the maximum
               number of significant digits for g and G conversions;
               or the maximum number of characters to be written from
               a string in an s or S conversion.  If a precision
               appears with any other conversion specifier, the
               behavior is undefined.

               Precision can be designated by a decimal integer
               constant, or by an output source.  To specify an
               output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.

               If only the period is specified, the precision is
               taken as 0.

  h, l, or L   An h specifies that a following d, i, o, u, x, or X
               conversion specifier applies to a short int or
               unsigned short int argument; an h can also specify
               that a following n conversion specifier applies to a
               pointer to a short int argument.

               An l (lowercase ell) specifies that a following d, i,
               o, u, x, or X conversion specifier applies to a long
               int or unsigned long int argument; an l can also
               specify that a following n conversion specifier
               applies to a pointer to a long int argument.

               An L specifies that a following e, E, f, g, or G
               conversion specifier applies to a long double
               argument.

               If an h, l, or L appears with any other conversion
               specifier, the behavior is undefined.

               On Compaq C for OpenVMS VAX and Alpha Systems, int
               values are equivalent to long values.

 43. 114.2 - Conversion Specifier

  d, i     Converts an int argument to signed decimal format.

  o        Converts an unsigned int argument to unsigned octal
           format.

  u        Converts an unsigned int argument to unsigned decimal
           format (giving a number in the range 0 to 4,294,967,295).

  x, X     Converts an unsigned int argument to unsigned hexadecimal
           format (with or without a leading 0x).  The letters
           'abcdef' are used for the x conversion; the letters
           'ABCDEF' are used for the X conversion.

  f        Converts a float or double argument to the format
           [-]mmm.nnnnnn.  The number of n's is equal to the
           precision specification.  If no precision is specified,
           the default is 6.

           If the precision is 0 and the # flag is specified, the
           decimal point appears but no n's appear.  If the precision
           is 0 and the # flag is not specified, the decimal point
           also does not appear.  If a decimal point appears, at
           least one digit appears before it.  The value is rounded
           to the appropriate number of digits.

  e, E     Converts a float or double argument to the format
           [-]m.nnnnnnE[+|-]xx.  The number of n's is specified by
           the precision.  If no precision is specified, the default
           is 6.  If the precision is explicitly 0 and the # flag is
           specified, the decimal point appears but no n's appear.
           If the precision is explicitly 0 and the # flag is not
           specified, the decimal point also does not appear.  An 'e'
           is printed for e conversion; an 'E' is printed for E
           conversion.  The exponent always contains at least two
           digits.  If the value is 0, the exponent is 0.

  g, G     Converts a float or double argument to format f or e (or E
           if the G conversion specifier is used), with the precision
           specifying the number of significant digits.  If the
           precision is 0, it is taken as 1.  The format used depends
           on the value of the argument:  format e (or E) is used
           only if the exponent resulting from such a conversion is
           less than -4, or is greater than or equal to the
           precision; otherwise, format f is used.  Trailing zeros
           are suppressed in the fractional portion of the result.  A
           decimal point appears only if it is followed by a digit.

  c        Converts an int argument to an unsigned char, and writes
           the resulting character (null characters are ignored).

  C        Converts a wchar_t argument to an array of bytes
           representing the character, and writes the resulting
           character.  If the field width is specified and the
           resulting character occupies fewer bytes than the field
           width, it will be padded to the given width with space
           characters.  If the precision is specified, the behavior
           is undefined.

  s        Requires an argument that is a pointer to an array of
           characters of type char.  The argument is used to write
           characters until a null character is encountered or until
           the number of characters indicated by the precision
           specification is exhausted.  If the precision
           specification is 0 or omitted, all characters up to a null
           are output.

  S       Converts an array of wide-character codes to multibyte
           characters, and writes the multibyte characters.  Requires
           an argument that is a pointer to an array of wide
           characters of type wchar_t.  Characters are written until
           a null wide character is encountered or until the number
           of bytes indicated by the precision specification is
           exhausted.  If the precision specification is omitted or
           is greater than the size of the array of converted bytes,
           the array of wide characters must be terminated by a null
           wide character.

  p        Requires an argument that is a pointer to void.  The value
           of the pointer is output as a hexadecimal character.

  n        Requires an argument that is a pointer to an integer.  The
           integer is assigned the number of characters written to
           the output stream so far by this call to the formatted
           output function.  No argument is converted.

  %        Writes out the percent symbol.  No conversion is
           performed.  The complete conversion specification would be
           %%.

 43.115 - fputc

  Writes a character to a specified file.

  Syntax:

       #include <stdio.h>

       int fputc(int character, FILE *file_pointer);

 43.116 - fputs

  Writes a character string to a file without copying the string's
  null terminator.

  Syntax:

       #include <stdio.h>

       int fputs(const char *string, FILE *file_pointer);

 43.117 - fputwc

  Converts a wide character to its corresponding multibyte value,
  returns the result, and writes the result to the specified file.

  Syntax:

       #include <wchar.h>

       wint_t fputwc (wint_t wc, FILE *file_ptr);

 43.118 - fputws

  Converts a wide-character string to a to a multibyte character
  string and writes it to the specified file.

  The function does not append a terminating null byte, corresponding
  to the null wide-character, to the output string.

  Syntax:

       #include <wchar.h>

       int fputws (const wchar_t *wstr, FILE *file_ptr);

 43.119 - fread

  Reads a specified number of items from a file.

  Syntax:

   #include <stdio.h>

   size_t fread(void *pointer, size_t size_of_item,
                size_t number_of_items, FILE *file_pointer);

 43.120 - free

  Makes available for reallocation the area allocated by a previous
  calloc, malloc, or realloc call.  This function is AST-reentrant.

  Syntax:

       #include <stdlib.h>

       void free(void *pointer);

 43.121 - freopen

  Substitutes the file, named by a file specification, for the open
  file addressed by a file pointer.  The latter file is closed.

  Syntax:

   #include <stdio.h>

   FILE *freopen(const char *file_spec, const char *access_mode,
          FILE *file_pointer,...);

  Where the ...  represents optional file attribute arguments.  The
  file attribute arguments are the same as those used in the creat
  function.

 43.122 - frexp

  Calculates the fractional and exponent parts of a double value.
  The fractional part is returned as the return value; the exponent
  is placed in the integer variable pointed to by eptr.

  Syntax:

       #include <math.h>

       double frexp(double value, int *eptr);

 43.123 - fscanf

  Performs formatted input from a specified file.

  Syntax:

       #include <stdio.h>

       fscanf(FILE *file_pointer, const char *format_string,...);

  The ...  represents optional expressions that are pointers to
  objects whose results correspond to conversion specifications given
  in the format_string.  If no conversion specifications are given,
  you can omit the input pointers.  Otherwise, the function calls
  must have exactly as many input pointers as there are conversion
  specifications, and the conversion specifications must match the
  types of the input pointers.  Conversion specifications are matched
  to input sources in left-to-right order.

  The format_string for the input of information can include three
  kinds of items:

   o  White-space characters (spaces, tabs, and new-line characters),
      which match optional white-space characters in the input field.

   o  Ordinary characters (not %), which must match the next
      nonwhite-space character in the input.

   o  Conversion specifications, which govern the conversion of the
      characters in an input field and their assignment to an object
      indicated by a corresponding input pointer.

 A conversion specification consists of the following characters, in
 the order listed:

       o  A percent character (%) or the sequence %n$ (where n is an
          integer).

          The sequence %n$ denotes that the conversion is applied to
          the nth input pointer listed, where n is a decimal integer
          between [1, NL_ARGMAX] (see the <limits.h> header file).
          For example, a conversion specification beginning %5$ means
          that the conversion will be applied to the 5th input
          pointer listed after the format specification.  The
          sequence %$ is invalid.  If the conversion specification
          does not begin with the sequence %n$ the conversion
          specification is matched to its input pointer in
          left-to-right order.  You should only use one type of
          conversion specification (% or %n$) in a format
          specification.

       o  One or more optional characters

       o  A conversion specifier.

 43. 123.1 - Optional character

  *            Assignment-suppressing character.

  field width Nonzero decimal integer that specifies the maximum
              field width.

  h, l, or L  Precede a conversion specifier of d, i, or n with an h
              if the corresponding argument is a pointer to short int
              rather than a pointer to int, or with an l (lowercase
              ell) if it is a pointer to long int.

              Similarly, precede a conversion specifier of o, u, or x
              with an h if the corresponding argument is a pointer to
              unsigned short int rather than a pointer to unsigned
              int, or with an l (lowercase ell) if it is a pointer to
              unsigned long int.

              Finally, precede a conversion specifier of e, f, or g
              with an l (lowercase ell) if the corresponding argument
              is a pointer to double rather than a pointer to float,
              or with an L if it is a pointer to long double.

              If an h, l, or L appears with any other conversion
              specifier, the behavior is undefined.

 43. 123.2 - Conversion Specifier

  d           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtol function with the value 10 for the base
              argument.  The corresponding argument must be a pointer
              to int.

  i           Expects an integer whose type is determined by the
              leading input characters.  For example, a leading 0 is
              equated to octal, a leading 0X is equated to
              hexadecimal, and all other forms are equated to
              decimal.  The corresponding argument must be a pointer
              to int.

  o           Expects an octal integer in the input (with or without
              a leading 0).  The corresponding argument must be a
              pointer to int.

  u           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtoul function with the value 10 for the base
              argument.

  x           Expects a hexadecimal integer in the input (with or
              without a leading 0x).  The corresponding argument must
              be a pointer to unsigned int.

  c           Expects a single byte in the input.  The corresponding
              argument must be a pointer to char.  If a field width
              precedes the c conversion specifier, the number of
              characters specified by the field width is read.  In
              this case, the corresponding argument must be a pointer
              to an array of char.

  C           Expects a multibyte character in the input which is
              converted into a wide character code.  The
              corresponding argument must be a pointer to type
              wchar_t.  If a field width precedes the C conversion
              specifier, the number of characters specified by the
              field width is read; in this case, the corresponding
              argument must be a pointer to array of wchar_t.

  s           Expects a sequences of bytes in the input.  The
              corresponding argument must be a pointer to an array of
              characters that is large enough to contain the sequence
              plus a terminating null character, which is added
              automatically.  The input field is terminated by a
              space, tab, or new-line character.

  S           Expects a sequence of multibyte characters in the
              input, which are converted to wide-character codes.
              The corresponding argument must be a pointer to an
              array of wide characters (type wchar_t) that is large
              enough to contain the sequence plus a terminating null
              wide-character code which is added automatically.  The
              input field is terminated by a space, tab, or new-line
              character.

  e,f,g       Expects a floating-point number in the input.  The
              corresponding argument must be a pointer to float.  The
              input format for floating-point numbers is:

              [+|-]nnn[radix][ddd][{E|e}[+|-]nn]

              The n's and d's are decimal digits (as many as
              indicated by the field width minus the signs and the
              letter E).  The radix character is defined in the
              current locale.

  [...]       Expects a nonempty sequence of characters that is not
              delimited by a white-space character.  The brackets
              enclose a set of characters (the scanset) expected in
              the input sequence.  Any character in the input
              sequence that does not match a character in the scanset
              terminates the character sequence.  The corresponding
              argument must be a pointer to an array of characters.

              All characters between the brackets comprise the
              scanset, unless the first character after the left
              bracket is a circumflex (^).  In this case, the scanset
              contains all characters other than those that appear
              between the circumflex and the right bracket; that is,
              any character that does appear between the circumflex
              and the right bracket will terminate the input
              character sequence.

              If the conversion specifier begins with [] or [^], the
              right-bracket character is in the scanset and the next
              right-bracket character is the matching right bracket
              that ends the specification; otherwise, the first right
              bracket character ends the specification.

  p           An argument that is a pointer to void.  The input value
              is interpreted as a hexadecimal value.

  n           No input is consumed.  The corresponding argument is a
              pointer to an integer.  The integer is assigned the
              number of characters read from the input stream so far
              by this call to the formatted input function.
              Execution of a %n directive does not increment the
              assignment count returned when the formatted input
              function completes execution.

  %           Matches a single percent symbol.  No conversion or
              assignment takes place.  The complete conversion
              specification would be %%.

 43.124 - fseek

  Positions the file to the specified byte offset in the file.

  Syntax:

       #include <stdio.h>

       int fseek(FILE *file_pointer, long int offset, int direction);

 43.125 - fsetpos

  Sets the file position indicator for the stream according to the
  value of the object pointed to by pos.

  Syntax:

       #include <stdio.h>

       int fsetpos (FILE *stream, const fpos_t *pos);

 43.126 - fstat

  Accesses information about the file descriptor or the file
  specification.

  Syntax:

       #include <stat.h>

       int fstat(int file_descriptor, struct stat *buffer);

 43.127 - fsync

  Flushes data all the way to the disk.

  Syntax:

       #include <unistd.h>

       int fsync(int file_descriptor);

 43.128 - ftell

  Returns the current byte offset to the specified file.

  Syntax:

       #include <stdio.h>

       long int ftell(FILE *file_pointer);

 43.129 - ftime

  Returns the time elasped since 00:00:00 January 1, 1970, in the
  structure pointed at by timeptr.

  Syntax:

       #include <timeb.h>

       int ftime(struct timeb *timeptr);

 43.130 - ftruncate

  Truncates a file to a specified length.

  Syntax:

        #include <unistd.h>

        int ftruncate (int filedes, off_t length);

 43.131 - ftw

  Walks a file tree.

  Syntax:

        #include <ftw.h>

        int ftw (const char *path,
                 int(*function)(cont char *,const struct stat *,int)
                 int depth);

 43.132 - fwait

  Is used to wait for I/O on a specific file to complete.

  Syntax:

       #include <stdio.h>

       int fwait(FILE *fp);

 43.133 - fwide

  Determines and sets the orientation of a stream.

  Syntax:

        #include <wchar.h>

        int fwide (FILE *stream, int mode);

 43.134 - fwprintf

  Prints formatted output to a stream based on specified arguments.

  Syntax:

        #include <wchar.h>

        int fwprintf (FILE *stream, const wchar_t *format, ...);

 43.135 - fwrite

  Writes a specified number of items to the file.

  Syntax:

   #include <stdio.h>

   size_t fwrite(const void *pointer, size_t size_of_item,
                 size_t number_items, FILE *file_pointer);

 43.136 - fwscanf

  Performs formatted input from a stream based on specified
  arguments.

  Syntax:

        #include <wchar.h>

        int fwscanf (FILE *stream, const wchar_t *format, ...);

 43.137 - gcvt

  Converts its value argument to a null-terminated string of ASCII
  digits and returns the address of the string.  The strings are
  stored in a memory location created by the function.

  Syntax:

       #include <stdlib.h>

       char *gcvt(double value, int ndigit, char *buf);

 43.138 - getc

  Returns characters from a specified file.

  Syntax:

       #include <stdio.h>

       int getc(FILE *file_pointer);

 43.139 - [w]getch

  Curses Screen Management function and macro that get a character
  from the terminal screen and echo it on the specified window.  The
  getch macro echos the character on stdscr.

  Syntax:

       #include <curses.h>

       char getch();
       char wgetch(WINDOW *win);

 43.140 - getchar

  Reads a single character from the standard input (stdin).

  Syntax:

       #include <stdio.h>

       int getchar(void);

 43.141 - getclock

  Gets current value of system-wide clock.

  Syntax:

        #include <timers.h>

        int getclock (int clktyp, struct timespec *tp);

 43.142 - getcwd

  Returns a pointer to the file specification for the current working
  directory.

  Syntax:

       #include <unistd.h>

       char *getcwd (char *buffer, size_t size); (POSIX-1)

       char *getcwd (char *buffer, unsigned int size,...); (Compaq C
       Extension)

  where the ...  is an optional argument that can be either 1 or 0.
  If you specify 1, getcwd returns the directory specification in
  OpenVMS format.  If you specify 0, getcwd returns the directory
  specification (path name) in UNIX style format.  If you do not
  specify this argument, getcwd returns the file name according to
  your current command-language interpreter.

 43.143 - getdtablesize

  Gets the total number of file descriptors that a process can have
  open simultaneously.

  Syntax:

        #include <unistd.h>

        int getdtablesize (void);

 43.144 - getegid

  Returns, in OpenVMS terms, the group number from the user
  identification code (UIC).  For example, if the UIC is [313,031],
  313 is the group number.

  Syntax:

       #include <unistd.h>

       gid_t getegid(void);

 43.145 - getenv

  Searches the environment array for the current process and returns
  the value associated with the environment name.

  Syntax:

       #include <stdlib.h>
       char *getenv(const char *name);

 43.146 - geteuid

  Returns, in OpenVMS terms, the member number from the user
  identification code (UIC).  For example, if the UIC is [313,031],
  313 is the member number.

  Syntax:

       #include <unistd.h>

       uid_t geteuid(void)

 43.147 - getgid

  Returns, in OpenVMS terms, the group number from the user
  identification code (UIC).  For example, if the UIC is [313,031],
  313 is the group number.

  Syntax:

       #include <unistd.h>

       gid_t getgid(void);

 43.148 - getitimer

  Returns the value of interval timers.

  Syntax:

        #include <time.h>
        #define ITIMER_REAL 0
        #define ITIMER_VIRTUAL 1
        #define ITIMER_PROF 2

        int getitimer (int which, struct itimerval *value);

 43.149 - getlogin

  Gets login name.

  Syntax:

        #include <unistd.h>

        char *getlogin (void);

 43.150 - getname

  Returns the file specification associated with a file descriptor.

  Syntax:

       #include <unixio.h>

       char *getname(int file_descriptor, char *buffer,...);

  where the ...  is an optional argument that can be either 1 or 0.
  If you specify 1, getname returns the directory specification in
  OpenVMS format.  If you specify 0, getname returns the directory
  specification (path name) in UNIX style format.  If you do not
  specify this argument, getname returns the file name according to
  your current command-language interpreter.

 43.151 - getopt

  The getopt function is a command-line parser that can be used by
  applications that follow Utility Syntax Guidelines 3,4,5,6,7,9, and
  10 in Section 10.2 of the XBD specification.  The remaining
  guidelines are not addressed by getopt and are the responsibility
  of the application.

  Syntax:

       #include <unistd.h> (X/Open, POSIX-2)

       #include <stdio.h> (X/Open, POSIX-1)

       int getopt(int argc, char * const argv[], const char
       *optstring);

       extern char *optarg;
       extern int optind, opterr, optopt;

 43.152 - getpagesize

  Gets the system page size.

  Syntax:

       #include <unistd.h>

        int getpagesize (void);

 43.153 - getpid

  Returns the process ID of the current process.

  Syntax:

       #include <unistd.h>

       pid_t getpid(void);

 43.154 - getppid

  Returns the parent process ID of the calling process.

  Syntax:

       #include <unistd.h>

       pid_t getppid (void);

 43.155 - getpwnam

  Accesses user name information in the user database.

  Syntax:

        #include <pwd.h>

        struct passwd *getpwnam (const char name);

 43.156 - getpwuid

  Accesses user ID information in the user database.

  Syntax:

        #include <pwd.h>

        struct passwd *getpwuid (uid_t uid);

 43.157 - gets

  Reads a line from the standard input (stdin).

  Syntax:

       #include <stdio.h>

       char *gets(char *string);

 43.158 - [w]getstr

  Curses Screen Management function and macro that get a string from
  the terminal screen, store it in the variable str, and echo it on
  the specified window.  The getstr macro works on the stdscr window.

  Syntax:

       #include <curses.h>

       int getstr(char *str);
       int wgetstr(WINDOW *win, char *str);

 43.159 - gettimeofday

  Gets date and time.  The tpz argument must be the NULL pointer.
  Otherwise, the argument is ignored.

  Syntax:

        #include <time.h>

        int gettimeofday (struct timeval *tp, void *tpz);

 43.160 - getuid

  Returns, in OpenVMS terms, the member number from the user
  identification code (UIC).  For example, if the UIC is [313,031],
  313 is the member number.

  Syntax:

       #include <unistd.h>

       uid_t getuid(void);

 43.161 - getw

  Returns characters from a specified file.

  Syntax:

       #include <stdio.h>

       int getw(FILE *file_pointer);

 43.162 - getwc

  Reads the next character from a specified file, and converts it to
  a wide-character code.

  Syntax:

       #include <wchar.h>

       wint_t getwc (FILE *file_ptr);

 43.163 - getwchar

  Reads a single wide character from the standard input (stdin).  The
  getwchar function is identical to fgetwc(stdin).

  Syntax:

       #include <wchar.h>

       wint_t getwchar (void);

 43.164 - getyx

  Curses Screen Management function that puts the (y,x) coordinates
  of the current cursor position on win in the variables y and x.

  Syntax:

       #include <curses.h>

       getyx(WINDOW *win, int y, int x);

 43.165 - gmtime, gmtime_r

  Converts the time (in seconds since the Epoch) pointed to by timer
  into a broken-down time, expressed as Coordinated Universal Time
  (UTC).

  Note:  The name of this function was originally defined to return
  the time expressed as GMT (Greenwich Mean Time); its definition was
  changed to reflect current technical standard terminology.

  gmtime_r puts the result into a user-specified buffer.

  gmtime puts the result into thread-specific static memory allocated
  by the Compaq C RTL, which can be overwritten by subsequent calls
  to gmtime; you must make a copy if you want to save it.

  Syntax:

       #include <time.h>

       struct tm *gmtime (const time_t *timer);

       struct tm *gmtime_r(const time_t *timer, struct tm *result);
       [posix1]

 43.166 - gsignal

  Generates a specified software signal.  Generating a signal causes
  the action routine established by the signal, ssignal, or sigvec
  function to be invoked.

  Syntax:

       #include <signal.h>

       int gsignal(int sig [, int sigcode]);

 43.167 - hypot

  Returns the square root of the sum of two squares of two arguments.
  For example:  sqrt(x*x + y*y).

  Syntax:

       #include <math.h>

       double hypot(double x, double y);

 43.168 - iconv

  Converts characters coded in one codeset into another codeset.

  Characters in the buffer pointed to by inbuf are converted to
  characters in another code set.  The resulting characters are
  stored in the buffer pointed to by outbuf.  The conversion type is
  specified by the conversion descriptor cd.  This descriptor is
  returned from a successful call to iconv_open.

  If an invalid character is found in the input buffer, the
  conversion stops after the last successful conversion.  The
  variable pointed to by inbytesleft is updated to reflect the number
  of bytes in the input buffer that are not converted.  The variable
  pointed to by outbytesleft is updated to reflect the number of
  bytes available in the output buffer.

  Syntax:

       #include <iconv.h>

       size_t iconv (iconv_t cd, char **inbuf, size_t *inbytesleft,
       char **outbuf,
       size_t *outbytesleft);

 43.169 - iconv_close

  Deallocates a specified conversion descriptor and the resources
  allocated to it.

  Syntax:

       #include <iconv.h>

       int iconv_close (iconv_t cd);

 43.170 - iconv_open

  Allocates a conversion descriptor for a specified codeset
  conversion.

  Syntax:

       #include <iconv.h>

       iconv_t iconv_open (const char *tocode, const char *fromcode);

 43.171 - [w]inch

  Curses Screen Management function and macro that return the
  character at the current cursor position on the specified window
  without making changes to the window.  The inch macro acts on the
  stdscr window.

  Syntax:

       #include <curses.h>

       char inch();
       char winch(WINDOW *win);

 43.172 - index

  Search for a character in a string.

  Syntax:

        #include <strings.h>

        char *index (const char *s, int c);

 43.173 - initscr

  Curses Screen Management function that initializes the
  terminal-type data and all screen functions.  You must call initscr
  before using any of the Curses functions or macros.

  Syntax:

       #include <curses.h>

       void initscr(void);

 43.174 - initstate

  Initializes, restarts, and changes random number generators.

  Syntax:

       #include <stdlib.h>

        char *initstate (unsigned int seed, char *state, int size);

 43.175 - [w]insch

  Curses Screen Management function and macro that insert the
  character ch at the current cursor position in the specified
  window.  The insch macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int insch(char ch);
       int winsch(WINDOW *win, char ch);

 43.176 - [w]insertln

  Curses Screen Management function and macro that insert a line
  above the line containing the current cusor position.  The insertln
  macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int insertln();
       int winsertln(WINDOW *win);

 43.177 - [w]insstr

  Curses Screen Management function and macro that insert a string at
  the current cursor position on the specified window.  The insstr
  macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int insstr(char *str);
       int winsstr(WINDOW *win, char *str);

 43.178 - isalnum

  Returns a nonzero integer if its argument is classed as alphabetic
  or as a digit in the program's current locale.  Otherwise, it
  returns 0.

  Syntax:

       #include <ctype.h>

       int isalnum(int character);

 43.179 - isalpha

  Returns a nonzero integer if its argument is classed as an
  alphabetic character in the program's current locale.  Otherwise,
  it returns 0.

  Syntax:

       #include <ctype.h>

       int isalpha(int character);

 43.180 - isapipe

  Returns 1 if the specified file descriptor is associated with a
  pipe, and 0 if it is not.

  Syntax:

       #include <unixio.h>

       int isapipe(int file_descriptor);

 43.181 - isascii

  Returns a nonzero integer if its argument is any ASCII character.
  Otherwise, it returns 0.

  Syntax:

       #include <ctype.h>

       int isascii(int character);

 43.182 - isatty

  Returns 1 if the specified file descriptor is associated with a
  terminal, and 0 if it is not.

  Syntax:

       #include <unistd.h>

       int isatty(int file_descriptor);

 43.183 - iscntrl

  Returns a nonzero integer if its argument is classed as a control
  character in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <ctype.h>

       int iscntrl(int character);

 43.184 - isdigit

  Returns a nonzero integer if its argument is classed as a digit in
  the program's current locale.  Otherwise, it returns 0.

  Syntax:

       #include <ctype.h>

       int isdigit(int character);

 43.185 - isgraph

  Returns a nonzero integer if its argument is classed as a graphic
  character in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <ctype.h>

       int isgraph(int character);

 43.186 - islower

  Returns a nonzero integer if its argument is classed as a lowercase
  character in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <ctype.h>

       int islower(int character);

 43.187 - isprint

  Returns a nonzero integer if its argument is classed as a printing
  character in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <ctype.h>

       int isprint(int character);

 43.188 - ispunct

  Returns a nonzero integer if its argument is classed as a
  punctuation character in the program's current locale.  Otherwise,
  it returns 0.

  Syntax:

       #include <ctype.h>

       int ispunct(int character);

 43.189 - isspace

  Returns a nonzero integer if its argument is classed as a space
  character in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <ctype.h>

       int isspace(int character);

 43.190 - isupper

  Returns a nonzero integer if its argument is classed as an
  uppercase character in the program's current locale.  Otherwise, it
  returns 0.

  Syntax:

       #include <ctype.h>

       int isupper(int character);

 43.191 - iswalnum

  Returns a nonzero integer if its wide-character argument is classed
  as alphabetic or as a digit in the program's current locale.
  Otherwise, it returns 0.

  Syntax:

       #include <wchar.h>

       int iswalnum (wint_t wc);

 43.192 - iswalpha

  Returns a nonzero integer if its wide-character argument is classed
  as an alphabetic character in the program's current locale.
  Otherwise, it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswalpha (wint_t wc);

 43.193 - iswcntrl

  Returns a nonzero integer if its wide-character argument is classed
  as a control character in the program's current locale.  Otherwise,
  it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswcntrl (wint_t wc);

 43.194 - iswctype

  Returns a nonzero integer if its wide-character argument has a
  specified property.  Otherwise, it returns 0.  The specified
  property (wc_prop) is set by calling the wctype routine.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswctype (wint_t wc, wctype_t wc_prop);

 43.195 - iswdigit

  Returns a nonzero integer if its wide-character argument is classed
  as a digit in the program's current locale.  Otherwise, it returns
  0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswdigit (wint_t wc);

 43.196 - iswgraph

  Returns a nonzero integer if its wide-character argument is classed
  as a graphic character in the program's current locale.  Otherwise,
  it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswgraph (wint_t wc);

 43.197 - iswprint

  Returns a nonzero integer if its wide-character argument is classed
  as a printing character in the program's current locale.
  Otherwise, it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswprint (wint_t wc);

 43.198 - iswpunct

  Returns a nonzero integer if its wide-character argument is classed
  as a punctuation character in the program's current locale.
  Otherwise, it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswpunct (wint_t wc);

 43.199 - iswspace

  Returns a nonzero integer if its wide-character argument is classed
  as a space character in the program's current locale.  Otherwise,
  it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswspace (wint_t wc);

 43.200 - iswupper

  Returns a nonzero integer if its wide-character argument is classed
  as an upppercase character in the program's current locale.
  Otherwise, it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswupper (wint_t wc);

 43.201 - iswxdigit

  Returns a nonzero integer if its wide-character argument is a
  hexadecimal digit (0 to 9, A to F, or a to f) in the program's
  current locale.  Otherwise, it returns 0.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int iswxdigit (wint_t wc);

 43.202 - isxdigit

  Returns a nonzero integer if its argument is a hexadecimal digit (0
  to 9, A to F, or a to f) in the program's current locale.

  Syntax:

       #include <ctype.h>

       int isxdigit(int character);

 43.203 - jrand48

  Generate uniformly distributed pseudorandom number sequences.
  Returns 48-bit signed, long integers.

  Syntax:

        #include <stdlib.h>

        long int jrand48 (unsigned short int xsubi[3]);

 43.204 - kill

  Sends a signal to a process specified by a process ID (PID).  This
  function does not support the same functionality supported by UNIX*
  systems.  This function is restricted to C and C++ programs that
  include the main() function.

  * UNIX is a trademark of The Open Group.

  Syntax:

       #include <signal.h>

       int kill(int pid, int sig);

 43.205 - labs

  Returns the absolute value of an integer as a long int.

  Syntax:

       #include <stdlib.h>

       long int labs(long int j);

 43.206 - lcong48

  Initializes a 48-bit uniformly distributed pseudorandom number
  sequences.

  Syntax:

        #include <stdlib.h>

        void lcong48 (unsigned short int param[7]);

 43.207 - ldexp

  Returns its first argument multiplied by 2 raised to the power of
  its second argument.

  Syntax:

       #include <math.h>

       double ldexp(double x, int e);

 43.208 - ldiv

  Returns the quotient and remainder after the division of its
  arguments.

  Syntax:

       #include <stdlib.h>

       ldiv_t ldiv(long int numer, long int denom);

 43.209 - leaveok

  Curses Screen Management macro that signals Curses to leave the
  cursor at the current coordinates after an update to the window.

  Syntax:

       #include <curses.h>

       leaveok(WINDOW *win, bool boolf);

 43.210 - link

  Creates a new link (directory entry) for an existing file.

  Syntax:

       #include <unistd.h>

       link(const char *path1, const char *path2);

 43.211 - localeconv

  Sets the members of a structure of type struct lconv with values
  appropriate for formatting numeric quantities according to the
  rules of the current locale.

  Syntax:

       #include <locale.h>

       struct lconv *localeconv(void);

 43.212 - localtime, localtime_r

  Converts a time (expressed as the number of seconds elapsed since
  00:00:00, January 1, 1970) into hours, minutes, seconds, and so on.
  This function is nonreentrant.

  localtime_r puts the result into a user-specified tm structure.

  localtime stores the result into thread-specific static memory
  allocated by the Compaq C RTL, and which is overwritten by
  subsequent calls to localtime; you must make a copy if you want to
  save it.

  Syntax:

       #include <time.h>

       struct tm *localtime(const time_t *timer);

       struct tm *localtime_r(const time_t *timer, struct tm
       *result); [posix1]

 43.213 - log

  Returns the natural (base-e) logarithm of its argument.

  Syntax:

       #include <math.h>

       double log(double x);

 43.214 - log10

  Returns the base-10 logarithm of its argument.

  Syntax:

       #include <math.h>

       double log10(double x);

 43.215 - longjmp

  Provides a way to transfer control from a nested series of function
  invocations back to a predefined point without returning normally;
  that is, by not using a series of return statements.  The longjmp
  function restores the context of the environment buffer.

  Syntax:

       #include <setjmp.h>

       void longjmp(jmp_buf env, int val);

 43.216 - longname

  Returns the full name of the terminal.  The name parameter is a
  character-string buffer with a minimum length of 64 characters, and
  must be large enough to hold the name.

  Syntax:

       #include <curses.h>

       void longname(char *termbuf, char *name);

 43.217 - lrand48

  Generates uniformly distributed pseudorandom number sequences.
  Returns 48-bit signed long integers.

  Syntax:

        #include <stdlib.h>

        long int lrand48 (void);

 43.218 - lseek

  Positions a file to an arbitrary byte position and returns the new
  position as an int.

  Syntax:

       #include <unistd.h>

       off_t lseek(int file_descriptor, off_t offset, int direction);

 43.219 - lwait

  Is used to wait for I/O on a specific file to complete.

  Syntax:

       #include <stdio.h>

       int lwait(int fd);

 43.220 - malloc

  Allocates an area of memory.  This function is AST-reentrant.

  This function allocates a contiguous area of memory whose size, in
  bytes, is supplied as an argument.  The space is not initialized.

  Syntax:

       #include <stdlib.h>

       void *malloc(size_t size);

       Note:

       The malloc routines calls the system routine LIB$VM_MALLOC.
       Because LIB$VM_MALLOC is designed as a general purpose routine
       to allocate
       memory, it is called upon in a wide array of scenarios to
       allocate and reallocate blocks efficiently. The most common
       usage
       is the management of smaller blocks of memory, and the most
       important
       aspect of memory allocation under these circumstances is
       efficiency.

       LIB$VM_MALLOC makes use of its own free space to satisfy
       requests, once the
       heap storage is consumed by splitting large blocks and merging
       adjacent blocks.
        Memory can still become fragmented, leaving unused blocks.
       Once heap storage
       is consumed, LIB$VM_MALLOC manages its own free space and
       merged blocks to
       satisfy requests, but varying sizes of memory allocations can
       cause blocks to
       be left unused.

       Because LIB$VM_MALLOC cannot be made to satisfy all situations
       in the best
       possible manner, you should perform your own memory management
       if you have
       special memory usage needs. This assures the best use of
       memory for
       your particular application.

       The OpenVMS Programming Concepts Manual explains the several
       memory
       allocation routines that are available.  They are grouped into
       3
       levels of hierarchy:

        o  At the highest level are the RTL Heap Management
           Routines LIB$GET_VM and LIB$FREE_VM, which provide a
           mechanism
           for allocating and freeing blocks of memory of arbitrary
           size.  Also
           at this level are the routines based on the concept of
           zones, such as
           LIB$CREATE_VM_ZONE, and so on.

        o  At the next level are the RTL Page Management
           routines LIB$GET_VM_PAGE and LIB$FREE_VM_PAGE, which
           allocate
           a specified number of contiguous pages.

        o  At the lowest level are the Memory Management System
           Services such as
           $CRETVA and $EXPREG that provide extensive control over
           address space
           allocation.  Note that at the this level, you must manage
           the allocation
           precisely.

 43.221 - mblen

  Determines the number of bytes comprising a multibyte character.

  Syntax:

       #include <stdlib.h>

       int mblen(const char *s, size_t n);

 43.222 - mbstowcs

  Converts a sequence of multibyte characters into a sequence of
  corresponding wide-character codes.

  Syntax:

       #include <stdlib.h>

       size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);

 43.223 - mbtowc

  Converts a multibyte character to its wide-character equivalent.

  Syntax:

       #include <stdlib.h>

       int mbtowc(wchar_t *pwc, const char *s, size_t n);

 43.224 - mbrlen

  Returns the number of multibyte characters in a multibyte character
  sequence.

  Syntax:

        #include <wchar.h>

        size_t mbrlen (const char *s, size_t n, mbstate_t *ps);

 43.225 - mbrtowc

  Determines the number of bytes needed to complete the next
  multibyte character, including shift sequences.

  Syntax:

        #include <wchar.h>

        size_t mbrtowc (wchar_t *pwc,
                        const char *s,
                        size_t n,
                        mbstate_t *ps);

 43.226 - mbsinit

  Determines an initial state conversion.

  Syntax:

        #include <wchar.h>

        int mbsinit (const mbstate_t *ps);

 43.227 - mbsrtowcs

  Converts a multibyte character sequence to a corresponding wide
  character sequence.

  Syntax:

        #include <wchar.h>

        size_t mbsrtowcs (wchar_t *dst,
                          const char **src,
                          size_t len,
                          mbstate_t *ps);

 43.228 - memccpy

  Copies characters sequentially between strings in memory areas.

  Syntax:

        #include <string.h>

        void *memccpy (void *destination_str, void *source_str, int
       c, size_t n);

 43.229 - memchr

  Locates the first occurrence of the specified byte within the
  initial size bytes of a given object.

  Syntax:

       #include <string.h>

       void *memchr (const void *s1, int c, size_t size);

 43.230 - memcmp

  Compares two objects, byte by byte.  The compare operation starts
  with the first byte in each object.  It returns an integer less
  than, equal to, or greater than 0, depending on whether the lexical
  value of the first object is less than, equal to, or greater than
  that of the second object.

  Syntax:

       #include <string.h>

       int memcmp (const void *s1, const void *s2, size_t size);

 43.231 - memcpy

  Copies a specified number of bytes from one object to another.

  Use memmove rather than memcpy if the area pointed to by the
  destination string could overlap the area pointed to by the source
  string; memmove safely handle copies between overlapping objects;
  memcpy gives undefined behavior.

  Syntax:

       #include <string.h>

       void *memcpy (void *destination_str, const void *source_str,
       size_t size);

 43.232 - memmove

  Copies a specified number of bytes from one object to another.

  Use memmove rather than memcpy if the area pointed to by the
  destination string could overlap the area pointed to by the source
  string; memmove safely handle copies between overlapping objects;
  memcpy gives undefined behavior.

  Syntax:

       #include <string.h>

       void *memmove(void *destination_str, const void *source_str,
                     size_t size);

 43.233 - memset

  Sets a specified number of bytes in a given object to a given
  value.

  memset copies value (converted to an unsigned char) into each of
  the first size characters of the object pointed to by s.

  Syntax:

       #include <string.h>

       void *memset (void *s, int value, size_t size);

 43.234 - mkdir

  Creates a directory.

  Syntax:

       #include <stat.h>

       int mkdir(const char *dir_spec, mode_t mode); (POSIX-1)

       int mkdir(const char *dir_spec, mode_t mode,...); (Compaq C
       Extension)

  where the ...  represents the following optional arguments.  These
  arguments have fixed position in the argument list, and cannot be
  arbitrarily placed.

   o  unsigned int uic

   o  unsigned short max_versions

   o  unsigned short r_v_number

 43.235 - mkstemp

  Constructs a unique filename.

  Syntax:

        #include <stdlib.h>

        int mkstemp (char *template);

 43.236 - mktemp

  Creates a unique file name from a template that you supply.

  Syntax:

       #include <stdlib.h>

       char *mktemp(char *template);

 43.237 - mktime

  Converts the local time structure to a calendar time value.

  Syntax:

       #include <time.h>

       time_t mktime(struct tm *timeptr);

 43.238 - mmap

  Maps a file system object into virtual memory.

  Syntax:

        #include <types.h>
        #include <mman.h>

        void mmap (void *addr,
                   size_t len,
                   int prot,
                   int flags,
                   int filedes,
                   off_t off);  [xopen/posix-1]
                   size_t len,
                   int prot,
                   int flags,
                   int filedes,
                   off_t off...);  [Compaq C extension]

 43.239 - modf

  Returns the positive fractional part of its first argument and
  assigns the integer part, expressed as an object of type double, to
  the object whose address is specified by the second argument.

  Syntax:

       #include <math.h>

       double modf(double value, double *iptr);

 43.240 - [w]move

  Curses Screen Management function and macro that change the current
  cursor position on the specified window to the coordinates (y,x).
  The move macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int move(int y, int x);
       int wmove(WINDOW *win, int y, int x);

 43.241 - mprotect

  Modifies access protections of memory mapping.

  Syntax:

        #include <mman.h>

        int mprotect (void *addr, size_t len, int prot);

 43.242 - mrand48

  Generate uniformly distributed pseudorandom number sequences.
  Returns 48-bit signed long integers.

  Syntax:

        #include <stdlib.h>

        long int mrand48 (void);

 43.243 - msync

  Synchronizes a mapped file.

  Syntax:

        #include <mman.h>

        int msync (void *addr, size_t len, int flags);

 43.244 - munmap

  Unmaps a mapped region.

  Syntax:

        #include <mman.h>

        int munmap (void *addr,size_t len);

 43.245 - mv[w]addch

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and add the character ch to the specified window.  The
  mvaddch macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvaddch(int y, int x, char ch);
       int mvwaddch(WINDOW *win, int y, int x, char ch);

 43.246 - mv[w]addstr

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and add the specified string, to which str points, to the
  specified window.  The mvaddstr macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvaddstr(int y, int x, char *str);
       int mvwaddstr(WINDOW *win, int y, int x, char *str);

 43.247 - mvcur

  Curses Screen Management macro that moves the terminal's cursor
  from (lasty,lastx) to (newy,newx).

  Syntax:

       #include <curses.h>

       int mvcur(int lasty, int lastx, int newy, int newx);

 43.248 - mv[w]delch

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and delete the character on the specified window.  The
  mvdelch macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvdelch(int y, int x);
       int mvwdelch(WINDOW *win, int y, int x);

 43.249 - mv[w]getch

  Curses Screen Management macros that move the cursor to coordinates
  (y,x), get a character from the terminal screen, and echo it on the
  specified window.  The mvgetch macro works on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvgetch(int y, int x);
       int mvwgetch(WINDOW *win, int y, int x);

 43.250 - mv[w]getstr

  Curses Screen Management macros that move the cursor to coordinates
  (y,x), get a string from the terminal screen, and echo it on the
  specified window.  The mvgetstr macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvgetstr(int y, int x, char *str);
       int mvwgetstr(WINDOW *win, int y, int x, char *str);

 43.251 - mv[w]inch

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and return the character on the specified window without
  making changes to the window.  The mvinch macro acts on the stdscr
  window.

  Syntax:

       #include <curses.h>

       int mvinch(int y, int x);
       int mvwinch(WINDOW *win, int y, int x);

 43.252 - mv[w]insch

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and insert the character ch in the specified window.  The
  mvinsch macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvinsch(int y, int x, char ch);
       int mvwinsch(WINDOW *win, int y, int x, char ch);

 43.253 - mv[w]insstr

  Curses Screen Management macros that move the cursor to coordinates
  (y,x) and insert a string on the specified window.  The mvinsstr
  macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int mvinsstr(int y, int x, char *str);
       int mvwinsstr(WINDOW *win, int y, int x, char *str);

 43.254 - mvwin

  Curses Screen Management macro that moves the starting position of
  the window to the specified (y,x) coordinates.

  Syntax:

       #include <curses.h>

       int wvwin(WINDOW *win, int y, int x);

 43.255 - newwin

  Curses Screen Management routine that creates a new window with
  numlines lines and numcols columns starting at the coordinates
  (begin_y, begin_x) on the terminal screen.

  Syntax:

       #include <curses.h>

       WINDOW *newwin(int numlines, int numcols, int begin_y,
                      int begin_x);

 43.256 - nice

  Increments or decrements the process priority relative to the
  process current priority by the amount of the argument.  A negative
  argument increments the priority; a positive argument decrements
  it.  Issuing nice(0) restores the base priority.  The resulting
  priority cannot be less than 1, or greater than the process's base
  priority.  This function is nonreentrant.

  Syntax:

       #include <unistd.h>

       nice(int increment);

 43.257 - [no]nl

  This function and macro are provided for UNIX* software compability
  and have no OpenVMS function.

 ----------
 * UNIX is a trademark of The Open Group.

 43.258 - nl_langinfo

  Returns a pointer to a string that contains information obtained
  from the program's current locale.

  Syntax:

       #include <langinfo.h>

       char *nl_langinfo (nl_item item);

 43.259 - nrand48

  Generate uniformly distributed pseudorandom number sequences.
  Returns 48-bit signed long integers.

  Syntax:

        #include <stdlib.h>

        long int nrand48 (unsigned short int xsub[3]);

 43.260 - open

  Opens a file for reading, writing, or editing.  It positions the
  file at its beginning (byte 0).

  Syntax:

       #include <fcntl.h>

       int open(const char *file_spec, int flags, mode_t mode); (ANSI
       C)

       int open(const char *file_spec, int flags,...); (CEC C
       Extension)

  where the ...  represents optional file attribute arguments.  The
  file attribute arguments are the same as those used in the creat
  function.

 43.261 - opendir

  Opens a specified directory.

  Syntax:

        #include <dirent.h>

        DIR *opendir (const char *dir_name);

 43.262 - overlay

  Curses Screen Management routine that superimposes win1 on win2.
  The function writes the contents of win1 that will fit onto win2
  beginning at the starting coordinates of both windows.  Blanks on
  win1 leave the contents of the corresponding space on win2
  unaltered.  The overlay function copies as much of the window's box
  as possible.

  Syntax:

       #include <curses.h>

       int overlay(WINDOW *win1, WINDOW *win2);

 43.263 - overwrite

  Curses Screen Management routine that destructively overwrites the
  contents of win1 on win2.

  Syntax:

       #include <curses.h>

       int overwrite(WINDOW *win1, WINDOW *win2);

 43.264 - pause

  Suspends the calling process until delivery of a signal whose
  action is either to execute a signal-catching function or to
  terminate the process.

  Syntax:

       #include <unistd.h>

       int pause(void)

 43.265 - pathconf

  Retrieves file implementation characteristics.

  Syntax:

        #include <unistd.h>

        long int pathconf (const char *path, int name);

 43.266 - pclose

  Closes a pipe to a process.

  Syntax:

        #include <stdio.h>

        int pclose (FILE *stream);

 43.267 - perror

  Writes a short message to stderr describing the last error
  encountered during a call to the Compaq C RTL from a C program.

  Syntax:

       #include <stdio.h>

       void perror(const char *string);

 43.268 - pipe

  Creates a temporary mailbox.  You must use a mailbox to read and
  write data between the parent and child.  The channels through
  which the processes communicate are called a pipe.

  Syntax:

       #include <unistd.h>

       int pipe(int file_descriptor[2]); (POSIX-1)

       int pipe(int file_descriptor[2],...); (Compaq C Extension)

  where:

  file_descriptor[2] - is an array of file descriptors.  A pipe is
  implemented as an array of file descriptors associated with a
  mailbox.  These mailbox descriptors are special in that these are
  the only file descriptors which, when passed to the isapipe
  function, will return 1.  Element 0 of the file_descriptor array
  contains the descriptor for reading; element 1 contains the
  descriptor for writing.

  ..  represents two optional arguments:

  flags - If either the O_NDELAY or O_NONBLOCK bit is set, the I/O
  operations to the mailbox through the specified file descriptors
  will terminate immediately, rather than waiting for another
  process.

  If, for example, the O_NDELAY bit is set and the child issues a
  read request to the mailbox before the parent has put any data into
  it, the read terminates immediately with zero status.  If neither
  the O_NDELAY nor O_NONBLOCK bit is set, the child will be waiting
  on the read until the parent writes any data into the mailbox.
  This is the default behavior if no flag argument is specified.

  The values of O_NDELAY and O_NONBLOCK are defined in the <fcntl.h>
  header file.  Any other bits in the flag argument are ignored.  You
  must specify this argument if the second optional, positional
  argument bufsize is specified.  If the flag argument is needed only
  to allow specification of the bufsize argument, specify flag as
  zero.

  bufsize -- specifies the size of the mailbox, in bytes.  If you do
  not specify this argument, a mailbox is created with a default size
  of 512 bytes.

 43.269 - popen

  Initiates a pipe to a process.

  Syntax:

        #include <stdio.h>

        FILE *popen (const char *command, const char *type);

 43.270 - pow

  Returns the first argument raised to the power of the second
  argument.

  Syntax:

       #include <math.h>

       double pow(double base, double exp);

 43.271 - printf

  Performs formatted output to the standard output (stdout).

  Syntax:

       #include <stdio.h>

       int printf(const char *format_string,...);

  where the ...  represents optional expressions whose resultant
  types correspond to conversion specifications given in the format
  specification.  If no conversion specifications are given, you may
  omit the output sources.  Otherwise, the function call must have
  exactly as many output sources as there are conversion
  specifications, and the conversion specifications must match the
  types of the output sources.  Conversion specifications are matched
  to output sources in left-to-right order.

  The format string for the output of information can contain two
  kinds of items:

   o  Ordinary characters, which are copied to the output.

   o  Conversion specifications, each of which causes the conversion
      of a corresponding output source to a character string in a
      particular format.  Conversion specifications are matched to
      output sources in left-to-right order.

 A conversion specification consists of a % (or a %n$), followed by
 one or more optional characters, and concluding with a conversion
 specifier.

 43. 271.1 - Optional character

  flags        You can use the following flag characters, alone or in
               any combined order, to modify the conversion
               specification:

               '         Requests that a numeric conversion is
                         formatted with the thousands separator
                         character.  Only the numbers to the left of
                         the radix character are formatted with the
                         separator character.  The character used as
                         a separator and the positioning of the
                         separators are defined in the program's
                         current locale.

               -(hyphen) Left-justifies the converted output source
                         in its field.

               +         Requests that an explicit sign be present on
                         a signed conversion.  If this flag is not
                         specified, the result of a signed conversion
                         begins with a sign only when a negative
                         value is converted.

               space     Prefixes a space to the result of a signed
                         conversion, if the first character of the
                         conversion is not a sign, or if the
                         conversion results in no characters.  If you
                         specify both the space and the + flag, the
                         space flag is ignored.

               #         Requests an alternate form conversion.
                         Depending on the conversion specified,
                         different actions will occur.  For the o
                         (octal) conversion, the precision is
                         increased to force the first digit to be a
                         0.  For the x (or X) conversion, a nonzero
                         result is prefixed with 0x (or 0X).  For e,
                         E, f, g, and G conversions, the result
                         contains a decimal point even at the end of
                         an integer value.  For g and G conversions,
                         trailing zeros are not trimmed.  For other
                         conversions, the effect of # is undefined.

               0         Uses zeros rather than spaces to pad the
                         field width for d, i, o, u, x, X, e, E, f,
                         g, and G conversions.  If both the 0 and the
                         - flags are specified, then the 0 flag is
                         ignored.  For d, i, o, u, x, and X
                         conversions, if a precision is specified,
                         the 0 flag is ignored.  For other
                         conversions, the behavior of the 0 flag is
                         undefined.

  field width  The minimum field width can be designated by a decimal
               integer constant, or by an output source.  To specify
               an output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.  If the converted
               output source is wider than the minimum field, write
               it out.  If the converted output source is narrower
               than the minimum width, pad it to make up the field
               width.  Pad with spaces, by default.  Pad with zeros
               if the 0 flag is specified; this does not mean that
               the width is an octal number.  Padding is on the left
               by default, and on the right if a minus sign is
               specified.

               If an asterisk is used for the field width, the
               corresponding width is given in the output source.

  period (.)   Separates the field width from the precision.

  precision    The precision defines the minimum number of digits to
               appear for d, i, o, u, x, and X conversions; the
               number of digits to appear after the decimal-point
               character for e, E, and f conversions; the maximum
               number of significant digits for g and G conversions;
               or the maximum number of characters to be written from
               a string in an s or S conversion.  If a precision
               appears with any other conversion specifier, the
               behavior is undefined.

               Precision can be designated by a decimal integer
               constant, or by an output source.  To specify an
               output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.

               If only the period is specified, the precision is
               taken as 0.

  h, l, or L   An h specifies that a following d, i, o, u, x, or X
               conversion specifier applies to a short int or
               unsigned short int argument; an h can also specify
               that a following n conversion specifier applies to a
               pointer to a short int argument.

               An l (lowercase ell) specifies that a following d, i,
               o, u, x, or X conversion specifier applies to a long
               int or unsigned long int argument; an l can also
               specify that a following n conversion specifier
               applies to a pointer to a long int argument.

               An L specifies that a following e, E, f, g, or G
               conversion specifier applies to a long double
               argument.

               If an h, l, or L appears with any other conversion
               specifier, the behavior is undefined.

               On Compaq C for OpenVMS VAX and Alpha Systems, int
               values are equivalent to long values.

 43. 271.2 - Conversion Specifier

  d, i     Converts an int argument to signed decimal format.

  o        Converts an unsigned int argument to unsigned octal
           format.

  u        Converts an unsigned int argument to unsigned decimal
           format (giving a number in the range 0 to 4,294,967,295).

  x, X     Converts an unsigned int argument to unsigned hexadecimal
           format (with or without a leading 0x).  The letters
           'abcdef' are used for the x conversion; the letters
           'ABCDEF' are used for the X conversion.

  f        Converts a float or double argument to the format
           [-]mmm.nnnnnn.  The number of n's is equal to the
           precision specification.  If no precision is specified,
           the default is 6.

           If the precision is 0 and the # flag is specified, the
           decimal point appears but no n's appear.  If the precision
           is 0 and the # flag is not specified, the decimal point
           also does not appear.  If a decimal point appears, at
           least one digit appears before it.  The value is rounded
           to the appropriate number of digits.

  e, E     Converts a float or double argument to the format
           [-]m.nnnnnnE[+|-]xx.  The number of n's is specified by
           the precision.  If no precision is specified, the default
           is 6.  If the precision is explicitly 0 and the # flag is
           specified, the decimal point appears but no n's appear.
           If the precision is explicitly 0 and the # flag is not
           specified, the decimal point also does not appear.  An 'e'
           is printed for e conversion; an 'E' is printed for E
           conversion.  The exponent always contains at least two
           digits.  If the value is 0, the exponent is 0.

  g, G     Converts a float or double argument to format f or e (or E
           if the G conversion specifier is used), with the precision
           specifying the number of significant digits.  If the
           precision is 0, it is taken as 1.

  c        Converts an int argument to an unsigned char, and writes
           the resulting character (null characters are ignored).

  C        Converts a wchar_t argument to an array of bytes
           representing the character, and writes the resulting
           character.  If the field width is specified and the
           resulting character occupies fewer bytes than the field
           width, it will be padded to the given width with space
           characters.  If the precision is specified, the behavior
           is undefined.

  s        Requires an argument that is a pointer to an array of
           characters of type char.  The argument is used to write
           characters until a null character is encountered or until
           the number of characters indicated by the precision
           specification is exhausted.  If the precision
           specification is 0 or omitted, all characters up to a null
           are output.

  S       Converts an array of wide-character codes to multibyte
           characters, and writes the multibyte characters.  Requires
           an argument that is a pointer to an array of wide
           characters of type wchar_t.  Characters are written until
           a null wide character is encountered or until the number
           of bytes indicated by the precision specification is
           exhausted.  If the precision specification is omitted or
           is greater than the size of the array of converted bytes,
           the array of wide characters must be terminated by a null
           wide character.

  p        Requires an argument that is a pointer to void.  The value
           of the pointer is output as a hexadecimal character.

  n        Requires an argument that is a pointer to an integer.  The
           integer is assigned the number of characters written to
           the output stream so far by this call to the formatted
           output function.  No argument is converted.

  %        Writes out the percent symbol.  No conversion is
           performed.  The complete conversion specification would be
           %%.

 43.272 - [w]printw

  Curses Screen Management function and macro that perform a printf
  in the specified window starting at the current position of the
  cursor.  The printw macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       printw(char *format_string,...);
       int wprintw(WINDOW *win, char *format_string,...);

  where the ...  represents optional expressions whose resultant
  types correspond to conversion specifications given in the format
  specification.  If no conversion specifications are given, you may
  omit the output sources.  Otherwise, the function call must have
  exactly as many output sources as there are conversion
  specifications, and the conversion specifications must match the
  types of the output sources.  Conversion specifications are matched
  to output sources in left-to-right order.

  The format string for the output of information can contain two
  kinds of items:

   o  Ordinary characters, which are copied to the output.

   o  Conversion specifications, each of which causes the conversion
      of a corresponding output source to a character string in a
      particular format.  Conversion specifications are matched to
      output sources in left-to-right order.

 A conversion specification consists of a % (or a %n$), followed by
 one or more optional characters, and concluding with a conversion
 specifier.

 43. 272.1 - Optional character

  flags        You can use the following flag characters, alone or in
               any combined order, to modify the conversion
               specification:

               '         Requests that a numeric conversion is
                         formatted with the thousands separator
                         character.  Only the numbers to the left of
                         the radix character are formatted with the
                         separator character.  The character used as
                         a separator and the positioning of the
                         separators are defined in the program's
                         current locale.

               -(hyphen) Left-justifies the converted output source
                         in its field.

               +         Requests that an explicit sign be present on
                         a signed conversion.  If this flag is not
                         specified, the result of a signed conversion
                         begins with a sign only when a negative
                         value is converted.

               space     Prefixes a space to the result of a signed
                         conversion, if the first character of the
                         conversion is not a sign, or if the
                         conversion results in no characters.  If you
                         specify both the space and the + flag, the
                         space flag is ignored.

               #         Requests an alternate form conversion.
                         Depending on the conversion specified,
                         different actions will occur.  For the o
                         (octal) conversion, the precision is
                         increased to force the first digit to be a
                         0.  For the x (or X) conversion, a nonzero
                         result is prefixed with 0x (or 0X).  For e,
                         E, f, g, and G conversions, the result
                         contains a decimal point even at the end of
                         an integer value.  For g and G conversions,
                         trailing zeros are not trimmed.  For other
                         conversions, the effect of # is undefined.

               0         Uses zeros rather than spaces to pad the
                         field width for d, i, o, u, x, X, e, E, f,
                         g, and G conversions.  If both the 0 and the
                         - flags are specified, then the 0 flag is
                         ignored.  For d, i, o, u, x, and X
                         conversions, if a precision is specified,
                         the 0 flag is ignored.  For other
                         conversions, the behavior of the 0 flag is
                         undefined.

  field width  The minimum field width can be designated by a decimal
               integer constant, or by an output source.  To specify
               an output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.  If the converted
               output source is wider than the minimum field, write
               it out.  If the converted output source is narrower
               than the minimum width, pad it to make up the field
               width.  Pad with spaces, by default.  Pad with zeros
               if the 0 flag is specified; this does not mean that
               the width is an octal number.  Padding is on the left
               by default, and on the right if a minus sign is
               specified.

               If an asterisk is used for the field width, the
               corresponding width is given in the output source.

  period (.)   Separates the field width from the precision.

  precision    The precision defines the minimum number of digits to
               appear for d, i, o, u, x, and X conversions; the
               number of digits to appear after the decimal-point
               character for e, E, and f conversions; the maximum
               number of significant digits for g and G conversions;
               or the maximum number of characters to be written from
               a string in an s or S conversion.  If a precision
               appears with any other conversion specifier, the
               behavior is undefined.

               Precision can be designated by a decimal integer
               constant, or by an output source.  To specify an
               output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.

               If only the period is specified, the precision is
               taken as 0.

  h, l, or L   An h specifies that a following d, i, o, u, x, or X
               conversion specifier applies to a short int or
               unsigned short int argument; an h can also specify
               that a following n conversion specifier applies to a
               pointer to a short int argument.

               An l (lowercase ell) specifies that a following d, i,
               o, u, x, or X conversion specifier applies to a long
               int or unsigned long int argument; an l can also
               specify that a following n conversion specifier
               applies to a pointer to a long int argument.

               An L specifies that a following e, E, f, g, or G
               conversion specifier applies to a long double
               argument.

               If an h, l, or L appears with any other conversion
               specifier, the behavior is undefined.

               On Compaq C for OpenVMS VAX and Alpha Systems, int
               values are equivalent to long values.

 43. 272.2 - Conversion Specifier

  d, i     Converts an int argument to signed decimal format.

  o        Converts an unsigned int argument to unsigned octal
           format.

  u        Converts an unsigned int argument to unsigned decimal
           format (giving a number in the range 0 to 4,294,967,295).

  x, X     Converts an unsigned int argument to unsigned hexadecimal
           format (with or without a leading 0x).  The letters
           'abcdef' are used for the x conversion; the letters
           'ABCDEF' are used for the X conversion.

  f        Converts a float or double argument to the format
           [-]mmm.nnnnnn.  The number of n's is equal to the
           precision specification.  If no precision is specified,
           the default is 6.

           If the precision is 0 and the # flag is specified, the
           decimal point appears but no n's appear.  If the precision
           is 0 and the # flag is not specified, the decimal point
           also does not appear.  If a decimal point appears, at
           least one digit appears before it.  The value is rounded
           to the appropriate number of digits.

  e, E     Converts a float or double argument to the format
           [-]m.nnnnnnE[+|-]xx.  The number of n's is specified by
           the precision.  If no precision is specified, the default
           is 6.  If the precision is explicitly 0 and the # flag is
           specified, the decimal point appears but no n's appear.
           If the precision is explicitly 0 and the # flag is not
           specified, the decimal point also does not appear.  An 'e'
           is printed for e conversion; an 'E' is printed for E
           conversion.  The exponent always contains at least two
           digits.  If the value is 0, the exponent is 0.

  g, G     Converts a float or double argument to format f or e (or E
           if the G conversion specifier is used), with the precision
           specifying the number of significant digits.  If the
           precision is 0, it is taken as 1.

  c        Converts an int argument to an unsigned char, and writes
           the resulting character (null characters are ignored).

  C        Converts a wchar_t argument to an array of bytes
           representing the character, and writes the resulting
           character.  If the field width is specified and the
           resulting character occupies fewer bytes than the field
           width, it will be padded to the given width with space
           characters.  If the precision is specified, the behavior
           is undefined.

  s        Requires an argument that is a pointer to an array of
           characters of type char.  The argument is used to write
           characters until a null character is encountered or until
           the number of characters indicated by the precision
           specification is exhausted.  If the precision
           specification is 0 or omitted, all characters up to a null
           are output.

  S       Converts an array of wide-character codes to multibyte
           characters, and writes the multibyte characters.  Requires
           an argument that is a pointer to an array of wide
           characters of type wchar_t.  Characters are written until
           a null wide character is encountered or until the number
           of bytes indicated by the precision specification is
           exhausted.  If the precision specification is omitted or
           is greater than the size of the array of converted bytes,
           the array of wide characters must be terminated by a null
           wide character.

  p        Requires an argument that is a pointer to void.  The value
           of the pointer is output as a hexadecimal character.

  n        Requires an argument that is a pointer to an integer.  The
           integer is assigned the number of characters written to
           the output stream so far by this call to the formatted
           output function.  No argument is converted.

  %        Writes out the percent symbol.  No conversion is
           performed.  The complete conversion specification would be
           %%.

 43.273 - putc

  Writes characters to a specified file.

  Syntax:

       #include <stdio.h>

       int putc(int character, FILE *file_pointer);

 43.274 - putchar

  Writes a single character to the standard output (stdout) and
  returns the character.

  Syntax:

       #include <stdio.h>

       int putchar(int character);

 43.275 - putenv

  Set an environmental variable.

  Syntax:

        #include <stdlib.h>

        int putenv (const char *string);

 43.276 - puts

  Writes a character string to the standard output (stdout) followed
  by a new-line.

  Syntax:

       #include <stdio.h>

       int puts(const char *string);

 43.277 - putw

  Writes characters to a specified file.

  Syntax:

       #include <stdio.h>

       int putw(int integer, FILE *file_pointer);

 43.278 - putwc

  Converts a wide character to its corresponding multibyte value, and
  writes the result to a specified file.

  Syntax:

       #include <wchar.h>

       wint_t putwc(wint_t wc FILE *file_pointer);

 43.279 - putwchar

  Writes a wide character to the standard output (stdout) and returns
  the character.

  Syntax:

       #include <wchar.h>

       wint_t putwchar(wint_t wc);

 43.280 - qsort

  Sorts an array of objects in place.  It implements the quick-sort
  algorithm.

  Syntax:

       #include <stdlib.h>

       void qsort (void *base, size_t nmemb, size_t size,
                   int (*compar) (const void *, const void *));

 43.281 - raise

  Generates a specified software signal.  Generating a signal causes
  the action routine established by the signal, ssignal, or sigvec
  function to be invoked.

  Syntax:

       #include <signal.h>

       int raise(int sig); (ANSI C)

       int raise(int sig[, int sigcode]); (Compaq C Extension)

 43.282 - rand

  Returns pseudorandom numbers in the range 0 to (2**31-1).

  Syntax:

       #include <math.h>

       int rand(void);

 43.283 - random

  Generates pseudorandom numbers in a more random sequence.

  Syntax:

        #include <stdlib.h>

        long int random (void);

 43.284 - [no]raw

  Curses Screen Management macros that set and unset the terminal to
  and from raw mode.  The raw function performs the same task as the
  crmode macro except that raw does not imply nonl.  These macros
  only work with [w]getch and [w]getstr.

  Syntax:

       #include <curses.h>

       raw()
       noraw()

 43.285 - read

  Reads bytes from a file and places them in a buffer.

  Syntax:

       #include <unistd.h>

       ssize_t read(int file_descriptor, void *buffer, size_t
       nbytes); (POSIX-1)

       int read(int file_descriptor, void *buffer, int nbytes);
       (Compatibility)

 43.286 - readdir

  Finds entries in a directory.

  Syntax:

        #include <dirent.h>

        struct dirent *readdir (DIR *dir_pointer);

 43.287 - realloc

  Changes the size of the area pointed to by the first argument to
  the number of bytes given by the second argument.  This function is
  AST-reentrant.

  Syntax:

       #include <stdlib.h>

       void *realloc(void *pointer, size_t size);

 43.288 - [w]refresh

  Curses Screen Management function and macro that repaint the
  specified window on the terminal screen.  The refresh macro acts on
  the stdscr window.

  Syntax:

       #include <curses.h>

       int refresh();
       int wrefresh(WINDOW *win);

 43.289 - remove

  Deletes a file.

  Syntax:

       #include <stdio.h>

       int remove (const char *file-spec);

 43.290 - rename

  Gives a new name to an existing file.

  Syntax:

       #include <stdio.h>

       int rename (const char *old_file_spec,
                   const char *new_file_spec);

 43.291 - rewind

  Sets the file to its beginning.

  Syntax:

       #include <stdio.h>

       void rewind(FILE *file_pointer); (POSIX-1)

       int rewind(FILE *file_pointer); (Compaq C Extension)

 43.292 - rewinddir

  Resets the position of the specified directory stream to the
  beginning.

  Syntax:

        #include <dirent.h>

        void rewinddir (DIR *dir_pointer);

 43.293 - rindex

  Searches for character in string.

  Syntax:

        #include <strings.h>

        char *rindex (const char *s, int c);

 43.294 - rmdir

  Removes a directory file.

  Syntax:

        #include <unistd.h>

        int rmdir (const char *path);

 43.295 - sbrk

  Determines the lowest virtual address that is not used with the
  program.

  Syntax:

       #include <unistd.h>

       void *sbrk(long int incr);

 43.296 - scanf

  Performs formatted input from the standard input (stdin).

  Syntax:

       #include <stdio.h>

       int scanf(const char *format_string,...);

  where the ...  represents optional expressions that are pointers to
  objects whose resultant types correspond to conversion
  specifications given in the format_string.  If no conversion
  specifications are given, you may omit these input pointers.
  Otherwise, the function call must have at least as many input
  pointers as there are conversion specifications, and the conversion
  specifications must match the types of the input pointers.
  Conversion specifications are matched to input sources in
  left-to-right order.  Excess input pointers, if any, are ignored.

  The format string for the input of information can include three
  kinds of items:

   o  White-space characters (spaces, tabs, and new-line characters),
      which match optional white-space characters in the input field.

   o  Ordinary characters (not %), which must match the next
      nonwhite-space character in the input.

   o  Conversion specifications, which govern the conversion of the
      characters in an input field and their assignment to an object
      indicated by a corresponding input pointer.

 A conversion specification consists of the following characters, in
 the order listed:

       o  A percent character (%) or the sequence %n$ (where n is an
          integer).

          The sequence %n$ denotes that the conversion is applied to
          the nth input pointer listed, where n is a decimal integer
          between [1, NL_ARGMAX] (see the <limits.h> header file).
          For example, a conversion specification beginning %5$ means
          that the conversion will be applied to the 5th input
          pointer listed after the format specification.  The
          sequence %$ is invalid.  If the conversion specification
          does not begin with the sequence %n$ the conversion
          specification is matched to its input pointer in
          left-to-right order.  You should only use one type of
          conversion specification (% or %n$) in a format
          specification.

       o  One or more optional characters

       o  A conversion specifier.

 43. 296.1 - Optional character

  *            Assignment-suppressing character

  field width Nonzero decimal integer that specifies the maximum
              field width.

  h, l, or L  Precede a conversion specifier of d, i, or n with an h
              if the corresponding argument is a pointer to short int
              rather than a pointer to int, or with an l (lowercase
              ell) if it is a pointer to long int.

              Similarly, precede a conversion specifier of o, u, or x
              with an h if the corresponding argument is a pointer to
              unsigned short int rather than a pointer to unsigned
              int, or with an l (lowercase ell) if it is a pointer to
              unsigned long int.

              Finally, precede a conversion specifier of e, f, or g
              with an l (lowercase ell) if the corresponding argument
              is a pointer to double rather than a pointer to float,
              or with an L if it is a pointer to long double.

              If an h, l, or L appears with any other conversion
              specifier, the behavior is undefined.

 43. 296.2 - Conversion Specifier

  d           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtol function with the value 10 for the base
              argument.  The corresponding argument must be a pointer
              to int.

  i           Expects an integer whose type is determined by the
              leading input characters.  For example, a leading 0 is
              equated to octal, a leading 0X is equated to
              hexadecimal, and all other forms are equated to
              decimal.  The corresponding argument must be a pointer
              to int.

  o           Expects an octal integer in the input (with or without
              a leading 0).  The corresponding argument must be a
              pointer to int.

  u           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtoul function with the value 10 for the base
              argument.

  x           Expects a hexadecimal integer in the input (with or
              without a leading 0x).  The corresponding argument must
              be a pointer to unsigned int.

  c           Expects a single byte in the input.  The corresponding
              argument must be a pointer to char.  If a field width
              precedes the c conversion specifier, the number of
              characters specified by the field width is read.  In
              this case, the corresponding argument must be a pointer
              to an array of char.

  C           Expects a multibyte character in the input which is
              converted into a wide character code.  The
              corresponding argument must be a pointer to type
              wchar_t.  If a field width precedes the C conversion
              specifier, the number of characters specified by the
              field width is read; in this case, the corresponding
              argument must be a pointer to array of wchar_t.

  s           Expects a sequences of bytes in the input.  The
              corresponding argument must be a pointer to an array of
              characters that is large enough to contain the sequence
              plus a terminating null character, which is added
              automatically.  The input field is terminated by a
              space, tab, or new-line character.

  S           Expects a sequence of multibyte characters in the
              input, which are converted to wide-character codes.
              The corresponding argument must be a pointer to an
              array of wide characters (type wchar_t) that is large
              enough to contain the sequence plus a terminating null
              wide-character code which is added automatically.  The
              input field is terminated by a space, tab, or new-line
              character.

  e,f,g       Expects a floating-point number in the input.  The
              corresponding argument must be a pointer to float.  The
              input format for floating-point numbers is:

              [+|-]nnn[radix][ddd][{E|e}[+|-]nn]

              The n's and d's are decimal digits (as many as
              indicated by the field width minus the signs and the
              letter E).  The radix character is defined in the
              current locale.

  [...]       Expects a nonempty sequence of characters that is not
              delimited by a white-space character.  The brackets
              enclose a set of characters (the scanset) expected in
              the input sequence.  Any character in the input
              sequence that does not match a character in the scanset
              terminates the character sequence.  The corresponding
              argument must be a pointer to an array of characters.

              All characters between the brackets comprise the
              scanset, unless the first character after the left
              bracket is a circumflex (^).  In this case, the scanset
              contains all characters other than those that appear
              between the circumflex and the right bracket; that is,
              any character that does appear between the circumflex
              and the right bracket will terminate the input
              character sequence.

              If the conversion specifier begins with [] or [^], the
              right-bracket character is in the scanset and the next
              right-bracket character is the matching right bracket
              that ends the specification; otherwise, the first right
              bracket character ends the specification.

  p           An argument that is a pointer to void.  The input value
              is interpreted as a hexadecimal value.

  n           No input is consumed.  The corresponding argument is a
              pointer to an integer.  The integer is assigned the
              number of characters read from the input stream so far
              by this call to the formatted input function.
              Execution of a %n directive does not increment the
              assignment count returned when the formatted input
              function completes execution.

  %           Matches a single percent symbol.  No conversion or
              assignment takes place.  The complete conversion
              specification would be %%.

 43.297 - [w]scanw

  Curses Screen Management function and macro that perform a scanf on
  the window.  The scanw macro acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int scanw(char *format_string,...);
       int wscanw(WINDOW *win, char *format_string,...);

  where the ...  represents optional expressions that are pointers to
  objects whose resultant types correspond to conversion
  specifications given in the format specification.  If no conversion
  specifications are given, you may omit these input pointers.
  Otherwise, the function call must have at least as many input
  pointers as there are conversion specifications, and the conversion
  specifications must match the types of the input pointers.
  Conversion specifications are matched to input sources in
  left-to-right order.  Excess input pointers, if any, are ignored.

  The format string for the input of information can include three
  kinds of items:

   o  White-space characters (spaces, tabs, and new-line characters),
      which match optional white-space characters in the input field.

   o  Ordinary characters (not %), which must match the next
      nonwhite-space character in the input.

   o  Conversion specifications, which govern the conversion of the
      characters in an input field and their assignment to an object
      indicated by a corresponding input pointer.

 Each input pointer is an address expression indicating an object
 whose type matches that of a corresponding conversion specification.
 Conversion specifications form part of the format string.  The
 indicated object is the target that receives the input value.  There
 must be as many input pointers as there are conversion
 specifications, and the addressed objects must match the types of
 the conversion specifications.

 A conversion specification consists of the following characters, in
 the order listed:

       o  A percent character (%) or the sequence %n$ (where n is an
          integer).

          The sequence %n$ denotes that the conversion is applied to
          the nth input pointer listed, where n is a decimal integer
          between [1, NL_ARGMAX] (see the <limits.h> header file).
          For example, a conversion specification beginning %5$ means
          that the conversion will be applied to the 5th input
          pointer listed after the format specification.  The
          sequence %$ is invalid.  If the conversion specification
          does not begin with the sequence %n$ the conversion
          specification is matched to its input pointer in
          left-to-right order.  You should only use one type of
          conversion specification (% or %n$) in a format
          specification.

       o  One or more optional characters

       o  A conversion specifier.

 43. 297.1 - Optional character

  *            Assignment-suppressing character

  field width Nonzero decimal integer that specifies the maximum
              field width.

  h, l, or L  Precede a conversion specifier of d, i, or n with an h
              if the corresponding argument is a pointer to short int
              rather than a pointer to int, or with an l (lowercase
              ell) if it is a pointer to long int.

              Similarly, precede a conversion specifier of o, u, or x
              with an h if the corresponding argument is a pointer to
              unsigned short int rather than a pointer to unsigned
              int, or with an l (lowercase ell) if it is a pointer to
              unsigned long int.

              Finally, precede a conversion specifier of e, f, or g
              with an l (lowercase ell) if the corresponding argument
              is a pointer to double rather than a pointer to float,
              or with an L if it is a pointer to long double.

              If an h, l, or L appears with any other conversion
              specifier, the behavior is undefined.

 43. 297.2 - Conversion Specifier

  d           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtol function with the value 10 for the base
              argument.  The corresponding argument must be a pointer
              to int.

  i           Expects an integer whose type is determined by the
              leading input characters.  For example, a leading 0 is
              equated to octal, a leading 0X is equated to
              hexadecimal, and all other forms are equated to
              decimal.  The corresponding argument must be a pointer
              to int.

  o           Expects an octal integer in the input (with or without
              a leading 0).  The corresponding argument must be a
              pointer to int.

  u           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtoul function with the value 10 for the base
              argument.

  x           Expects a hexadecimal integer in the input (with or
              without a leading 0x).  The corresponding argument must
              be a pointer to unsigned int.

  c           Expects a single byte in the input.  The corresponding
              argument must be a pointer to char.  If a field width
              precedes the c conversion specifier, the number of
              characters specified by the field width is read.  In
              this case, the corresponding argument must be a pointer
              to an array of char.

  C           Expects a multibyte character in the input which is
              converted into a wide character code.  The
              corresponding argument must be a pointer to type
              wchar_t.  If a field width precedes the C conversion
              specifier, the number of characters specified by the
              field width is read; in this case, the corresponding
              argument must be a pointer to array of wchar_t.

  s           Expects a sequences of bytes in the input.  The
              corresponding argument must be a pointer to an array of
              characters that is large enough to contain the sequence
              plus a terminating null character, which is added
              automatically.  The input field is terminated by a
              space, tab, or new-line character.

  S           Expects a sequence of multibyte characters in the
              input, which are converted to wide-character codes.
              The corresponding argument must be a pointer to an
              array of wide characters (type wchar_t) that is large
              enough to contain the sequence plus a terminating null
              wide-character code which is added automatically.  The
              input field is terminated by a space, tab, or new-line
              character.

  e,f,g       Expects a floating-point number in the input.  The
              corresponding argument must be a pointer to float.  The
              input format for floating-point numbers is:

              [+|-]nnn[radix][ddd][{E|e}[+|-]nn]

              The n's and d's are decimal digits (as many as
              indicated by the field width minus the signs and the
              letter E).  The radix character is defined in the
              current locale.

  [...]       Expects a nonempty sequence of characters that is not
              delimited by a white-space character.  The brackets
              enclose a set of characters (the scanset) expected in
              the input sequence.  Any character in the input
              sequence that does not match a character in the scanset
              terminates the character sequence.  The corresponding
              argument must be a pointer to an array of characters.

              All characters between the brackets comprise the
              scanset, unless the first character after the left
              bracket is a circumflex (^).  In this case, the scanset
              contains all characters other than those that appear
              between the circumflex and the right bracket; that is,
              any character that does appear between the circumflex
              and the right bracket will terminate the input
              character sequence.

              If the conversion specifier begins with [] or [^], the
              right-bracket character is in the scanset and the next
              right-bracket character is the matching right bracket
              that ends the specification; otherwise, the first right
              bracket character ends the specification.

  p           An argument that is a pointer to void.  The input value
              is interpreted as a hexadecimal value.

  n           No input is consumed.  The corresponding argument is a
              pointer to an integer.  The integer is assigned the
              number of characters read from the input stream so far
              by this call to the formatted input function.
              Execution of a %n directive does not increment the
              assignment count returned when the formatted input
              function completes execution.

  %           Matches a single percent symbol.  No conversion or
              assignment takes place.  The complete conversion
              specification would be %%.

 43.298 - scroll

  Curses Screen Management routine that moves all the lines on the
  window up one line.  The top line scrolls off the window and the
  bottom line becomes blank.

  Syntax:

       #include <curses.h>

       int scroll(WINDOW *win);

 43.299 - scrollok

  Curses Screen Management macro that sets the scroll flag for the
  specified window.

  Syntax:

       #include <curses.h>

       scrollok(WINDOW *win, bool boolf);

 43.300 - seed48

  Initializes a 48-bit random number generator.

  Syntax:

        #include <stdlib.h>

        unsigned short *seed48 (unsigned short seed_16v[3]);

 43.301 - seekdir

  Sets the position in a directory to a specified directory entry.
  Performs operations on directories.

  Syntax:

        #include <dirent.h>

        void seekdir (DIR *dir_pointer, long int location);

 43.302 - [w]setattr

  Curses Screen Management function and macro that activate the video
  display attributes boldface, blinking, reverse video, and
  underlining within the window.  The attributes are represented by
  _BOLD, _BLINK, _REVERSE, and _UNDERLINE.  The setattr macro acts on
  the stdscr window.

  Syntax:

       #include <curses.h>

       int setattr(int attr);
       wsetattr(WINDOW *win, int attr);

 43.303 - setbuf

  Associates a buffer with an input or output file.

  Syntax:

       #include <stdio.h>

       void setbuf(FILE *file_pointer, char *buffer);

 43.304 - setenv

  Inserts or resets the environment variable name in the current
  environment list.

  Syntax:

        #include <stdlib.h>

        int setenv (const char *name,
                    const char *value,
                    int overwrite);

 43.305 - setgid

  Implemented for program portability and serves no function.  It
  returns 0 (to indicate success).

  Syntax:

       #include <unistd.h>

       _DECC_V4_SOURCE defined:

       int setgid(__gid_t group_number);

       _DECC_V4_SOURCE not defined:

       gid_t setgid(gid_t group_number);

 43.306 - setitimer

  Sets the value of interval timers.

  Syntax:

        #include <time.h>
        #define ITIMER_REAL 0
        #define ITIMER_VIRTUAL 1
        #define ITIMER_PROF 2

        int setitimer (int which,
                       struct itimerval *value,
                       struct itimerval *ovalue);

 43.307 - setjmp

  Provides a way to transfer control from a nested series of function
  invocations back to a predefined point without returning normally;
  that is, by not using a series of return statements.  The setjmp
  function saves the context of the environment buffer.

  Syntax:

       #include <setjmp.h>

       int setjmp(jmp_buf env);

 43.308 - setlocale

  Selects the appropriate portion of the program's locale as
  specified by the category and locale arguments.  This function can
  be used to change or query one category or the program's entire
  current locale.

  Syntax:

       #include <locale.h>

       char *setlocale(int category, const char *locale);

 43.309 - setstate

  Restarts, and changes random number generators.

  Syntax:

        char *setstate (char *state);

 43.310 - setuid

  Implemented for program portability and serves no function.  It
  returns 0 (to indicate success).

  Syntax:

       #include <unistd.h>

       _DECC_V4_SOURCE defined:

       int setuid(__uid_t member_number);

       _DECC_V4_SOURCE not defined:

       uid_t setuid(uid_t member_number);

 43.311 - setvbuf

  Associates a buffer with an input or output file.

  Syntax:

       #include <stdio.h>

       int setvbuf (FILE *file_ptr, char *buffer, int type,
                    size_t size);

 43.312 - sigaction

  Specifies the action to take upon delivery of a signal.

  Syntax:

        #include <signal.h>

        int sigaction (int signal,
                       const struct sigaction *action,
                       struct sigaction *o_action);

 43.313 - sigaddset

  Adds the specified individual signal.

  Syntax:

        #include <signal.h>

        int sigaddset (sigset_t *set, int sig_number);

 43.314 - sigblock

  Causes the signals designated in a mask to be added to the current
  set of signals being blocked from delivery.

  Syntax:

       #include <signal.h>

       int sigblock(int mask);

 43.315 - sigdelset

  Deletes a specified individual signal.

  Syntax:

        #include <signal.h>

        int sigdelset (sigset_t *set, int sig_number);

 43.316 - sigemptyset

  Initializes the signal set to exclude all signals.

  Syntax:

        #include <signal.h>

        int sigemptyset (sigset_t *set);

 43.317 - sigfillset

  Initializes the signal set to include all signals.

  Syntax:

        #include <signal.h>

        int sigfillset (sigset_t *set);

 43.318 - sigismember

  Tests whether a specified signal is a member of the signal set.

  Syntax:

        #include <signal.h>

        int sigismember (const sigset_t *set, int sig_number);

 43.319 - siglongjmp

  Nonlocal goto with signal handling.

  Syntax:

        #include <signal.h>

        void siglongjmp (sigjmp_buf env, int value);

 43.320 - sigmask

  Constructs the mask for a given signal number.

  Syntax:

        #include <signal.h>

        int sigmask (signum)

 43.321 - signal

  Allows you to specify the way in which the signal sig is to be
  handled:  use the default handling for the signal, ignore the
  signal, or call the signal handler at the address specified.

  Syntax:

       #include <signal.h>

       void (*signal(int sig, void (*func) (int))) (int);

 43.322 - sigpause

  Assigns mask to the current set of masked signals and then waits
  for a signal.

  Syntax:

       #include <signal.h>

       int sigpause(int mask);

 43.323 - sigpending

  Examines pending signals.

  Syntax:

        #include <signal.h>

        int sigpending (sigset_t *set);

 43.324 - sigprocmask

  Sets the current signal mask.

  Syntax:

        #include <signal.h>

        int sigprocmask (int how, const sigset_t *set, sigset_t
       *o_set);

 43.325 - sigsetjmp

  Sets jump point for a nonlocal goto.

  Syntax:

        #include <signal.h>

        int sigsetjmp (sigjmp_buf env, int savemask);

 43.326 - sigsetmask

  Establishes those signals that are blocked from delivery.

  Syntax:

       #include <signal.h>

       int sigsetmask(int mask);

 43.327 - sigstack

  Defines an alternate stack on which to process signals.  This
  allows the processing of signals in a separate environment from
  that of the current process.  This function is nonreentrant.

  Syntax:

       #include <signal.h>

       int sigstack(struct sigstack *ss, struct sigstack *oss);

 43.328 - sigsuspend

  Atomically changes the set of blocked signals and waits for a
  signal.

  Syntax:

        #include <signal.h>

        int sigsuspend (const sigset_t *signal_mask);

 43.329 - sigvec

  Permanently assigns a handler for a specific signal.

  Syntax:

       #include <signal.h>

       int sigvec(int sigint, struct sigvec *sv, struct sigvec *osv);

 43.330 - sin

  Returns the sine of its radian argument.

  Syntax:

       #include <math.h>

       double sin(double x);

 43.331 - sinh

  Returns the hyperbolic sine of its argument.

  Syntax:

       #include <math.h>

       double sinh(double x);

 43.332 - sleep

  Suspends the execution of the current process for at least the
  number of seconds indicated by its argument.

  Syntax:

       #include <unistd.h>

       _DECC_V4_SOURCE defined:

       unsigned int sleep(unsigned seconds);

       _DECC_V4_SOURCE not defined:

       int sleep(unsigned seconds);

 43.333 - sprintf

  Performs formatted output to a string in memory.

  Syntax:

       #include <stdio.h>

       int sprintf(char *string, const char *format_string,...);

  where the ...  represents optional expressions whose resultant
  types correspond to conversion specifications given in the format
  specification.  If no conversion specifications are given, you may
  omit the output sources.  Otherwise, the function calls must have
  at least as many output sources as there are conversion
  specifications, and the conversion specifications must match the
  types of the output sources.  Conversion specifications are matched
  to output sources in left-to-right order.

  The format string for the output of information can contain two
  kinds of items:

   o  Ordinary characters, which are copied to the output.

   o  Conversion specifications, each of which causes the conversion
      of a corresponding output source to a character string in a
      particular format.  Conversion specifications are matched to
      output sources in left-to-right order.

 A conversion specification consists of a % (or a %n$), followed by
 one or more optional characters, and concluding with a conversion
 specifier.

 43. 333.1 - Optional character

  flags        You can use the following flag characters, alone or in
               any combined order, to modify the conversion
               specification:

               '         Requests that a numeric conversion is
                         formatted with the thousands separator
                         character.  Only the numbers to the left of
                         the radix character are formatted with the
                         separator character.  The character used as
                         a separator and the positioning of the
                         separators are defined in the program's
                         current locale.

               -(hyphen) Left-justifies the converted output source
                         in its field.

               +         Requests that an explicit sign be present on
                         a signed conversion.  If this flag is not
                         specified, the result of a signed conversion
                         begins with a sign only when a negative
                         value is converted.

               space     Prefixes a space to the result of a signed
                         conversion, if the first character of the
                         conversion is not a sign, or if the
                         conversion results in no characters.  If you
                         specify both the space and the + flag, the
                         space flag is ignored.

               #         Requests an alternate form conversion.
                         Depending on the conversion specified,
                         different actions will occur.  For the o
                         (octal) conversion, the precision is
                         increased to force the first digit to be a
                         0.  For the x (or X) conversion, a nonzero
                         result is prefixed with 0x (or 0X).  For e,
                         E, f, g, and G conversions, the result
                         contains a decimal point even at the end of
                         an integer value.  For g and G conversions,
                         trailing zeros are not trimmed.  For other
                         conversions, the effect of # is undefined.

               0         Uses zeros rather than spaces to pad the
                         field width for d, i, o, u, x, X, e, E, f,
                         g, and G conversions.  If both the 0 and the
                         - flags are specified, then the 0 flag is
                         ignored.  For d, i, o, u, x, and X
                         conversions, if a precision is specified,
                         the 0 flag is ignored.  For other
                         conversions, the behavior of the 0 flag is
                         undefined.

  field width  The minimum field width can be designated by a decimal
               integer constant, or by an output source.  To specify
               an output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.  If the converted
               output source is wider than the minimum field, write
               it out.  If the converted output source is narrower
               than the minimum width, pad it to make up the field
               width.  Pad with spaces, by default.  Pad with zeros
               if the 0 flag is specified; this does not mean that
               the width is an octal number.  Padding is on the left
               by default, and on the right if a minus sign is
               specified.

               If an asterisk is used for the field width, the
               corresponding width is given in the output source.

  period (.)   Separates the field width from the precision.

  precision    The precision defines the minimum number of digits to
               appear for d, i, o, u, x, and X conversions; the
               number of digits to appear after the decimal-point
               character for e, E, and f conversions; the maximum
               number of significant digits for g and G conversions;
               or the maximum number of characters to be written from
               a string in an s or S conversion.  If a precision
               appears with any other conversion specifier, the
               behavior is undefined.

               Precision can be designated by a decimal integer
               constant, or by an output source.  To specify an
               output source, use an asterisk (*) or the sequence
               *n$, where n refers to the nth output source listed
               after the format specification.

               If only the period is specified, the precision is
               taken as 0.

  h, l, or L   An h specifies that a following d, i, o, u, x, or X
               conversion specifier applies to a short int or
               unsigned short int argument; an h can also specify
               that a following n conversion specifier applies to a
               pointer to a short int argument.

               An l (lowercase ell) specifies that a following d, i,
               o, u, x, or X conversion specifier applies to a long
               int or unsigned long int argument; an l can also
               specify that a following n conversion specifier
               applies to a pointer to a long int argument.

               An L specifies that a following e, E, f, g, or G
               conversion specifier applies to a long double
               argument.

               If an h, l, or L appears with any other conversion
               specifier, the behavior is undefined.

               On Compaq C for OpenVMS VAX and Alpha Systems, int
               values are equivalent to long values.

 43. 333.2 - Conversion Specifier

  d, i     Converts an int argument to signed decimal format.

  o        Converts an unsigned int argument to unsigned octal
           format.

  u        Converts an unsigned int argument to unsigned decimal
           format (giving a number in the range 0 to 4,294,967,295).

  x, X     Converts an unsigned int argument to unsigned hexadecimal
           format (with or without a leading 0x).  The letters
           'abcdef' are used for the x conversion; the letters
           'ABCDEF' are used for the X conversion.

  f        Converts a float or double argument to the format
           [-]mmm.nnnnnn.  The number of n's is equal to the
           precision specification.  If no precision is specified,
           the default is 6.

           If the precision is 0 and the # flag is specified, the
           decimal point appears but no n's appear.  If the precision
           is 0 and the # flag is not specified, the decimal point
           also does not appear.  If a decimal point appears, at
           least one digit appears before it.  The value is rounded
           to the appropriate number of digits.

  e, E     Converts a float or double argument to the format
           [-]m.nnnnnnE[+|-]xx.  The number of n's is specified by
           the precision.  If no precision is specified, the default
           is 6.  If the precision is explicitly 0 and the # flag is
           specified, the decimal point appears but no n's appear.
           If the precision is explicitly 0 and the # flag is not
           specified, the decimal point also does not appear.  An 'e'
           is printed for e conversion; an 'E' is printed for E
           conversion.  The exponent always contains at least two
           digits.  If the value is 0, the exponent is 0.

  g, G     Converts a float or double argument to format f or e (or E
           if the G conversion specifier is used), with the precision
           specifying the number of significant digits.  If the
           precision is 0, it is taken as 1.

  c        Converts an int argument to an unsigned char, and writes
           the resulting character (null characters are ignored).

  C        Converts a wchar_t argument to an array of bytes
           representing the character, and writes the resulting
           character.  If the field width is specified and the
           resulting character occupies fewer bytes than the field
           width, it will be padded to the given width with space
           characters.  If the precision is specified, the behavior
           is undefined.

  s        Requires an argument that is a pointer to an array of
           characters of type char.  The argument is used to write
           characters until a null character is encountered or until
           the number of characters indicated by the precision
           specification is exhausted.  If the precision
           specification is 0 or omitted, all characters up to a null
           are output.

  S       Converts an array of wide-character codes to multibyte
           characters, and writes the multibyte characters.  Requires
           an argument that is a pointer to an array of wide
           characters of type wchar_t.  Characters are written until
           a null wide character is encountered or until the number
           of bytes indicated by the precision specification is
           exhausted.  If the precision specification is omitted or
           is greater than the size of the array of converted bytes,
           the array of wide characters must be terminated by a null
           wide character.

  p        Requires an argument that is a pointer to void.  The value
           of the pointer is output as a hexadecimal character.

  n        Requires an argument that is a pointer to an integer.  The
           integer is assigned the number of characters written to
           the output stream so far by this call to the formatted
           output function.  No argument is converted.

  %        Writes out the percent symbol.  No conversion is
           performed.  The complete conversion specification would be
           %%.

 43.334 - sqrt

  Returns the square root of its argument.

  Syntax:

       #include <math.h>

       double sqrt(double x);

 43.335 - srand

  Initializes the pseudorandom number generator.

  Syntax:

       #include <math.h>

       void srand(unsigned int seed);

 43.336 - srand48

  Initializes a 48-bit random number generator.

  Syntax:

        #include <stdlib.h>

        void srand48 (long int seed_val);

 43.337 - srandom

  Uses its argument as a seed for a new sequence of pseudorandom
  numbers to be returned by subsequent calls to the random function.

  Syntax:

        int srandom (unsigned seed);

 43.338 - sscanf

  Performs formatted input from a character string in memory.

  Syntax:

       #include <stdio.h>

       int sscanf(const char *string, const char *format_string,...);

  where the ...  represents optional expressions that are pointers to
  objects whose resultant types correspond to conversion
  specifications given in the format_string.  If no conversion
  specifications are given, you can omit the input pointers.
  Otherwise, the function calls must have at least as many input
  pointers as there are conversion specifications, and the conversion
  specifications must match the types of the input pointers.
  Conversion specifications are matched to input sources in
  left-to-right order.

  The format string for the input of information can include three
  kinds of items:

   o  White-space characters (spaces, tabs, and new-line characters),
      which match optional white-space characters in the input field.

   o  Ordinary characters (not %), which must match the next
      nonwhite-space character in the input.

   o  Conversion specifications, which govern the conversion of the
      characters in an input field and their assignment to an object
      indicated by a corresponding input pointer.

 A conversion specification consists of the following characters, in
 the order listed:

       o  A percent character (%) or the sequence %n$ (where n is an
          integer).

          The sequence %n$ denotes that the conversion is applied to
          the nth input pointer listed, where n is a decimal integer
          between [1, NL_ARGMAX] (see the <limits.h> header file).
          For example, a conversion specification beginning %5$ means
          that the conversion will be applied to the 5th input
          pointer listed after the format specification.  The
          sequence %$ is invalid.  If the conversion specification
          does not begin with the sequence %n$ the conversion
          specification is matched to its input pointer in
          left-to-right order.  You should only use one type of
          conversion specification (% or %n$) in a format
          specification.

       o  One or more optional characters

       o  A conversion specifier.

 43. 338.1 - Optional character

  *            Assignment-suppressing character.

  field width Nonzero decimal integer that specifies the maximum
              field width.

  h, l, or L  Precede a conversion specifier of d, i, or n with an h
              if the corresponding argument is a pointer to short int
              rather than a pointer to int, or with an l (lowercase
              ell) if it is a pointer to long int.

              Similarly, precede a conversion specifier of o, u, or x
              with an h if the corresponding argument is a pointer to
              unsigned short int rather than a pointer to unsigned
              int, or with an l (lowercase ell) if it is a pointer to
              unsigned long int.

              Finally, precede a conversion specifier of e, f, or g
              with an l (lowercase ell) if the corresponding argument
              is a pointer to double rather than a pointer to float,
              or with an L if it is a pointer to long double.

              If an h, l, or L appears with any other conversion
              specifier, the behavior is undefined.

 43. 338.2 - Conversion Specifier

  d           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtol function with the value 10 for the base
              argument.  The corresponding argument must be a pointer
              to int.

  i           Expects an integer whose type is determined by the
              leading input characters.  For example, a leading 0 is
              equated to octal, a leading 0X is equated to
              hexadecimal, and all other forms are equated to
              decimal.  The corresponding argument must be a pointer
              to int.

  o           Expects an octal integer in the input (with or without
              a leading 0).  The corresponding argument must be a
              pointer to int.

  u           Expects a decimal integer in the input whose format is
              the same as expected for the subject sequence of the
              strtoul function with the value 10 for the base
              argument.

  x           Expects a hexadecimal integer in the input (with or
              without a leading 0x).  The corresponding argument must
              be a pointer to unsigned int.

  c           Expects a single byte in the input.  The corresponding
              argument must be a pointer to char.  If a field width
              precedes the c conversion specifier, the number of
              characters specified by the field width is read.  In
              this case, the corresponding argument must be a pointer
              to an array of char.

  C           Expects a multibyte character in the input which is
              converted into a wide character code.  The
              corresponding argument must be a pointer to type
              wchar_t.  If a field width precedes the C conversion
              specifier, the number of characters specified by the
              field width is read; in this case, the corresponding
              argument must be a pointer to array of wchar_t.

  s           Expects a sequences of bytes in the input.  The
              corresponding argument must be a pointer to an array of
              characters that is large enough to contain the sequence
              plus a terminating null character, which is added
              automatically.  The input field is terminated by a
              space, tab, or new-line character.

  S           Expects a sequence of multibyte characters in the
              input, which are converted to wide-character codes.
              The corresponding argument must be a pointer to an
              array of wide characters (type wchar_t) that is large
              enough to contain the sequence plus a terminating null
              wide-character code which is added automatically.  The
              input field is terminated by a space, tab, or new-line
              character.

  e,f,g       Expects a floating-point number in the input.  The
              corresponding argument must be a pointer to float.  The
              input format for floating-point numbers is:

              [+|-]nnn[radix][ddd][{E|e}[+|-]nn]

              The n's and d's are decimal digits (as many as
              indicated by the field width minus the signs and the
              letter E).  The radix character is defined in the
              current locale.

  [...]       Expects a nonempty sequence of characters that is not
              delimited by a white-space character.  The brackets
              enclose a set of characters (the scanset) expected in
              the input sequence.  Any character in the input
              sequence that does not match a character in the scanset
              terminates the character sequence.  The corresponding
              argument must be a pointer to an array of characters.

              All characters between the brackets comprise the
              scanset, unless the first character after the left
              bracket is a circumflex (^).  In this case, the scanset
              contains all characters other than those that appear
              between the circumflex and the right bracket; that is,
              any character that does appear between the circumflex
              and the right bracket will terminate the input
              character sequence.

              If the conversion specifier begins with [] or [^], the
              right-bracket character is in the scanset and the next
              right-bracket character is the matching right bracket
              that ends the specification; otherwise, the first right
              bracket character ends the specification.

  p           An argument that is a pointer to void.  The input value
              is interpreted as a hexadecimal value.

  n           No input is consumed.  The corresponding argument is a
              pointer to an integer.  The integer is assigned the
              number of characters read from the input stream so far
              by this call to the formatted input function.
              Execution of a %n directive does not increment the
              assignment count returned when the formatted input
              function completes execution.

  %           Matches a single percent symbol.  No conversion or
              assignment takes place.  The complete conversion
              specification would be %%.

 43.339 - ssignal

  Allows you to specify the action to take when a particular signal
  is raised.

  Syntax:

       #include <signal.h>

       void (*ssignal (int sig, void (*func) (int,...))) (int,...);

 43.340 - [w]standend

  Curses Screen Management function and macro that deactivate the
  boldface attribute for the specified window.  The standend macro
  acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int standend(void);
       int wstandend(WINDOW *win);

 43.341 - [w]standout

  Curses Screen Management function and macro that activate the
  boldface attribute of the specified window.  The standout macro
  acts on the stdscr window.

  Syntax:

       #include <curses.h>

       int standout(void);
       int wstandout(WINDOW *win);

 43.342 - stat

  Accesses information about the file descriptor or the file
  specification.

  Syntax:

       #include <stat.h>

       int stat(const char *file_spec, struct stat *buffer);
       (POSIX-1)

       int stat(const char *file_spec, struct stat *buffer,...);
       (Compaq C Extension)

 43.343 - strcasecmp

  Compares two 7 bit ASCII strings with the case insensitive.

  Syntax:

        #include <strings.h>

        int strcasecmp (const char *s1, const char *s2);

 43.344 - strcat

  Concatenates str_2, including the terminating null character, to
  the end of str_1.

  Syntax:

       #include <string.h>

       char *strcat(char *str_1, const char *str_2);

 43.345 - strchr

  Returns the address of the first occurrence of a given character in
  a null-terminated string.  The terminating null character is
  considered to be part of the string.

  Syntax:

       #include <string.h>

       char *strchr(const char *string, int character);

 43.346 - strcoll

  Compares two strings and returns an integer that indicates if the
  strings differ and how they differ.  The function uses the
  collating information in the LC_COLLATE category of the current
  locale to determine how the comparison is performed.

  Syntax:

       #include <string.h>

       int strcoll(const char *str_1, const char *str_2);

 43.347 - strcmp

  Compares two ASCII character strings and returns a negative, 0, or
  positive integer, indicating that the ASCII values of the
  individual characters in the first string are less then, equal to,
  or greater than the values in the second string.

  Syntax:

       #include <string.h>

       int strcmp(const char *str_1, const char *str_2);

 43.348 - strcpy

  Copies all of source_str, including the terminating null character,
  into destination_str.

  Syntax:

       #include <string.h>

       char *strcpy(char *destination_str, const char *source_str);

 43.349 - strcspn

  Returns the length of the prefix of a string that consists entirely
  of characters that are not in a specified set of characters.

  Syntax:

       #include <string.h>

       size_t strcspn(const char *str, const char *charset);

 43.350 - strdup

  Finds and points to a duplicate string.

  Syntax:

        #include <string.h>

        char *strdup (const char *s1);

 43.351 - strerror

  Maps the error number in error_code to a locale-dependent error
  message string.

  Syntax:

       #include <string.h>

       char *strerror (int error_code);  (ANSI C)

       char *strerror (int error_code [,int vms_error_code]); (Compaq
       C Extension)
       {Relaxed ANSI and VAXC modes only}

 This function uses the error number in error_code to retrieve the
 appropriate locale-dependent error message.  The contents of the
 error message strings are determined by the LC_MESSAGES category of
 the program's current locale.

 For Compaq C (not Compaq C++) in relaxed ANSI mode or VAXC mode,
 strerror has a second argument (vms_error_code), which is used in
 the following way:

       o  If error_code is EVMSERR and there is a second argument,
          then that second argument is used as the VAXC$ERRNO value.

       o  If error_code is EVMSERR and there is no second argument,
          look at VAXC$ERRNO to get the OpenVMS error condition.

 Use of the second argument is not included in the ANSI C definition
 of strerror and is, therefore, not portable.

 43.352 - strfmon

  Converts a number of monetary values into a string.  The conversion
  is controlled by a format string.

  Syntax:

       #include <monetary.h>

       size_t strfmon (char *s, size_t maxsize, const char *format,
       ...);

 43.353 - strftime

  Uses date and time information stored in a tm structure to create
  an output string.  The format of the output string is controlled by
  a format string.

  Syntax:

       #include <time.h>

       size_t strftime(char *str, size_t maxsize, const char *format,
                       const struct tm *timeptr);

 43.354 - strlen

  Returns the length of a string of ASCII characters.  The returned
  length does not include the terminating null character (\0).

  Syntax:

       #include <string.h>

       size_t strlen(const char *str);

 43.355 - strncasecmp

  Compares two 7 bit ASCII strings for case and size, with case
  insensitivity.

  Syntax:

        #include <strings.h>

        int strncasecmp (const char *s1, const char *s2, size_t n);

 43.356 - strncat

  Appends not more than maxchar characters from str_2 to the end of
  str_1.

  Syntax:

       #include <string.h>

       char *strncat(char *str_1, const char *str_2, size_t maxchar);

 43.357 - strncmp

  Compares not more than maxchar characters of two ASCII character
  strings and returns a negative, 0, or positive integer, indicating
  that the ASCII values of the individual characters in the first
  string are less than, equal to, or greater than the values in the
  second string.

  Syntax:

       #include <string.h>

       int strncmp(const char *str_1, const char *str_2,
                   size_t maxchar);

 43.358 - strncpy

  Copies all or part of source_str into destination_str.

  Syntax:

       #include <string.h>

       char *strncpy(char *destination_str, const char *source_str,
       size_t maxchar);

 43.359 - strnlen

  Returns the number of bytes in the string pointed to by s.  The
  string length value does not include the terminating null
  character.  The strnlen function counts bytes until the first null
  byte or until n bytes have been examined.

  Syntax:

       #include <string.h>

       size_t strnlen(const char *s, size_t n);

 43.360 - strpbrk

  Searches a string for the occurrence of one of a specified set of
  characters.

  Syntax:

       #include <string.h>

       char *strpbrk(const char *str, const char *charset);

 43.361 - strptime

  Converts a character string into date and time values stored in a
  tm structure.  Conversion is controlled by a format string.

  Syntax:

       #include <time.h>

       char *strptime (const char *buf, const char *format, struct tm
       *timeptr);

 43.362 - strrchr

  Returns the address of the last occurrence of a given character in
  a null-terminated string.  The terminating null character is
  considered to be part of the string.

  Syntax:

       #include <string.h>

       char *strrchr(const char *string, int character);

 43.363 - strsep

  Separates strings.

  Syntax:

        #include <string.h>

        char *strsep (char **stringp, char *delim);

 43.364 - strspn

  Searches a string for the occurrence of a character that is not in
  a specified set of characters.

  Syntax:

       #include <string.h>

       size_t strspn(const char *str, const char *charset);

 43.365 - strstr

  Locates the first occurrence in the string pointed to by s1 of the
  sequence of characters in the string pointed to by s2.

  Syntax:

       #include <string.h>

       char *strstr(const char *s1, const char *s2);

 43.366 - strtod

  Converts a given string to a double-precision number.

  Syntax:

       #include <stdlib.h>

       double strtod (const char *nptr, char **endptr);

 43.367 - strtok

  Locates text tokens in a given string.

  Syntax:

       #include <string.h>

       char *strtok (char *s1, const char *s2);

 43.368 - strtol

  Converts strings of ASCII characters to the appropriate numeric
  values.

  Syntax:

       #include <stdlib.h>

       long int strtol (const char *nptr, char **endptr, int base);

 43.369 - strtoul

  Converts the initial portion of the string pointed to by nptr to an
  unsigned long integer.

  Syntax:

       #include <stdlib.h>

       unsigned long int strtoul (const char *nptr, char **endptr,
                                  int base);

 43.370 - strxfrm

  Changes a string such that the changed string can be passed to the
  strcmp function and produce the same result as passing the
  unchanged string to the strcoll function.

  Syntax:

       #include <string.h>

       size_t strxfrm(char *s1, const char *s2, size_t maxchar);

 43.371 - subwin

  Curses Screen Management routine that creates a new subwindow with
  numlines lines and numcols columns starting at the coordinates
  (begin_y, begin_x) on the terminal screen.

  Syntax:

       #include <curses.h>

       WINDOW *subwin(WINDOW *win, int numlines, int numcols,
                      int begin_y, int begin_x);

 43.372 - swab

  Swaps bytes.

  Syntax:

        #include <unistd.h>

        void swab (const void *src, void *dest, ssize_t nbytes);

 43.373 - swprintf

  Formats output to an array of wide characters.

  Syntax:

        #include <wchar.h>

        int swprintf (wchar_t *s, size_t n,
                      const wchar_t *format, ...);

 43.374 - swscanf

  Formats input to a wide string input.

  Syntax:

        #include <wchar.h>

        int swscanf (const wchar_t *s, const wchar_t *format, ...);

 43.375 - sysconf

  Gets configurable system variables.

  Syntax:

        #include <unistd.h>

        long int sysconf (int name);

 43.376 - system

  Passes a given string to the host environment to be executed by a
  command processor.  This function is nonreentrant.

  Syntax:

       #include <stdlib.h>

       int system (const char *string);

 43.377 - tan

  Returns a double value that is the tangent of its radian argument.

  Syntax:

       #include <math.h>

       double tan(double x);

 43.378 - tanh

  Returns a double value that is the hyperbolic tangent of its double
  argument.

  Syntax:

       #include <math.h>

       double tanh(double x);

 43.379 - telldir

  Returns the current location associated with a specified directory
  stream.  Performs operations on directories.

  Syntax:

        #include <dirent.h>

        long int telldir (DIR *dir_pointer);

 43.380 - tempnam

  Constructs the name for a temporary file.

  Syntax:

        #include <stdio.h>

        char *tempnam (const char *directory, const char *prefix);

 43.381 - time

  Returns the time elapsed on the system since 00:00:00 January 1,
  1970, in seconds.

  Syntax:

       #include <time.h>

       time_t time(time_t *time_location);

 43.382 - times

  Passes back the accumulated times of the current process and its
  terminated child processes.  This function is nonreentrant.

  Syntax:

       #include <times.h>

       clock_t times (struct tms *buffer); (POSIX-1)

       void times (tbuffer_t *buffer); (Compatibility)

 43.383 - tmpfile

  Creates a temporary file that is opened for update.

  Syntax:

       #include <stdio.h>

       FILE *tmpfile(void);

 43.384 - tmpnam

  Creates a character string that you can use in place of the
  file-name argument in other function calls.

  Syntax:

       #include <stdio.h>

       char *tmpnam(char *name);

 43.385 - toascii

  Converts its argument, an 8-bit ASCII character, to a 7-bit ASCII
  character.

  Syntax:

       #include <ctype.h>

       int toascii(char character);

 43.386 - tolower, _tolower

  Convert their argument, a character, to lowercase.  If the argument
  is not an uppercase character, it is returned unchanged.

  Syntax:

       #include <ctype.h>

       int tolower(int character);
       int _tolower(int character);

 43.387 - touchwin

  Curses Screen Management routine that places the most recently
  edited version of the specified window on the terminal screen.

  Syntax:

       #include <curses.h>

       int touchwin(WINDOW *win);

 43.388 - toupper, _toupper

  Convert their argument, a character, to uppercase.  If the argument
  is not a lowercase character, it is returned unchanged.

  Syntax:

       #include <ctype.h>

       int toupper(int character);
       int _toupper(int character);

 43.389 - towctrans

  Maps one wide character to another according to a specified mapping
  descriptor.

  Syntax:

        #include <wctype.h>

        wint_t towctrans (wint_t wc, wctrans_t desc);

 43.390 - towlower

  Converts the argument, a wide character, to lowercase.  If the
  argument is not an uppercase character, it is returned unchanged.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int towlower(wint_t wc);

 43.391 - towupper

  Converts the argument, a wide character, to uppercase.  If the
  argument is not a lowercase character, it is returned unchanged.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       int towupper(wint_t wc);

 43.392 - truncate

  Changes file length to a specified length in bytes.

  Syntax:

        #include <unistd.h>

        int truncate (const char *path, off_t length);

 43.393 - ttyname

  Returns a pointer to the null-terminated name of the terminal
  device associated with file descriptor 0, the default input device
  (stdin).

  Syntax:

       #include <unixio.h>

       char *ttyname(void);

 43.394 - tzset

  Sets and accesses timezone conversion.

  Syntax:

        #include <time.h>

        void tzset (void):

        extern int daylight;

        extern long timezone;

        extern char *tzname[];

 43.395 - ualarm

  Sets or changes the timeout of interval timers.

  Syntax:

        #include <unistd.h>

        useconds_t ualarm (useconds_t mseconds,
                             useconds_t interval);

 43.396 - umask

  Creates a file protection mask that is used when a new file is
  created and returns the previous mask value.

  Syntax:

       #include <stat.h>

       mode_t umask(mode_t mode_complement);

 43.397 - uname

  Gets system identification information.

  Syntax:

        #include <utsname.h>

        int uname (struct utsname *name);

 43.398 - ungetc

  Pushes a character back into the input stream and leaves the stream
  positioned before the character.

  Syntax:

       #include <stdio.h>

       int ungetc(int character, FILE *file_pointer);

 43.399 - ungetwc

  Pushes a wide character back into the input stream and leaves the
  stream positioned before the character.

  Syntax:

       #include <wchar.h>

       wint_t ungetwc(wint_t wc, FILE *file_pointer);

 43.400 - unsetenv

  Deletes all instances of the variable name pointed to the name from
  the environment list.

  Syntax:

        #include <stdlib.h>

        void unsetenv (const char *name);

 43.401 - usleep

  Suspends execution for an interval.

  Syntax:

        #include <unistd.h>

        int usleep (unsigned int mseconds);

 43.402 - utime

  Sets file access and modification times.

  Syntax:

        #include <types.h>

       int utime (const char *path, const struct utimbuf *times);

 43.403 - utimes

  Sets file access and modification times.

  Syntax:

        #include <time.h>

       int utimes (const char *path, const struct timeval *times[2]);

 43.404 - va_arg

  Returns the next item in the argument list.

  Syntax:

       #include <stdarg.h> (ANSI C)

       #include <varargs.h> (Compaq C Extension)

       type va_arg(va_list ap, type);

 43.405 - va count (Compaq C Extension)

  Returns the number of longwords in the argument list.

  Syntax:

       #include <stdarg.h>

       OR

       #include <varargs.h> (Compaq C Extension)

       void va_count(int *count);

 43.406 - va_end

  Finishes the varargs or stdarg session.

  Syntax:

       #include <stdarg.h> (ANSI C)

       #include <varargs.h> (Compaq C Extension)

       void va_end(va_list ap);

 43.407 - va_start

  Initializes a variable to the beginning of the argument list.

  Syntax:

  Nonportable format:

       #include <varargs.h> (Compaq C Extension)

       void va_start(va_list ap);

  Portable format:

       #include <stdarg.h> (ANSI C)

       void va_start(va_list ap, parmN);

 43.408 - va_start_1

  Initializes a variable to the beginning of the argument list.

  Syntax:

       #include <varargs.h> (Compaq C Extension)

       void va_start_1(va_list ap, int offset);

 43.409 - VAXC$CRTL_INIT

  Allows you to call the Compaq C RTL from other languages.  It
  initializes the run-time environment and establishes both an exit
  and condition handler.  VAXC$CRTL_INIT is a synonym for
  decc$crtl_init.  Either name invokes the same routine.

  Syntax:

       #include <signal.h>

       void VAXC$CRTL_INIT();

 43.410 - vaxc$establish

  Used to establish an OpenVMS exception handler for a particular
  routine.  This function establishes a special Compaq C RTL
  exception handler in the routine that called it.  This special
  handler catches all RTL-related exceptions that occur in later
  routines, and passes on all other exceptions to your handler.

  Syntax:

       #include <signal.h>

       void vaxc$establish(unsigned int (*exception_handler)(void
                           *sigarr, void *mecharr));

 43.411 - vfork

  Creates an independent child process.  This function is
  nonreentrant.

  Syntax:

       #include <unistd.h>

       _DECC_V4_SOURCE defined:

       int vfork(void);

       _DECC_V4_SOURCE not defined:

       pid_t vfork(void);

 43.412 - vfprintf

  Prints formatted output based on an argument list.  This function
  is the same as the fprintf function except that instead of being
  called with a variable number of arguments, it is called with an
  argument list that has been initialized by the macro va_start (and
  possibly subsequent va_arg calls).

  Syntax:

       #include <stdio.h>

       int vfprintf (FILE *file_ptr, const char *format,
                     va_list arg);

 43.413 - vfwprintf

  Writes output to a specified file in wide character format.

  Syntax:

        #include <wchar.h>

        int vfwprintf (FILE *stream,
                       const wchar_t *format,
                       va_list arg);

 43.414 - vprintf

  Prints formatted output based on an argument list.  This function
  is the same as the printf function except that instead of being
  called with a variable number of arguments, it is called with an
  argument list that has been initialized by the macro va_start (and
  possibly subsequent va_arg calls).

  Syntax:

       #include <stdio.h>

       int vprintf (const char *format, va_list arg);

 43.415 - vswprintf

  Writes output to a specified file in wide character format.

  Syntax:

        #include <wchar.h>

        int vswprintf (wchar_t *s,
                       size_t n,
                       const wchar_t *format,
                       va_list arg);

 43.416 - vwprintf

  Writes output to a specified file in wide character format.

  Syntax:

        #include <wchar.h>

        int vwprintf (const wchar_t *format, va_list arg);

 43.417 - vsprintf

  Prints formatted output based on an argument list.  This function
  is the same as the sprintf function except that instead of being
  called with a variable number of arguments, it is called with an
  argument list that has been initialized by the macro va_start (and
  possibly subsequent va_arg calls).

  Syntax:

       #include <stdio.h>

       int vsprintf (char *str, const char *format, va_list arg);

 43.418 - wait

  Checks the status of the child process before exiting.  A child
  process is terminated when the parent process terminates.  This
  function is nonreentrant.

  Syntax:

       #include <wait.h>

       pid_t wait(int *status);

 43.419 - wait3

  Waits for a child process to stop or terminate.

  Syntax:

        #include <wait.h>

        pid_t wait3 (int *status_location,
                     int options,
                     struct rusage *resource_usage);

 43.420 - wait4

  Waits for a child process to stop or terminate.

  Syntax:

        #include <wait.h>

        pid_t wait4 (pid_t process_id,
                     union wait *status_location,
                     int options,
                     struct rusage *resource_usage);

 43.421 - waitpid

  Waits for a child process to stop or terminate.

  Syntax:

        #include <wait.h>

        pid_t waitpid (pid_t process_id,
                       int *status_location,
                       int options);

 43.422 - wcrtomb

  Determines the number bytes needed to represent the multibyte
  character that corresponds to the specified wide character.

  Syntax:

        #include <wchar.h>

        size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);

 43.423 - wcscat

  Appends the wide character string wstr_2, including the terminating
  null character, to the end of wstr_1.

  Syntax:

       #include <wchar.h>

       wchar_t *wcscat (wchar_t *wstr_1, const wchar_t *wstr_2)

 43.424 - wcschr

  Returns the address of the first occurrence of a given wide
  character in a null-terminated, wide-character string.  The
  terminating null character is considered to be part of the string.

  Syntax:

       #include <wchar.h>

       wchar_t *wcschr (const wchar_t *wstr, wchar_t wc);

 43.425 - wcscmp

  Compares two wide-character strings.  The function returns an
  integer that indicates if the strings are different and how they
  differ.  Unlike the wcscoll function, wcscmp compares the string
  based on the binary value of each wide character.

  Syntax:

       #include <wchar.h>

       int wcscmp (const wchar_t *wstr_1, const wchar_t wstr_2);

 43.426 - wcscoll

  Compares two wide-character strings.  The function returns an
  integer that indicates if the strings differ and how they differ.
  The function uses the collating information in the LC_COLLATE
  category of the current locale to determine how the comparison is
  performed.

  Syntax:

       #include <wchar.h>

       int wcscoll (const wchar_t *ws1, const wchar_t *ws2);

 43.427 - wcscpy

  Copies the wide-character string source_str, including the
  terminating null character, into destination_str.

  Syntax:

       #include <wchar.h>

       wchar_t *wcscpy (wchar_t *destination_str, const wchar_t
       *source_str);

 43.428 - wcscspn

  Compares the characters in a wide-character string against a set of
  wide characters.  The function returns the length of the initial
  substring comprised entirely of characters that are not in the set
  of wide characters.

  Syntax:

       #include <wchar.h>

       size_t wcscspn (const wchar_t *wstr1, const wchar_t *wstr2);

 43.429 - wcsftime

  Uses date and time information stored in a tm structure to create a
  wide character output string.  The format of the output string is
  controlled by a format string.

  Syntax:

     #include <wchar.h>

     size_t wcsftime (wchar_t *wcs, size_t maxsize,
     const char *format, const struct tm *timeptr); (XPG4)

     size_t wcsftime (wchar_t *wcs, size_t maxsize,
     const wchar_t *format, const struct tm *timeptr); (ISO C)

 43.430 - wcslen

  Returns the number of wide characters in a wide-character string.
  The returned length does not include the terminating null
  character.

  Syntax:

       #include <wchar.h>

       size_t wcslen (const wchar_t *wstr);

 43.431 - wcsncat

  Appends wide characters from the wide-character string wstr_2 to
  the end of wstr_1.  Up to a maximum of maxchar characters are
  appended to wstr_1.

  Syntax:

       #include <wchar.h>

       wchar_t *wcsncat (wchar_t *wstr_1, const wchar_t *wstr_2,
       size_t maxchar);

 43.432 - wcsncmp

  Compares no more than maxchar characters of two wide-character
  strings.  The function returns an integer that indicates if the
  strings are different and how they differ.

  Syntax:

       #include <wchar.h>

       int wcsncmp (const wchar_t *wstr_1, const wchar_t *wstr_2,
       size_t maxchar);

 43.433 - wcsncpy

  Copies up to a maximum of maxchar wide characters from source_str
  into destination_str.

  Syntax:

       #include <wchar.h>

       wchar_t *wcsncpy (wchar_t *destination_str, const wchar_t
       *source_str, size_t maxchar);

 43.434 - wcspbrk

  Searches a wide-character string for the first occurrence of one of
  a specified set of wide characters.

  Syntax:

       #include <wchar.h>

       wchar_t *wcspbrk const wchar_t *wstr, const wchar_t *charset);

 43.435 - wcsrchr

  Returns the address of the last occurrence of a given wide
  character in a null-terminated, wide-character string.  The
  terminating null character is considered to be part of the string.

  Syntax:

       #include <wchar.h>

       wchar_t *wcsrchr (const wchar_t *wstr, wchar_t wc);

 43.436 - wcsrtombs

  Converts a sequence of wide characters to a corresponding sequence
  of multibyte characters, including a terminating null character.

  Syntax:

        #include <wchar.h>

        size_t wcsrtombs (char *dst,
                          const wchar_t **src,
                          size_t len,
                          mbstate_t *ps);

 43.437 - wcsspn

  Compares the characters in a wide-character string against a set of
  wide characters.  The function returns the length of the initial
  substring comprised entirely of characters in the set of wide
  characters.

  Syntax:

       #include <wchar.h>

       size_t wcsspn (const wchar_t *wstr1, const wchar_t *wstr2);

 43.438 - wcsstr

  Locates the first occurence of a wide character sequence specified
  in one string to wide character sequence in another string.

  Syntax:

        #include <wchar.h>

        wchar_t *wcsstr (const wchar_t *s1, const wchar_t *s2);

 43.439 - wcstod

  Converts a given wide-character string to a double-precision
  number.

  Syntax:

       #include <wchar.h>

       double wcstod (const wchar_t *nptr, wchar_t **endptr);

 43.440 - wcstok

  Locates text tokens in a given wide-character string.  The text
  tokens are delimited by one or more wide characters from a
  specified separator string.  This function keeps track of its
  position in the wide-character string between calls and, as
  successive calls are made, the function works through the
  wide-character string, identifying the text token following the one
  identified by the previous call.

  The ptr argument is used only with the ISO C format.  It is a
  caller-provided w_char pointer into which wcstok stores information
  necessary for it to continue scanning the same wide string.  When
  ws1 is NULL, ptr is used.  When ws1 is not NULL, ptr is ignored.

  Syntax:

       #include <wchar.h>

       wchar_t *wcstok wchar_t *ws1, const wchar_t *ws2);  (XPG4
       Standard)

       wchar_t *wcstok wchar_t *ws1, const wchar_t *ws2, wchar_t
       **ptr); (ISO C Standard)

 43.441 - wcstol

  Converts a wide character string, in a given base, to a long
  integer value.

  Syntax:

       #include <wchar.h>

       long int wcstol (const wchar_t *nptr, wchar_t **endptr, int
       base);

 43.442 - wcstombs

  Converts a sequence of wide-character codes to a sequence of
  multibyte characters.

  Syntax:

       #include <stdlib.h>

       size_t wcstombs(char *s, const wchar_t *pwcs, size_t n);

 43.443 - wcstoul

  Converts the initial portion of the wide-character string pointed
  to by nptr to an unsigned long integer.

  Syntax:

       #include <wchar.h>

       unsigned long int wcstoul(const wchar_t *nptr, wchar_t
       **endptr, int base);

 43.444 - wcswcs

  Locates the first occurrence in the string pointed to by wstr1 of
  the sequence of wide characters in the string pointed to by wstr2.

  Syntax:

       #include <wchar.h>

       wchar_t *wcswcs (const wchar_t *wstr1, const wchar_t *wstr2);

 43.445 - wcswidth

  Determines the number of printing positions on a display device
  that are required for a wide-character string.

  Syntax:

       #include <wchar.h>

       int wcswidth (const wchar_t *pwcs, size_t n);

 43.446 - wcsxfrm

  Changes a wide-character string such that the changed string can be
  passed to the wcscmp function and produce the same result as
  passing the unchanged string to the wcscoll function.

  Syntax:

       #include <wchar.h>

       size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t
       maxchar);

 43.447 - wctob

  Determines if a character is a valid single byte multibyte
  character in the initial shift state.

  Syntax:

        #include <stdio.h>
        #include <wchar.h>

        int wctob (wint_t c);

 43.448 - wctomb

  Converts a wide character to its multibyte character
  representation.

  Syntax:

       #include <stdlib.h>

       int wctomb(char *s, wchar_t wchar);

 43.449 - wctrans

  Verifies that a specified string value has a valid wide character
  equivalent.

  Syntax:

        #include <wctype.h>

        wctrans_t wctrans (const char *property);

 43.450 - wctype

  Used to define a property.  The value returned by this function is
  used in calls to the iswctype function.

  Syntax:

       #include <wctype.h>  (ISO C Standard)
       #include <wchar.h>   (XPG4 Standard)

       wctype_t wctype (const char *property);

 43.451 - wcwidth

  Determines the number of printing positions on a display device
  required for a wide character.

  Syntax:

       #include <wchar.h>

       int wcwidth (wchar_t wc);

 43.452 - wmemchr

  Finds the first occurence of wide characters in a given object.

  Syntax:

        #include <wchar.h>

        wchar_t wmemchr (const wchar_t *s, wchar_t c, size_t n);

 43.453 - wmemcmp

  Compares the first occurance of wide characters in two objects.

  Syntax:

        #include <wchar.h>

        int wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n);

 43.454 - wmemcpy

  Copies a specified number of wide characters from one array
  (source_str) to another (destination_str).

  Syntax:

        #include <wchar.h>

        wchar_t wmemcpy (wchar_t *destination_str, const wchar_t
       *source_str, size_t n);

 43.455 - wmemmove

  Copies a specified number of wide characters from one array to
  another, using a temporary array.

  Syntax:

        #include <wchar.h>

        wchar_t wmemmove (wchar_t *destination_str, const wchar_t
       *source_str, size_t n);

 43.456 - wmemset

  Sets a specified value to a specified number of wide characters in
  an object.

  Syntax:

        #include <wchar.h>

        wchar_t wmemset (wchar_t *s, wchar_t c, size_t n);

 43.457 - wprintf

  Performs formatted output from the standard output (stdout).  See
  Chapter 2 for information on format specifiers.

  Syntax:

        #include <wchar.h>

        int wprintf (const wchar_t *format, ...);

 43.458 - wrapok

  Curses macro which, in the UNIX* system environment, allows the
  wrapping of a word from the right border of the window to the
  beginning of the next line.  This macro is provided only for UNIX
  compatibility.

  Syntax:

       #include <curses.h>

       wrapok(WINDOW *win, bool boolf);

 ----------
 * UNIX is a trademark of The Open Group.

 43.459 - write

  Writes a specified number of bytes from a buffer to a file.

  Syntax:

       #include <unistd.h>

       int write(int file_descriptor, void *buffer,int nbytes);
       (POSIX-1)

       int write(int file_descriptor, void *buffer,int nbytes);
       (Compatibility)

 43.460 - writev

  Writes to a file.

  Syntax:

       #include <unistd.h>

       ssize_t writev (int fildes, const struct iovec *iov, int
       iovcnt);

 43.461 - wscanf

  Performs formatted input from the standard input (stdin),
  interpreting it according to the format specification.  See Chapter
  2 for information on format specifiers.

  Syntax:

        #include <wchar.h>

        int wscanf (const wchar_t *format, ...);

  44 - Release Notes

  The release notes for Compaq C are contained in the following
  files:

  SYS$HELP:CC064.RELEASE_NOTES

  SYS$HELP:CC064_RELEASE_NOTES.PS

  45 - Socket Routines

       Socket routines are used in writing Internet application
       programs for the DEC TCP/IP Services for OpenVMS product
       (formerly the VMS/ULTRIX Connection).

 45.1 - accept

    Accepts a connection on a socket.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int accept(int s, struct sockaddr *addr, int *addrlen);

    _DECC_V4_SOURCE not defined:

      int accept(int s, struct sockaddr *addr, size_t *addrlen);

 45.2 - bind

    Binds a name to a socket.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int bind(int s, struct sockaddr *name, int namelen);

    _DECC_V4_SOURCE not defined:

      int bind(int s, const struct sockaddr *name, size_t namelen);

 45.3 - close

    Closes a connection and deletes a socket descriptor.

    Syntax:

      #include  <unixio.h>

      int close(s);

 45.4 - connect

    Initiates a connection on a socket.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int connect(int s, struct sockaddr *name, int namelen);

    _DECC_V4_SOURCE not defined:

      int connect(int s, const struct sockaddr *name, size_t namelen);

 45.5 - decc$get_sdc

    Returns the socket device channel associated with a socket
    descriptor for direct use with the DEC TCP/IP Services for
    OpenVMS product (formerly the VMS/ULTRIX Connection).
    vaxc$get_sdc is a synonym for decc$get_sdc. Either name
    invokes the same routine.

    Syntax:

      #include <socket.h>

      short int decc$get_sdc(int s);

 45.6 - endhostent

  Ends retrieval of network host entries and closes the network host
  file.

  Syntax:

     #include <netdb.h>

     void endhostent (void);

 45.7 - endnetent

  Closes the networks database file.

  Syntax:

     #include <netdb.h>

     void endnetent (void);

 45.8 - getpeername

    Returns the name of the connected peer.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int getpeername(int s, struct sockaddr *name, int *namelen);

    _DECC_V4_SOURCE not defined:

      int getpeername(int s, struct sockaddr *name, size_t *namelen);

 45.9 - endprotoent

  Closes the protocols database file.

  Syntax:

     #include <netdb.h>

     void endprotoent (void);

 45.10 - endservent

  Closes the network services database file.

  Syntax:

     #include <netdb.h>

     void endservent (void);

 45.11 - gethostbyaddr

    Searches the host database sequentially from the beginning of
    the database for a host record with a given address.

    Syntax:

      #include  <netdb.h>

      struct hostent *gethostbyaddr(char *addr, int len, int type);

 45.12 - gethostbyname

    Searches the host database sequentially from the beginning of
    the database for a host record with a given name or alias.

    Syntax:

      #include  <netdb.h>

      struct hostent *gethostbyname(char *name);

 45.13 - gethostent

  Opens the network host entry by name from the network host database
  file.

  Syntax:

     #include <netdb.h>

     struct hostent *gethostent (void);

 45.14 - gethostname

    Returns the name currently associated to the host.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int gethostname(char *name, int namelen);

    _DECC_V4_SOURCE not defined:

      int gethostname(char *name, size_t namelen);

 45.15 - getnetbyaddr

    Searches the network database sequentially from the beginning
    of the database for a network record with a given address.

    Syntax:

      #include  <netdb.h>

      struct netent *getnetbyaddr(long net, int type);

 45.16 - getnetbyname

    Searches the network database sequentially from the beginning
    of the database for a network record with a given name or alias.

    Syntax:

      #include  <netdb.h>

      struct netent *getnetbyname(char *name);

 45.17 - getnetent

  Gets a network file entry from the networks database file.

  Syntax:

     #include <netdb.h>

     struct netent *getnetent (void);

 45.18 - getprotobyname

    Searches the protocols database until a matching protocol name
    is found or until an EOF is encountered.

    Syntax:

      #include <netdb.h>

      struct protoent *getprotobyname(char *name);

 45.19 - getprotobynumber

    Searches the protocols database until a matching protocol number
    is found or until an EOF is encountered.

    Syntax:

      #include <netdb.h>

      struct protoent *getprotobynumber(int *proto);

 45.20 - getprotoent

  Gets a protocol database entry from the protocols database file.

  Syntax:

     #include <netdb.h>

     struct protoent *getprotonet (void);

 45.21 - getservbyname

    Gets information on the named service from the network
    services database. It searches the services database until
    a matching service name is found or until an EOF is encountered.

    If a non-null protocol name is also supplied, searches must
    also match the protocol.

    Syntax:

      #include <netdb.h>

      struct servent *getservbyname(char *name, char *proto);

 45.22 - getservbyport

    Gets information on the specified port from the network
    services database. It searches the services database until
    a matching port is found or until an EOF is encountered.

    If a non-null protocol name is also supplied, searches must
    also match the protocol.

    Syntax:

      #include <netdb.h>

      struct servent *getservbyport(int port, char *proto);

 45.23 - getservent

  Gets a services file entry from the network services database file.

  Syntax:

     #include <netdb.h>

     struct servent *getservent (void);

 45.24 - getsockname

    Returns the name associated with a socket.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int getsockname(int s, struct sockaddr *name, int *namelen);

    _DECC_V4_SOURCE not defined:

      int getsockname(int s, struct sockaddr *name, size_t *namelen);

 45.25 - getsockopt

    Returns the options set on a socket.

    Syntax:

      #include  <types.h>
      #include  <socket.h>

    _DECC_V4_SOURCE defined:

      int getsockopt(int s, int level, int optname, char *optval,
                      int *optlen);

    _DECC_V4_SOURCE not defined:

      int getsockopt(int s, int level, int optname, void *optval,
                      size_t *optlen);

 45.26 - herror

  Writes a message explaining a routine error.

  Syntax:

     #include <netdb.h>
     extern int sys_nerr;
     extern int h_errno;

     void herror (const char *string);

 45.27 - hostalias

  Searches for host aliases associated with a name.

  Syntax:

     #include <types.h>
     #include <in.h>
     #include <namser.h>
     #include <resolv.h>

     char *hostalias (const char *name);

 45.28 - hstrerror

  Accesses message explaining routine errors.

  Syntax:

     #include <string.h>

     char *hstrerror (int errnum);

 45.29 - htonl

    Converts longwords from host to network byte order.

    Syntax:

      #include <in.h>

      unsigned long int htonl(unsigned long int hostlong);

 45.30 - htons

    Converts short integers from host to network byte order.

    Syntax:

      #include <in.h>

      unsigned short int htons(unsigned short int hostshort);

 45.31 - inet_addr

    Converts Internet addresses in text form into numeric (binary)
    Internet addresses.

    Syntax:

      #include <in.h>
      #include <inet.h>

      int inet_addr(char *cp);

 45.32 - inet_lnaof

    Returns the local network address portion of an Internet address.

    Syntax:

      #include <in.h>
      #include <inet.h>

      int inet_lnaof(struct in_addr in);

 45.33 - inet_makeaddr

    Returns an Internet address given a network address and a
    local address on that network.

    Syntax:

      #include <in.h>
      #include <inet.h>

      struct in_addr inet_makeaddr(int net, int lna) ;

 45.34 - inet_netof

    Returns the Internet network address portion of an Internet address.

    Syntax:

      #include <in.h>
      #include <inet.h>

      int inet_netof(struct in_addr in);

 45.35 - inet_network

    Converts a text string representing an Internet network address
    in the standard Internet "." notation into an Internet network
    address in network byte order.

    Syntax:

      #include <in.h>
      #include <inet.h>

      int inet_network(char *cp);

 45.36 - inet_ntoa

    Converts an Internet address into a text string representing
    the address in the standard Internet "." notation.

    Syntax:

      #include <in.h>
      #include <inet.h>

      char *inet_ntoa(struct in_addr in);

 45.37 - ioctl

  Controls socket operations only.

  Syntax:

     #include <ioctl.h>

     int ioctl (int d, unsigned long request, void *arg);

 45.38 - listen

    Sets the maximum limit of outstanding connection requests for
    a socket that is connection oriented.

    Syntax:

      int listen(int s, int backlog);

 45.39 - ntohl

    Converts longwords from network to host byte order.

    Syntax:

      #include <in.h>

      unsigned long int ntohl(unsigned long int netlong) ;

 45.40 - ntohs

    Converts short integers from network to host byte order.

    Syntax:

      #include <in.h>

      unsigned short int ntohs(unsigned short int netshort);

 45.41 - read

    Reads bytes from a socket or file and places them in a buffer.

    Syntax:

      #include <unixio.h>

      int read(int d, void *buffer, int nbytes);

 45.42 - recv

    Receives bytes from a connected socket and places them into a buffer.

    Syntax:

      #include <types.h>
      #include <socket.h>

    _DECC_V4_SOURCE defined:

      int recv(int s, char *buf, int len, int flags);

    _DECC_V4_SOURCE not defined:

      ssize_t recv(int s, void *buf, size_t len, int flags);

 45.43 - recvfrom

    Receives bytes from a socket from any source.

    Syntax:

      #include <types.h>
      #include <socket.h>

    _DECC_V4_SOURCE defined:

      int recvfrom(int s, char *buf, int len, int flags, struct
                    sockaddr *from, int *fromlen);

    _DECC_V4_SOURCE not defined:

      ssize_t recvfrom(int s, void *buf, size_t len, int flags,
                        struct sockaddr *from, size_t *fromlen);

 45.44 - recvmsg

    Receives bytes on a socket and places them into scattered buffers.

    Syntax:

      #include <types.h>
      #include <socket.h>

      int recvmsg(int s, struct msghdr msg[],  int flags);

 45.45 - select

    Allows you to poll or check a group of sockets for I/O
    activity. It can check what sockets are ready to be read or
    written, or what sockets have a pending exception.

    Syntax:

      #include <time.h>

    _DECC_V4_SOURCE defined:

       int select(int nfds, int *readfds, int *writefds,
                   int *exceptfds, struct timeval *timeout);

    _DECC_V4_SOURCE not defined:

       int select(int nfds, fd_set *readfds, fd_set *writefds,
                   fd_set *exceptfds, struct timeval *timeout);

 45.46 - send

    Sends bytes through a socket to its connected peer.

    Syntax:

      #include <types.h>
      #include <socket.h>

    _DECC_V4_SOURCE defined:

      int send(int s, char *msg, int len, int flags);

    _DECC_V4_SOURCE not defined:

      ssize_t send(int s, const void *msg, size_t len, int flags);

 45.47 - sendmsg

    Sends gathered bytes through a socket to any other socket.

    Syntax:

      #include <types.h>
      #include <socket.h>

      int sendmsg(int s, struct msghdr msg[],  int flags);

 45.48 - sendto

    Sends bytes through a socket to any other socket.

    Syntax:

      #include <types.h>
      #include <socket.h>

    _DECC_V4_SOURCE defined:

      int sendto(int s, char *msg, int len, int flags, struct
                  sockaddr *to, int tolen);

    _DECC_V4_SOURCE not defined:

      ssize_t sendto(int s, const void *msg, size_t len, int flags,
                      const struct sockaddr *to, size_t tolen);

 45.49 - sethostent

  Opens, rewinds, and closes the network host database file.

  Syntax:

     #include <netdb.h>

     void sethostent (int stay_open);

 45.50 - setnetent

  Opens, rewinds, or closes the networks database file.

  Syntax:

     #include <netdb.h>

     void setnetent (int stay_open);

 45.51 - setprotoent

  Opens, rewinds, or closes the protocols database file.

  Syntax:

     #include <netdb.h>

     void setprotoent (int stay_open);

 45.52 - setservent

  Opens, rewinds, or closes the network services database.

  Syntax:

     #include <netdb.h>

     void setservent (int stay_open);

 45.53 - setsockopt

    Sets options on a socket.

    Syntax:

      #include <types.h>
      #include <socket.h>

     _DECC_V4_SOURCE defined:

       int setsockopt(int s, int level, int optname, char *optval,
                       int optlen);

     _DECC_V4_SOURCE not defined:

       int setsockopt(int s, int level, int optname, const void *optval,
                       size_t optlen);

 45.54 - shutdown

    Shuts down all or part of a bidirectional connection on a socket.
    It can disallow further receives, further sends, or both.

    Syntax:

      #include <socket.h>

      int shutdown(int s, int how);

 45.55 - socket

    Creates an endpoint for communication by returning a special
    kind of file descriptor called a socket descriptor, which is
    associated with a DEC TCP/IP Services for OpenVMS socket device
    channel.

    Syntax:

      #include <types.h>
      #include <socket.h>

      int socket(int af, int type, int protocol);

 45.56 - decc$socket_fd

  Returns the socket descriptor associated with a Socket Device
  Channel for direct use with the Compaq C RTL.

  Syntax:

     #include <socket.h>

     int decc$socket_fd (int channel);

 45.57 - vaxc$get_sdc

    Returns the socket device channel associated with a socket
    descriptor for direct use with the DEC TCP/IP Services for
    OpenVMS product (formerly the VMS/ULTRIX Connection).
    vaxc$get_sdc is a synonym for decc$get_sdc. Either name
    invokes the same routine.

    Syntax:

      #include <socket.h>

      short int vaxc$get_sdc(int s);

 45.58 - write

    Writes a buffer of data to a socket or file.

    Syntax:

      #include <unixio.h>

      int write(int d, void *buffer, int nbytes);
  Close     HLB-list     TLB-list     Help  

[legal] [privacy] [GNU] [policy] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.