Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP Fortran Compiler for HP-UX: HP Fortran Programmer's Reference > Chapter 10 HP Fortran statements

USE

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Glossary

 » Index

Provides controlled access to module entities.

Syntax

A USE statement has one of the following forms:

  • USE module-name [, rename-list ]
  • USE module-name, ONLY : access-list
rename-list

is a comma-separated list of rename

rename

is local-name => module-entity-name

access-list

is a comma-separated list of the following:

  • [local-name =>] module-entity-name

  • OPERATOR (operator)

  • ASSIGNMENT (=)

Description

The USE statement provides access to a module’s public specifications and definitions. These include declared variables, named constants, derived-type definitions, procedure interfaces, procedures, generic identifiers, and namelist groups. The method of access is called use association. Such access may be limited by an ONLY clause on the USE statement, or the accessed entities may be renamed.

All USE statements must appear after the program unit header statement and before any other statements. More than one USE statement may be present, including more than one referring to the same module.

Modules may contain USE statements referring to other modules; however, references must not directly or indirectly be recursive.

The local-name in a renaming operation is not declared: it assumes the attributes of the module entity being renamed.

The first two forms of the USE statement make available by use association all publicly accessible entities in the module, except that the USE statement may rename some module entities. The third form makes available only those entities specified in access-list, with possible renaming of some module entities.

Entities made accessible by a USE statement include public entities from other modules referenced by USE statements within the referenced module.

The same name or specifier may be made accessible by means of two or more USE statements. Such an entity must not be referenced in the scoping unit containing the USE statements, except where specific procedures can be distinguished by the overload rules. A rename or ONLY clause may be used to restrict access to one name or to rename one entity so that both are accessible.

Examples

MODULE rat_arith
TYPE rat
INTEGER n, d
END TYPE

! Make all entities public except zero.
TYPE(rat), PRIVATE, PARAMETER :: zero = rat(0,1)
TYPE(rat), PUBLIC, PARAMETER :: one = rat(1,1)
TYPE(rat) r1, r2
NAMELIST /nml_rat/ r1, r2
INTERFACE OPERATOR( + )
MODULE PROCEDURE rat_plus_rat, int_plus_rat
END INTERFACE

CONTAINS
FUNCTION rat_plus_rat(l, r)
END FUNCTION
END MODULE

PROGRAM Mine
! From the module rat_arith, access only the entities rat,
! one, r1, r2, nml_rat but use the name one_rat for the
! rational value one.
USE rat_arith, ONLY: rat, one_rat => one, r1, r2, nml_rat

! The OPERATOR + for rationals and the procedures rat_plus_rat
! and int_plus_rat are not available because of the ONLY clause
READ *, r2; r1 = one_rat
WRITE( *, NML = nml_rat)
END PROGRAM

Related statements

MODULE

Related concepts

For information about modules, see “Modules”.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© Hewlett-Packard Development Company, L.P.