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