Überladen von Operatoren
MODULE RATIONAL_ARITHMETIC
TYPE Ratio
... ! wie oben
END TYPE Ratio
INTERFACE OPERATOR(*)
MODULE PROCEDURE ratmul
END INTERFACE
...
PROGRAM Ratiofarm
USE RATIONAL_ARITHMETIC
TYPE(Ratio) :: a,b,c
c = a * b
selbstdefinierte Operatoren
MODULE PERSONLIB
TYPE Person
CHARACTER(LEN=20) :: name
INTEGER :: age
END TYPE Person
INTERFACE OPERATOR (.YOUNGER.)
MODULE PROCEDURE person_younger
END INTERFACE
PRIVATE person_younger
CONTAINS
LOGICAL FUNCTION person_younger(p1, p2)
IMPLICIT NONE
TYPE(Person), INTENT(IN) :: p1, p2
person_younger = (p1%age < p2%age)
END FUNCTION person_younger
END MODULE PERSONLIB
PROGRAM youthtest
USE PERSONLIB
TYPE(Person) :: you, me
IF (you .YOUNGER. me)
...
generische Funktionen
! im Modul SPECIAL_FUNCTIONS INTERFACE GAMMA ! neue generische Funktion MODULE PROCEDURE SGAMMA, DGAMMA, CGAMMA, ZGAMMA END INTERFACE ! im Module RATIONAL_ARITHMETIC INTERFACE SIN ! erweitert generische Funktion SIN MODULE PROCEDURE ratsin END INTERFACE