INTENT: Parameter als Ein- oder Ausgabe gekennzeichnet
INTEGER FUNCTION foo(a, b, c) IMPLICIT NONE REAL, INTENT(IN) :: a ! a darf nicht geaendert werden REAL, INTENT(INOUT) :: b ! b ist frei REAL, INTENT(OUT) :: c ! c wird nicht gelesen ...
optionale Argumente, Schlüsselwort-Argumente
SUBROUTINE bla(x, y, upper, lower) IMPLICIT NONE REAL, INTENT(IN) :: x, y INTEGER, INTENT(IN), OPTIONAL :: upper, lower ... CALL bla(2.8,3.1) CALL bla(a,b,-1) CALL bla(x,y,upper = 28)
Rekursive Routinen
RECURSIVE FUNCTION FACTORIAL(N) RESULT(RES) IMPLICIT NONE INTEGER :: N, RES IF (N == 1) THEN RES = 1 ELSE RES = N*FACTORIAL(N-1) ENDIF END FUNCTION FACTORIAL
explizite Routinen-Schnittstelle mit INTERFACE-Block
INTERFACE INTEGER FUNCTION foo(a, b, c) REAL, INTENT(IN) :: a REAL, INTENT(INOUT) :: b REAL, INTENT(OUT) :: c END FUNCTION foo END INTERFACE
nötig bei