Copyright Digital Equipment Corp. All rights reserved.

Parameters

 

max_args=number

   Maximum number of arguments the called procedure expects. The
   compiler uses this value as the number of longwords it allocates
   in the fixed temporary region of the stack frame, if the argument
   list must be homed. If homing is not necessary, the max_args
   count is not required. The compiler flags procedure entry
   points, where max_args has not been specified, that require homed
   argument lists.

   Note that, for .CALL_ENTRY routines in which max_args exceeds
   14, the compiler uses the received argument count, or max_args,
   whichever is smaller, when homing the argument list.
 

home_args=TRUE|FALSE

   Indication to the compiler that the called procedure's argument
   list should or should not be homed. The home_args argument
   overrides the compiler's default logic for determining the
   circumstances under which an argument list must be homed.
 

quad_args=TRUE|FALSE

   Indication to the compiler that the called procedure's argument
   list will have quadword references.
 

input=<>

   Register set that indicates those registers from which the
   routine receives input values.

   This register set informs the compiler that the registers
   specified have meaningful values at routine entry and are
   unavailable for use as temporary registers even before the first
   compiler-detected use of the registers. Specifying registers in
   this register set affects compiler temporary register usage in
   this case:

   o  If you are explicitly using any of the Alpha or Itanium
      registers (R13 and above).

   In either of these cases, if you do not specify a register that
   is being used as input in the input argument, the compiler may
   use the register as a temporary register, corrupting the input
   value.

   This register set has no effect on the compiler's default
   register preservation behavior.
 

output=<>

   Register set that indicates those registers to which the routine
   assigns values that are returned to the routine's caller.
   Registers included in this register set are not saved and
   restored by the compiler, even if they are modified by the
   routine.

   This register set also informs the compiler that the registers
   specified have meaningful values at routine exit and are
   unavailable for use as temporary registers even after the last
   compiler-detected use of the registers. Specifying registers in
   this register set affects compiler temporary register usage in
   this case:

   o  If you are explicitly using any of the Alpha or Itanium
      registers (R13 and above).

   In either of these cases, if you do not specify a register that
   is being used as output in the output argument, the compiler may
   use the register as a temporary register, corrupting the output
   value.
 

scratch=<>

   Register set that indicates registers that are used within the
   routine but which should not be saved and restored at routine
   entry and exit. The caller of the routine does not expect to
   receive output values nor does it expect the registers to be
   preserved. Registers included in this register set are not saved
   and restored by the compiler, even if they are modified by the
   routine.

   On OpenVMS I64 systems, the compiler will not use these registers
   as temporary registers.
 

preserve=<>

   Register set that indicates those registers that should be
   preserved over the routine call. This should include only those
   registers that are modified and whose full 64-bit contents should
   be saved and restored.

   This register set causes registers to be preserved whether or
   not they would have been preserved automatically by the compiler.
   Note that because R0 and R1 are scratch registers, by calling
   standard definition, the compiler never saves and restores them
   unless you specify them in this register set. Registers R16 and
   above are not allowed. 

   This register set overrides the output and scratch register sets.
   If you specify a register both in the preserve register set and
   in the output or scratch register sets, the compiler will report
   the warning:

   %AMAC-W-REGDECCON, register declaration conflict in routine A
 

label=name

   Optionally specify a label as in a VAX MACRO .ENTRY directive.
   This can be used if a module is to be common between OpenVMS
   VAX and OpenVMS Alpha or OpenVMS I64, if the OpenVMS VAX version
   needs to reference the entry with a .MASK directive, and if the
   OpenVMS Alpha or OpenVMS I64 version needs to use one or more
   of the special .CALL_ENTRY parameters. When the label parameter
   is specified and the symbol VAX is defined, an .ENTRY directive
   is used. If the symbol VAX is not defined, it creates the label
   and does a normal .CALL_ENTRY. Note that label is not the first
   parameter. Therefore, you cannot simply replace .ENTRY with
   .CALL_ENTRY. You must use the label parameter declaration.