Copyright Digital Equipment Corp. All rights reserved.

Qualifiers

 

/DEBUG
      /DEBUG=(option[,...])
      /NODEBUG

   Includes or excludes local symbols in the symbol table or
   traceback information in the object module. You can specify one
   or more of the following options:

   Option      Description

   ALL         Makes local symbols and traceback information in
               the object module available to the debugger. This
               qualifier is equivalent to /ENABLE=(DEBUG,TRACEBACK).

   NONE        Makes local symbols and traceback information
               in the object module unavailable to the
               debugger. This qualifier is equivalent to
               /DISABLE=(DEBUG,TRACEBACK).

   SYMBOLS     Makes all local symbols in the object module
               available and all traceback information unavailable
               to the debugger. This qualifier is equivalent to
               /ENABLE=SYMBOLS.

   TRACEBACK   Makes traceback information in the object module
               available and local symbols unavailable to
               the debugger. This qualifier is equivalent to
               /ENABLE=TRACEBACK.

   The default value for /DEBUG is ALL. The /DEBUG
   qualifier overrides /ENABLE=(DEBUG,TRACEBACK) or
   /DISABLE=(DEBUG,TRACEBACK), regardless of their order on the
   command line.

                                  NOTE

      Debugging can be simplified by specifying /NOOPTIMIZE. This
      qualifier prevents the movement of generated code across
      source line boundaries.

   For more information about debugging, see the OpenVMS Debugger
   Manual.
 

/DIAGNOSTICS
      /DIAGNOSTICS[=filespec]
      /NODIAGNOSTICS (default)

   Creates a file containing assembler messages and diagnostic
   information. If you omit the file specification, the default file
   name is the same as the source program; the default file type is
   DIA.

   No wildcard characters are allowed in the file specification.

   The diagnostics file is reserved for use with layered products,
   such as the VAX Language-Sensitive Editor (LSE).
 

/DISABLE
      /DISABLE=(option[,...])
      /NODISABLE

   Provides initial settings for the compiler functions that can be
   controlled by the .DISABLE and .ENABLE MACRO directives.

   You can specify one or more of the following functions:

   Option      Description

   DEBUG       Excludes local symbol table information in
               the object file for use with the debugger.
               If the /DEBUG qualifier is also specified,
               it overrides /DISABLE=(DEBUG,TRACEBACK) or
               /ENABLE=(DEBUG,TRACEBACK), regardless of their order
               on the command line.

   FLAGGING    Deactivates compiler flagging.

   GLOBAL      Disables the assumption that undefined symbols are
               external symbols.

   OVERFLOW    Deactivates production of overflow trap code for the
               following opcodes: ADDx, ADWC, INCx, ADAWI, SUBx,
               SBWC, DECx, MNEGx, MULx, CVTxy, (where x is greater
               than y, for example CVTLB), AOBxx, ACBL, and SOBxx.

   QUADWORD    Disables support for quadword literal and address
               expressions.

   SUPPRESSION Prevents the listing of unreferenced symbols in the
               symbol table.

   TRACEBACK   Disables the provision of traceback information
               to the debugger. If the /DEBUG qualifier is also
               specified, it overrides /DISABLE=(DEBUG,TRACEBACK) or
               /ENABLE=(DEBUG,TRACEBACK), regardless of their order
               on the command line.

   By default, at compiler activation, FLAGGING, GLOBAL, and
   SUPPRESSION are enabled, and DEBUG, OVERFLOW, QUADWORD, and
   TRACEBACK are disabled.

   The /NODISABLE qualifier has the same effect as omitting the
   /DISABLE qualifier. It can also be used to negate the effects of
   any /DISABLE qualifiers specified earlier in the command line.

                                  NOTE

      If /DISABLE is used two or more times in the command line,
      the last /DISABLE will override all previous uses of
      /DISABLE. The options not specified in the final /DISABLE
      will revert to their default values.

      Furthermore, if /ENABLE and /DISABLE are used in the same
      command line for the same option, /DISABLE will always
      prevail, regardless of its position in the command line.

      Workaround: If you want to disable two or more options,
      specify them in the following way:

      /DISABLE=(xxxx, yyyy)
 

