Ü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