おそらくこれは本当にばかげた質問であり、実際には別の方法でこれを行う必要がありますが、次のようなものがある可能性はありますか
type food
INTEGER :: NBananasLeft(NBananaTypes)
INTEGER :: NApplesLeft(NAppleTypes)
end type food
NBananaTypesとNAppleTypesはコンパイル時に不明です。
Fortran 90-95の場合:
type food
INTEGER,pointer :: NBananasLeft(:)
INTEGER,pointer :: NApplesLeft(:)
end type food
を使用して自分で配列を割り当てる必要がありますallocate(var%NBananasLeft(NBananaTypes)))
。
Fortran 2003の場合:
type food
INTEGER,allocatable :: NBananasLeft(:)
INTEGER,allocatable :: NApplesLeft(:)
end type food
また、を使用してアレイを自分で割り当てる必要がありますallocate(var%NBananasLeft(NBananaTypes)))
が、メモリリークの可能性を回避できます。
パラメータ化されたデータ型によるFortran2003では(これをサポートしているコンパイラはごくわずかです)。
type food(NBananaTypes,NAppleTypes)
integer,len :: NBananaTypes,NAppleTypes
INTEGER :: NBananasLeft(NBananaTypes)
INTEGER :: NApplesLeft(NAppleTypes)
end type food