/ENABLE
      /ENABLE=(option[,...])
      /NOENABLE

   Provides initial settings for the compiler functions that can be
   controlled by the .DISABLE and .ENABLE MACRO directives.

   You can specify one or more of the following functions:

   Option      Description

   DEBUG       Includes local symbol table information in
               the object file for use with the debugger.
               If the /DEBUG qualifier is also specified,
               it overrides /ENABLE=(DEBUG,TRACEBACK) or
               /DISABLE=(DEBUG,TRACEBACK), regardless of their order
               on the command line.

   FLAGGING    Activates compiler flagging.

   GLOBAL      Assumes undefined symbols are external symbols.

   OVERFLOW    Activates production of overflow trap code for the
               following opcodes: ADDx, ADWC, INCx, ADAWI, SUBx,
               SBWC, DECx, MNEGx, MULx, CVTxy (where x is greater
               than y, for example CVTLB), AOBxx, ACBL, and SOBxx.

   QUADWORD    Provides support for quadword literal and address
               expressions.

   SUPPRESSION Provides listing of unreferenced symbols in the
               symbol table.

   TRACEBACK   Provides traceback information to the debugger.
               If the /DEBUG qualifier is also specified,
               it overrides /ENABLE=(DEBUG,TRACEBACK) or
               /DISABLE=(DEBUG,TRACEBACK), regardless of their order
               on the command line.

   By default, at compiler activation, FLAGGING, GLOBAL, TRACEBACK,
   and SUPPRESSION are enabled, and DEBUG, OVERFLOW, and QUADWORD
   are disabled.

   The /NOENABLE qualifier has the same effect as not specifying the
   /ENABLE qualifier. It can also be used to negate the effects of
   any /ENABLE qualifiers specified earlier in the command line.

                                  NOTE

      For every option of the /ENABLE qualifier, if /ENABLE and
      /DISABLE are used in the same command line for the same
      option, /DISABLE will always prevail, regardless of its
      position in the command line.

      You may want to enable an option previously disabled through
      the use of a symbol. For example, you may have incorporated
      the following frequently used options into the DCL symbol
      MAC, as follows:

      MAC::== MACRO/MIGRATION/NOTIE/DISABLE=FLAGGING

      To enable FLAGGING using the symbol MAC, issue the following
      command:

      $ MAC /NODISABLE/ENABLE=FLAGGING
 

/FLAG
      /FLAG=(option[,...])
      /NOFLAG

   Specifies which classes of informational messages the compiler
   reports. The options are:

   Option          Description

   ALIGNMENT       Reports unaligned stack and memory references.

   ALL             Enables all options.

   ARGLIST         Reports that the argument list has been homed.

   BAD_FIELD_      Reports BBC/BBS instructions that attempt to use
   USAGE           bits beyond 31.
   (I64 only)

   CODEGEN         Reports run-time code generation, such as self-
                   modifying code.

   COMPILER_       Prints compiler version to SYS$ERROR.
   VERSION
   (I64 only)

   DIRECTIVES      Reports unsupported directives.

   HINTS           Reports input/output/auto-preserved register
                   hints.

   INDIRECT_       Reports CALLS/CALLG instructions that have an
   CALLS           indirect target and are not preceded by a .USE_
   (I64 only)      LINKAGE directive.

   INDIRECT_JSB    Reports JSB instructions that have an indirect
   (I64 only)      target and are not preceded by a .USE_LINKAGE
                   directive.

   INSTRUCTIONS    Reports instructions that use absolute addresses
                   that might compile correctly, but should be
                   examined anyway, because the desired absolute
                   address might be different on the system.

   JUMPS           Reports branches between routines.

   LINKAGE         Reports linkage information provided to the
   (I64 only)      OpenVMS linker.

   NONE            Disables all options.

   STACK           Reports all messages caused by user stack
                   manipulation.

   At compiler activation, the default is /FLAG=(ALIGNMENT, ARGLIST,
   CODEGEN, DIRECTIVES, INSTRUCTIONS, JUMPS, STACK).

                                  NOTE

      Use of the /NOFLAG and /FLAG qualifiers together to
      activate a specific subset of cross-compiler messages
      does not work as expected. When used together, as in
      /NOFLAG/FLAG=(keyword,keyword), instead of activating only
      the messages specified by the keywords, all cross-compiler
      messages are activated. However, use of /FLAG=(none,keyword)
      activates only those messages specified by the keyword.

   Note that specifying /NOFLAG or /FLAG=NONE does not disable the
   reporting of coding constructs that would prevent a successful
   compilation. The compiler continues to report code that you must
   change, such as an up-level stack reference.
 

