VMS Help  —  MACRO  /ALPHA  Macros  Created Temporary Labels
    Temporary labels are often very useful in macros. You can create
    a macro definition that specifies temporary labels within it,
    but these temporary labels might be duplicated elsewhere in the
    temporary label block, possibly causing errors. However, the
    assembler can create temporary labels in the macro expansion that
    will not conflict with other temporary labels. These labels are
    called created temporary labels.

    Created temporary labels range from 30000$ to 65535$. Each time
    the assembler creates a new temporary label, it increments the
    numeric part of the label name by 1. Consequently, no user-
    defined temporary labels should be in the range of 30000$ to
    65535$.

    A created temporary label is specified by a question mark (?)  in
    front of the formal argument name. When the macro is expanded,
    the assembler creates a new temporary label if the corresponding
    actual argument is blank. If the corresponding actual argument is
    specified, the assembler substitutes the actual argument for the
    formal argument.

    The following example is a macro definition specifying a created
    temporary label:

            .MACRO  POSITIVE        ARG1,?L1
            BGE     ARG1,L1
            NEGQ    ARG1,ARG1
    L1:    .ENDM    POSITIVE

    The following three calls and expansions of the macro defined
    previously show both created temporary labels and a user-defined
    temporary label:

            POSITIVE  R0
            BGE     R0,30000$
            NEGQ    R0,R0
    30000$:

            POSITIVE  R5
            BGE     R5,30001$
            NEGQ    R5,R5
    30001$:

            POSITIVE  R7,10$
            BGE     R7,10$
            NEGQ    R7,R7
    10$:
Close Help