Los módulos u objetos son una colección de estructuras de datos que se les asocia las funciones y operadores que son capaces de manipular los datos contenidos en dichas estructuras. Las ventajas fundamentales del desarrollo de software mediante el uso de módulos son: facilita las pruebas y depuración del código de cada módulo por separado, y permite el uso de código previamente escrito mediante una interfaz bien definida.
MODULE modulo_punto
TYPE punto !Definicion del tipo punto
REAL :: x,y
END TYPE
INTERFACE OPERATOR(-) ! Interfaz del nuevo operador resta
FUNCTION resta_puntos(p1,p2)
TYPE(punto) :: resta_puntos, p1, p2
END FUNCTION
END INTERFACE
...
CONTAINS
FUNCTION resta_puntos(p1,p2) ! Funcion que resta dos puntos
TYPE(punto) : resta_puntos, p1, p2
resta_puntos%x = p1%x - p2%x ! x = x1 - x2
resta_puntos%y = p1%y - p2%y ! y = y1 - y2
END FUNCTION resta_puntos
END MODULE modulo_punto
El módulo esta conformado por dos partes, la primera contiene las definiciones de tipos, las declaraciones de variables, las interfaces, las funciones generales y los datos globales. La segunda parte, que se encuentra luego del la palabra CONTAINS, tiene los procedimientos que solamente pueden ser utilizados atrevés de las interfaces dadas.
Los módulos pueden ser utilizados en un código fuente si se incluye la instrucción USE.
USE modulo_punto