! 4d space-time FUNCTION space_time( x, y, z, t ) RESULT( ss ) IMPLICIT NONE REAL, INTENT(IN) :: x, y, z REAL, INTENT(IN), OPTIONAL :: t REAL :: ss ss = x * x + y * y + z * z IF ( PRESENT( t ) ) ss = ss - t * t END FUNCTION space_time ! main PROGRAM main IMPLICIT NONE REAL :: a, b, c, t INTERFACE FUNCTION space_time( x, y, z, t ) RESULT( ss ) REAL, INTENT(IN) :: x, y, z REAL, INTENT(IN), OPTIONAL :: t REAL :: ss END FUNCTION END INTERFACE a = 1.0E0 b = 2.0E0 c = 1.0E0 PRINT '(F7.4)', space_time( x = a, y = b, z = c ) ! t 引数は,なし t = 1.5E0 PRINT '(F7.4)', space_time( a, b, c, t ) END PROGRAM main