2011-10-23 8 views
0

Fortranには共通ブロックがありますか?構造体内に構造体があるように。例えば。Fortranの一般ブロック

integer int 1, int2 
common/Common1/int1, int2 
float f1, f2 
common/Common2/f1, f2 
save/Common2/, /Common1/ 

上記のコードはCOMMON1内で、そのCOMMON2を意味するのでしょうか?

答えて

0

いいえ、あなたが書いたコードは無効です。共通ブロックは単に名前付きメモリ領域です。

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 

注(。):次に、このようにそれらを使用することができます。