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.