Вот пример программы использования производного типа:
TYPE mytype
INTEGER,DIMENSION(3) :: ints
REAL,DIMENSION(5) :: floats
CHARACTER,DIMENSION(3) :: chars
ENDTYPE mytype
TYPE(mytype) :: a
a%ints=[1,2,3]
a%floats=[1,2,3,4,5]
a%chars=['a','b','c']
WRITE(*,*)a
END
Вывод:
1 2 3 1.000000 2.000000
3.000000 4.000000 5.000000 abc
РЕДАКТИРОВАТЬ: Согласно предложению Джонатана Дурси:
Чтобы иметь массив, в котором каждый элемент имеет элементы int, float и char, вы должны сделать что-то вроде этого:
TYPE mytype
INTEGER :: ints
REAL :: floats
CHARACTER :: chars
ENDTYPE mytype
TYPE(mytype),DIMENSION(:),ALLOCATABLE :: a
ALLOCATE(a(10))
Затем вы будете ссылаться на ваши элементы как, например, a(i)%ints
, a(i)%floats
, a(i)%chars
.Соответствующий ответ дан в Выделить динамический массив с взаимозависимыми измерениями .