!----- Ex9_8: Vector and Array ----- MODULE vector_and_array TYPE vector REAL :: x, y, z END TYPE vector ! INTERFACE ASSIGNMENT(=) MODULE PROCEDURE vector_to_array END INTERFACE ! INTERFACE ASSIGNMENT(=) MODULE PROCEDURE array_to_vector END INTERFACE ! CONTAINS SUBROUTINE vector_to_array(a, v) TYPE(vector), INTENT(IN) :: v REAL, INTENT(OUT) :: a(1:3) a = (/ v%x, v%y, v%z /) END SUBROUTINE ! SUBROUTINE array_to_vector(v, a) REAL, INTENT(IN) :: a(1:3) TYPE(vector), INTENT(OUT) :: v v = vector( a(1), a(2), a(3) ) END SUBROUTINE END MODULE ! PROGRAM main USE vector_and_array TYPE(vector) :: u REAL :: w(1:3) PRINT*, "Input 3D-vector components:" READ*, u w = u u = 2.0 * w PRINT '(3F8.3)', u END