ナビゲーション:前へ 上へ 次へ
2.2 型付き割付け
ALLOCATE 文で type-spec の指定が可能になりました。これにより割付 けに際して動的な型(と必要ならば型パラメタ)の指定が可能です。 type-spec は割付け並びの前に指定され2つのコロンで区切られます。例えば ET が T の拡張をしている場合に
CLASS(t),POINTER :: a(:) ALLOCATE(et::a(100))は動的な型 ET を持つように A を割付けます。 ALLOCATE 文内のtype-spec は構造型に対する TYPE キーワード を省略する点に注意して下さい(TYPE IS 文と CLASS IS 文の場合と 同様です)。
無限多相オブジェクトは組込み型を含むどのような型としても割付けできます。 例えば
CLASS(*),POINTER :: c,d ALLOCATE(DOUBLE PRECISION::c) READ *,n ALLOCATE(CHARACTER(LEN=n)::d)は倍精度実数となるように C を割付け、長さ N の CHARACTER となるように D を割付けます。
型付き割付けは多相変数及び無指定長 (LEN=:) の CHARACTER 変数 を割付ける場合にのみ有用です。 多相変数ではない変数に対しての場合、type-spec は宣言された型を指定しなければならず、 更にその際にもし無指定長ではない CHARACTER 型であった場合に同じ文字列長を指定しなくてはなりません。 また割付けオブジェクトがアスタリスクで指定される文字長を持つ仮引数でない限り、 文字長をアスタリスク(CHARACTER(LEN=*))として指定することはできません(その反対も然りです)。
最後に type-spec は一つしかないので、それは割付け並び中のすべての項目と整合性が取れていなくてはなりません。
ナビゲーション:前へ 上へ 次へ