! 例題 8-9 4次元時空距離 [オプション引数 ] FUNCTION space_time( time, x_pos, y_pos, z_pos ) RESULT ( ss ) IMPLICIT NONE REAL, INTENT ( IN ), OPTIONAL :: time REAL, INTENT ( IN ) :: x_pos, y_pos, z_pos REAL :: ss ss = x_pos ** 2 + y_pos ** 2 + z_pos ** 2 IF ( PRESENT( time ) ) ss = ss - time * time END FUNCTION space_time ! main PROGRAM ex8_9 IMPLICIT NONE REAL :: a, b, c, t INTERFACE FUNCTION space_time( time, x_pos, y_pos, z_pos ) & RESULT ( ss ) REAL, INTENT ( IN ), OPTIONAL :: time REAL, INTENT ( IN ) :: x_pos, y_pos, z_pos REAL :: ss END FUNCTION space_time END INTERFACE a = 1.0E0 b = 2.0E0 c = 1.0E0 PRINT '( F7.4 )', space_time( x_pos = a, y_pos = b, z_pos = c ) t = 1.5E0 PRINT '( F7.4 )', space_time( t, a, b, c ) END PROGRAM ex8_9