いいえ、あなたが書いたコードは無効です。共通ブロックは単に名前付きメモリ領域です。
Fortranには、C構造体に非常に似ている「派生データ型」があります。 Fortranの派生型宣言は次のようになります。
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"という名前のモジュールに置かれているとします。パーセント記号(%)は、ドットに似ていることにそれはあなたが派生型に含まれているデータにアクセスすることができますC.でオペレータ
subroutine sub()
use my_structs_mod
type (my_struct) :: ms
ms%int1 = 42
...
end subroutine
注(。):次に、このようにそれらを使用することができます。