/LIBRARY
      /LIBRARY
      /NOLIBRARY

   Positional qualifier.

   The associated input file to the /LIBRARY qualifier must be a
   macro library. The default file type is MLB. The /NOLIBRARY
   qualifier has the same effect as not specifying the /LIBRARY
   qualifier, or negates the effects of any /LIBRARY qualifiers
   specified earlier in the command line.

   The compiler can search up to 16 libraries, one of which
   is always STARLET.MLB. This number applies to a particular
   compilation, not necessarily to a particular MACRO command. If
   you enter the MACRO command so that more than one source file is
   compiled, but the source files are compiled separately, you can
   specify up to 16 macro libraries for each separate compilation.
   More than one macro library in a compilation causes the libraries
   to be searched in reverse order of their specification.

   A macro call in a source program causes the compiler to begin the
   following sequence of searches if the macro is undefined:

   1. The libraries specified with the .LIBRARY directive are
      searched first, in reverse order of the order in which they
      were declared.

   2. If the macro definition is not found in any of the libraries
      specified with the .LIBRARY directive, a search of the
      libraries specified in the MACRO command line (in the reverse
      order in which they were specified).

   3. If the macro definition is not found in any of the libraries
      specified in the command line, a search of STARLET.MLB.
 

/LIST
      /LIST[=filespec]
      /NOLIST

   Creates or omits an output listing, and optionally provides an
   output file specification for it. The default file type for the
   listing file is LIS. No wildcard characters are allowed in the
   file specification.

   An interactive MACRO command does not produce a listing file
   by default. The /NOLIST qualifier, present either explicitly or
   by default, causes errors to be reported on the current output
   device.

   The /LIST qualifier is the default for a MACRO command in a batch
   job. The /LIST qualifier allows you to control the defaults
   applied to the output file specification by the placement of
   the qualifier in the command line.
 

/MACHINE
      /MACHINE
      /NOMACHINE (default)

   Enables machine code listing, if it and the /LIST qualifier are
   both specified in the command line.
 

/OBJECT
      /OBJECT[=filespec]
      /NOOBJECT

   Creates or omits an object module. It also defines the file
   specification. By default, the compiler creates an object module
   with the same file name as the first input file. The default file
   type for object files is OBJ. No wildcard characters are allowed
   in the file specification.

   The /OBJECT qualifier controls the defaults applied to the output
   file specification by the placement of the qualifier in the
   command line.
 

/OPTIMIZE
      /OPTIMIZE[=(option[,...])]
      /NOOPTIMIZE

   Enables or disables optimization options. All options are enabled
   by default except VAXREGS.

   The options are:

   Option         Description

   [NO]PEEPHOLE   Peephole optimization
   [NO]SCHEDULE   Code scheduling
   [NO]ADDRESSES  Common base address loading
   [NO]REFERENCES Common data referencing
   ALL            All optimizations
   NONE           No optimizations


/PRESERVE
      /PRESERVE[=(option[,...])]
      /NOPRESERVE (default)

   Directs the compiler to generate special OpenVMS Alpha or OpenVMS
   I64 code throughout a module for all VAX MACRO instructions that
   rely on VAX guarantees of operation atomicity or granularity.

   The options are:

   Option         Description

   GRANULARITY    Preserves the rules of VAX granularity of writes.
                  Specifying /PRESERVE=GRANULARITY causes the
                  compiler to use Alpha Load-locked and Store-
                  conditional instruction sequences or the Itanium
                  compare-exchange (cmpxchg) instruction in code it
                  generates for VAX instructions that perform byte,
                  word, or unaligned longword writes.

   ATOMICITY      Preserves atomicity of VAX modify operations.
                  Specifying /PRESERVE=ATOMICITY causes the
                  compiler to use Alpha Load-locked and Store-
                  conditional instruction sequences or the Itanium
                  compare-exchange (cmpxchg) instruction in code
                  it generates for VAX instructions with modify
                  operands.

   /PRESERVE and /PRESERVE=(GRANULARITY,ATOMICITY) are equivalent.
   When preservation of both granularity and atomicity is enabled,
   and the compiler encounters a VAX coding construct that requires
   both granularity and atomicity guarantees, it enforces atomicity
   over granularity.

   If you are aware of specific sections of VAX MACRO code that
   require VAX granularity and atomicity guarantees, you may not
   need the compiler to enforce these guarantees for the entire
   module. Instead, you can use the .PRESERVE and .NOPRESERVE
   directives to apply the guarantees only to those sections.
   Because the compiler does not need to generate expanded code
   for the entire module, these these directives can help optimize
   the code.

   Atomicity is guaranteed on multiprocessing systems as well as
   uniprocessing systems when you specify /PRESERVE=ATOMICITY.

   When the /PRESERVE qualifier is present, you can control the
   number of times compiler-generated code retries a granular or
   atomic update by specifying the /RETRY_COUNT qualifier.

                                WARNING

      If /PRESERVE=ATOMICITY is turned on, any unaligned data
      references will result in a fatal reserved operand fault.
      If /PRESERVE=GRANULARITY is turned on, unaligned word
      references to addresses assumed aligned will also cause a
      fatal reserved operand fault.
 

