! 例題 9-6 ベクトルと配列の相互代入文 [ユーザ定義代入文 ] 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 ex9_6 USE vector_and_array, ONLY : vector, ASSIGNMENT ( = ) IMPLICIT NONE TYPE ( vector ) :: u REAL :: w( 1 : 3 ) PRINT *, 'Input 3D-vector components: ' READ *, u w = u ! vector_to_array u = 2E0 * w ! array_to_vector PRINT '( 3F8.3 )', u END PROGRAM ex9_6