Нет, код, который вы написали, недействителен. Общий блок - это просто именованная область памяти.
Fortran имеет «производные типы данных», которые очень похожи на структуры C. Объявление производного типа на Фортране выглядит так:
type float_struct
real :: f1, f2
end type
Теперь вы можете объявить другой производный тип, который содержит переменную этого типа:
type my_struct
integer :: int1, int2
type (float_struct) :: my_float_struct
end type
Обратите внимание, что это объявления типа, а не экземпляры переменной этого типа. Лучше всего поместить объявления в модуль, что позволит вам получить к ним доступ в подпрограмме, функции или программе. Например, предположим, что описанные выше объявления размещены в модуле с именем «my_structs_mod». Тогда вы можете использовать их так:
subroutine sub()
use my_structs_mod
type (my_struct) :: ms
ms%int1 = 42
...
end subroutine
Обратите внимание, что знак процента (%) аналогичен оператору точки (.) В C. Он позволяет получить доступ к данным, содержащимся в производном типе.