/RETRY_COUNT
      /RETRY_COUNT=count

   Specifies to the compiler the number of times the following
   operations should be performed in generated code:

   o  Retries of operations performed in source by a VAX interlocked
      instruction

   o  Retries of atomic or granular updates if the /PRESERVE
      qualifier or .PRESERVE directive is present

   If the /RETRY_COUNT qualifier is not present, the compiler
   generates code that performs an infinite number of retries of
   these operations.
 

/SHOW
      /SHOW[=(function[,...])]
      /NOSHOW[=(function[,...])]

   Provides initial settings for the functions controlled by the
   compiler directives .SHOW and .NOSHOW.

   You can specify one or more of the following functions:

   Option        Description

   CONDITIONALS  Lists unsatisfied conditional code associated with
                 .IF and .ENDC MACRO directives.

   CALLS         Lists macro calls and repeat range expansions.

   DEFINITIONS   Lists macro definitions.

   EXPANSIONS    Lists macro expansions.

   BINARY        Lists binary code generated by the expansion of
                 macro calls.
 

/SYMBOLS
      /SYMBOLS
      /NOSYMBOLS (default)

   Generates a symbol table and psect synopsis table for the listing
   file if it and the /LIST qualifier are both specified in the
   command line.
 

/TIE
      /TIE
      /NOTIE (default) 

   Ensures that proper external callouts are generated for
   translated images. Translated images are images that were
   translated with the DECMigrate (also known as VEST) facility.
   The Translated Image Environment (TIE) allows translated images
   to execute as if on an OpenVMS VAX system. Use /NOTIE for better
   performance if you do not make calls to translated images.
 

/UNALIGNED
      /UNALIGNED
      /NOUNALIGNED (default)

   Forces the compiler to use unaligned loads and stores for all
   register-based memory references (except those that are FP-based
   or SP-based or are references to local aligned static data).

   By default, the compiler assumes that addresses in registers used
   as base pointers (except those that are FP-based or SP-based)
   are longword-aligned at routine entry, and generates code to load
   BYTE, WORD, and LONG data accordingly. This can result in run-
   time alignment faults, with significant performance impact, if
   the assumption is incorrect. Specifying /UNALIGNED causes the
   compiler to generate code assuming pointers are unaligned. This
   code is significantly larger, but is more efficient than handling
   an alignment fault.

                                  NOTE

      The compiler does not track quadword register alignment.
      For quadword memory references (such as in VAX MOVQ
      instructions), the compiler assumes the base address is
      quadword aligned, unless it has determined the address
      may not be longword-aligned in its register tracking code.
      Quadword references in OpenVMS Alpha and OpenVMS I64 built-
      in uses are always assumed to be quadword aligned. Since
      these must be in new code, the data should be properly
      aligned.

   The /UNALIGNED qualifier is generally appropriate only for
   modules where data is often unaligned, but which are not
   sufficiently performance sensitive to merit the correction of
   the data alignment in the source.
 

/WARN
      /WARN=[[option]...]
      /NOWARN

   Turns off all informational level or warning level messages. Both
   are on by default. The options are:

   Option     Description

   INFO       Turns on all informational level messages
   NOINFO     Turns off all informational level messages
   WARN       Turns on all informational and warning level messages
   NOWARN     Turns off all informational and warning level messages