! vector and array MODULE vector_and_array IMPLICIT NONE 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 ) IMPLICIT NONE TYPE(vector), INTENT(IN) :: v REAL, INTENT(OUT) :: a(1:3) a = (/ v%x, v%y, v%z /) END SUBROUTINE vector_to_array SUBROUTINE array_to_vector( v, a ) IMPLICIT NONE REAL, INTENT(IN) :: a(1:3) TYPE(vector), INTENT(OUT) :: v v = vector( a(1), a(2), a(3) ) END SUBROUTINE array_to_vector END MODULE vector_and_array ! ! main ! PROGRAM main USE vector_and_array IMPLICIT NONE TYPE(vector) :: u REAL :: w(1:3) PRINT '(1X, A)', 'Input 3d-vector components: ' READ *, u w = u u = 2E0 * w PRINT '(3F8.3)', u END PROGRAM main