USE Statement

The USE statement gives a program unit accessibility to public entities in a module. For more information, see USE in the A to Z Reference.

Examples

Entities in modules can be accessed either through their given name, or through aliases declared in the USE statement of the main program unit. For example:

  USE MODULE_LIB, XTABS => CROSSTABS 

This statement accesses the routine called CROSSTABS in MODULE_LIB by the name XTABS. This way, if two modules have routines called CROSSTABS, one program can use them both simultaneously by assigning a local name in its USE statement.

When a program or subprogram renames a module entity, the local name (XTABS, in the preceding example) is accessible throughout the scope of the program unit that names it.

The ONLY option also allows public variables to be renamed. Consider the following:

  USE MODULE_A, ONLY: VARIABLE_A => VAR_A 

In this case, the host program accesses only VAR_A from module A, and refers to it by the name VARIABLE_A.

Consider the following example:

  MODULE FOO
     integer foos_integer
   PRIVATE
     integer foos_secret_integer
  END MODULE FOO

PRIVATE, in this case, makes the PRIVATE attribute the default for the entire module FOO. To make foos_integer accessible to other program units, add the line:

  PUBLIC :: foos_integer 

Alternatively, to make only foos_secret_integer inaccessible outside the module, rewrite the module as follows:

  MODULE FOO
    integer foos_integer
    integer, private::foos_secret_integer
  END MODULE FOO