The visibility attributes indicate the ability of an object to be shared by compilation units.
1 – LOCAL
The LOCAL attribute indicates that an object is unavailable to other independently compiled units. By default, all variables and routines are local. See the "HP Pascal Language Reference Manual" for the complete description of using the LOCAL attribute.
2 – GLOBAL
The GLOBAL attribute provides a strong definition of a variable
or routine so that other independently compiled units can refer
to it.
Syntax:
[GLOBAL]
or,
[GLOBAL(idenifier)]
or,
[GLOBAL('string-literal')]
The 'identifier' is the name of the identifier passed to the
linker. It is passed in uppercase on OpenVMS systems. If you
omit the identifier, the name of the variable is used.
The 'string-literal' is a specified string literal that is
passed unmodified to the linker.
See the "HP Pascal Language Reference Manual" for the complete
description of using the GLOBAL attribute.
3 – EXTERNAL
The EXTERNAL attribute indicates a variable or routine that is
assumed to be global in another independently compiled unit.
Syntax:
[EXTERNAL]
or,
[EXTERNAL(identifer)]
or,
[EXTERNAL('string-literal')]
The 'identifer' is the name of the identifier passed to the
linker. It is passed in uppercase on OpenVMS systems. If you
omit the identifier, the name of the variable is used.
The 'string-literal' passes a specified string-literal to the
linker unmodified.
4 – WEAK_EXTERNAL
The WEAK_EXTERNAL attribute specifies that a variable or routine
is not critical to the linking operation. To resolve a weak
reference, the linker searches only the named input modules.
You can specify an identifier with this attribute to indicate
the name by which the corresponding object is known to the
linker.
Syntax:
[WEAK_EXTERNAL]
or,
[WEAK_EXTERNAL(identifier)]
or,
[WEAK_EXTERNAL('string-literal')]
The 'identifier' is the name of the identifier passed to the
linker. If you omit the identifier, the name of the variable is
used.
The 'string-literal' is the name of the string literal that is
passed to the linker unmodified.
Compilation units cannot have the EXTERNAL or WEAK_EXTERNAL
attribute.
5 – WEAK_GLOBAL
The WEAK_GLOBAL attribute specifies that an object is linked
only when it is specifically included in the linking operation.
To resolve a weak reference, the linker searches only the named
input modules. You can specify an identifier to indicate the
name by which the corresponding object is known to the linker.
Syntax:
[WEAK_GLOBAL]
or,
[WEAK_GLOBAL(identifier)]
or,
[WEAK_GLOBAL('string_literal')]
The 'identifier' is the name of the identifier passed to the
linker. If you omit the identifier, the name of the variable is
used.
The 'string-literal' passes a specified string literal to the
linker unmodified.
See the "HP Pascal Language Reference Manual" for the complete
description of using the WEAK_GLOBAL attribute.