| |||
| Home > Assembler Reference > Symbols > Local labels | |||
A local label is a number in the range 0-99, optionally followed by a name. The same number can be used for more than one local label in an area.
A local label can be used in place of in
source lines in an assembly language module (see Format of source lines):symbol
on its own, that is, where there is no instruction or directive
on a line that contains an instruction
on a line that contains a code- or data-generating directive.
A local label is generally used where you might use a program-relative label (see Labels).
Local labels are typically used for loops and conditional code within a routine, or for small subroutines that are only used locally. They are particularly useful in macros (see MACRO and MEND).
Use the ROUT directive to limit the scope of
local labels (see ROUT).
A reference to a local label refers to a matching label within the
same scope. If there is no matching label within the scope in either
direction, the assembler generates an error message and the assembly
fails.
You can use the same number for more than one local label even within the same scope. By default, the assembler links a local label reference to:
the most recent local label of the same number, if there is one within the scope
the next following local label of the same number, if there is not a preceding one within the scope.
Use the optional parameters to modify this search pattern if required.
The syntax of a local label is:
n{routname}
The syntax of a reference to a local label is:
%{F|B}{A|T}n{routname}
where:
nis the number of the local label.
routnameis the name of the current scope.
%introduces the reference.
Finstructs the assembler to search forwards only.
Binstructs the assembler to search backwards only.
Ainstructs the assembler to search all macro levels.
Tinstructs the assembler to look at this macro level only.
If neither F nor B is
specified, the assembler searches backwards first, then forwards.
If neither A nor T is
specified, the assembler searches all macros from the current level to
the top level, but does not search lower level macros.
If is
specified in either a label or a reference to a label, the assembler
checks it against the name of the nearest preceding routnameROUT directive.
If it does not match, the assembler generates an error message and
the assembly fails.