User`s guide

MACRO Compiler Directives
.CALL_ENTRY
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. (See Section 1.7.3). 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.
.CALL_LINKAGE (OpenVMS I64 only)
Associates a named or anonymous linkage with a routine name. When the
compiler sees a CALLS, CALLG, JSB, BSBB, or BSBW instruction with the
routine name as the target, it will use the associated linkage to decide which
registers need to be saved and restored around the call.
Format
.CALL_LINKAGE routine_name [,linkage_name] [,input] [,output] [,scratch]
[,preserve]
Parameters
routine_name
The name of a routine to be associated with the linkage.
linkage_name =
The name of a linkage previously defined with the .DEFINE_LINKAGE directive.
If you specify a linkage_name, you cannot specify an input, output, scratch,
or preserve parameter.
input=<>
Register set that indicates those registers from which the routine_name receives
input values. This parameter is for documentation purposes only.
If you specify an input register set, you cannot specify a linkage_name.
output=<>
Register set that indicates those registers to which the routine_name assigns
values that are returned to the routine’s caller. Registers included in this register
set are not saved and restored around the call.
If you specify an output register set, you cannot specify a linkage_name.
scratch=<>
Register set that indicates registers that are used within the routine.
B–6 Specialized Directives