Clicky

Fortran Wiki
Module

Page "Control constructs" does not exist.
Please create it now, or hit the "back" button in your browser.

Module

Modules are used for object oriented programming.

General form

The general form is

module <name>
  <use statements>  
  <declarations>
contains
  <subroutines and functions>
end module <name>

Data access

There are three possible access properties: public, private, protected.

  • public: Outside code has read and write access.
  • private: Outside code has no access.
  • public, protected: Outside code has read access.

Using module in other code

One can include the module’s public data in outside code. There are three ways.

  • use <moduleName>: includes all public data and methods
  • use <moduleName>, <renames>: includes all public data and methods, but renames some public data or methods
  • use <moduleName>, only : <subset>: includes only some public data and methods

Examples

These examples highlight the above methods using the following module.

!> \\file test_module.f
module test_module
  implicit none
  private
  integer, public :: a=1
  integer, public, protected :: b=1
  integer, private :: c=1
end module test_module

Data access

!> \\file main.f
program main
  use test_module

  ! accessing public object works
  print *, a

  ! editing public object works
  a = 2

  ! accessing protected object works
  print *, b

  ! editing protected object does not work
  !b = 2 <- ERROR

  ! accessing private object does not work
  !print *, c <- ERROR

  ! editing protected object does not work
  !c = 2 <- ERROR

end program main

Using module in other code

!> \\file main1.f
program main
  use test_module

  print *, a, b

end program main
!> \\file main2.f
program main
  use test_module, better_name => a

  ! new name use available
  print *, better_name

  ! old name is not available anymore
  !print *, a  <- ERROR

end program main
!> show using only
program main
  use test_module, only : a

  ! only a is loaded
  print *, a

  ! b is not loaded
  !print *, b  <- ERROR

end program main