16.1 Scope

Program entities have the following kinds of scope (as shown in Table 16-1):

Table 16-1 Scope of Program Entities

Entity  Scope   
Program units  Global   
Common blocks 1  Global   
External procedures  Global   
Intrinsic procedures  Global 2   
Module procedures  Local  Class I 
Internal procedures  Local  Class I 
Dummy procedures  Local  Class I 
Statement functions  Local  Class I 
Derived types  Local  Class I 
Components of derived types  Local  Class II 
Named constants  Local  Class I 
Named constructs  Local  Class I 
Namelist group names  Local  Class I 
Generic identifiers  Local  Class I 
Argument keywords in procedures  Local  Class III 
Variables that can be referenced throughout a subprogram   Local  Class I 
Variables that are dummy arguments in statement functions  Statement   
DO variables in an implied-do list 3 of a DATA or FORALL statement, or an array constructor  Statement   
Intrinsic operators  Global   
Defined operators  Local   
Statement labels  Local   
External I/O unit numbers  Global   
Intrinsic assignment  Global 4   
Defined assignment  Local   
1 Names of common blocks can also be used to identify local entities.
2 If an intrinsic procedure is not used in a scoping unit, its name can be used as a local entity within that scoping unit. For example, if intrinsic function COS is not used in a program unit, COS can be used as a local variable there.
3 The DO variable in an implied-do list of an I/O list has local scope.
4 The scope of the assignment symbol (=) is global, but it can identify additional operations (see Section 8.9.5).

Scoping units can contain other scoping units. For example, the following shows six scoping units:

 MODULE MOD_1                    ! Scoping unit 1
    ...                          ! Scoping unit 1
 CONTAINS                        ! Scoping unit 1
   FUNCTION FIRST                ! Scoping unit 2
     TYPE NAME                   ! Scoping unit 3
     ...                         ! Scoping unit 3
     END TYPE NAME               ! Scoping unit 3
     ...                         ! Scoping unit 2
   CONTAINS                      ! Scoping unit 2
     SUBROUTINE SUB_B            ! Scoping unit 4
       TYPE PROCESS              ! Scoping unit 5
       ...                       ! Scoping unit 5
       END TYPE PROCESS          ! Scoping unit 5
       INTERFACE                 ! Scoping unit 5
         SUBROUTINE SUB_A        ! Scoping unit 6
         ...                     ! Scoping unit 6
         END SUBROUTINE SUB_A    ! Scoping unit 6
       END INTERFACE             ! Scoping unit 5
     END SUBROUTINE SUB_B        ! Scoping unit 4
   END FUNCTION   FIRST          ! Scoping unit 2
 END MODULE                      ! Scoping unit 1

For More Information:


Previous Page Next Page Table of Contents