<Example Program>
Module type_module Type value_type Character(Len=8) name End Type Type, Extends(value_type) :: real_value Real x End Type Type, Extends(value_type) :: integer_value Integer v End Type Contains Subroutine print(value) Class(value_type), Intent(In) :: value Write (*,'(A)',Advance='No') & '"'//Trim(value%name)//'" is ' Select Type (value) Class Is (real_value) Print *, 'Real',value%x Class Is (integer_value) Print *, 'Int',value%v Class Default Print *, 'Unrecognised' End Select End Subroutine End Module Program select_type_example Use type_module Type(real_value) :: x = real_value('one',17.5) Type(integer_value) :: y = integer_value('two',42) Type, Extends(value_type) :: logical_value Logical x End Type Type(logical_value) :: z = logical_value('three',.false.) Call print(x) Call print(y) Call print(z) End |
|
![]() "one" is Real 17.5000000 "two" is Int 42 "three" is Unrecognised |