ナビゲーション:前へ 上へ 次へ
10.3 データ実体の宣言 [大部分 6.0]
-
配列の最大次元数が7から15に変更されました。
例えば
REAL array(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)
は15次元の配列を宣言します。 - [3.0] 64ビット整数サポートが必須です。SELECTED_INT_KIND(18)の結果は有効な整数種別番号です。
-
配列の名前付き定数(PARAMETER)の形状を定義式より引き継ぐことができます。(推定形状配列)
書式は配列のすべての次元の上限をアスタリスクで指定します。
例えば
REAL,PARAMETER :: idmat3(*,*) = Reshape( [ 1,0,0,0,1,0,0,0,1 ], [ 3,3 ] ) REAL,PARAMETER :: yeardata(2000:*) = [ 1,2,3,4,5,6,7,8,9 ]
ではidmat3の上下限が(1:3,1:3)でありyeardataの上下限が(2000:2008)です。 -
組込みの型指定を括弧内に含めることにより簡単に TYPE キーワードを用いた組込型を宣言することが可能です。
例えば
TYPE(REAL) x TYPE(COMPLEX(KIND(0d0))) y TYPE(CHARACTER(LEN=80)) z
は(よりわかりにくい点を除き)以下と同等です。REAL x COMPLEX(KIND(0d0)) y CHARACTER(LEN=80) z
- この拡張によりDOUBLEPRECISIONという名前の拡張型を定義することが許されなくなりました。
-
[5.3]
型束縛手続宣言文が複数の型束縛手続を宣言できるようになりました。
例)PROCEDURE,NOPASS :: a PROCEDURE,NOPASS :: b=>x PROCEDURE,NOPASS :: c
は以下のように書くことができます。PROCEDURE,NOPASS :: a, b=>x, c
-
[5.3 C_ASSOCIATED、7.0 C_LOC及びC_FUNLOC]
宣言式でISO_C_BINDINGモジュールのC_ASSOCIATED、C_LOC、及びC_FUNLOC関数が使用できるようになりました。
たとえば、TYPE(C_PTR)の変数Xと、TARGET属性を持つ別の相互運用可能な変数Yが与えられた場合、
INTEGER workspace(MERGE(10,20,C_ASSOCIATED(X,C_LOC(Y))))
と記述できるようになり、CポインターXがYに関連付けられている場合はworkspaceが10要素分の大きさとなり、それ以外の場合は20要素分の大きさとなります。 -
[7.0]
演算が宣言関数によって与えられる場合、宣言式でユーザー定義の演算が行えるようになりました。
(宣言関数は仮手続き引数を持たない、文関数以外の純粋な関数、もしくは内部関数でなければなりません。)
例えば以下の引用仕様宣言で
INTERFACE OPERATOR(.user.) PURE INTEGER FUNCTION userfun(x) REAL,INTENT(IN) :: x END FUNCTION END INTERFACE
ユーザー定義演算子.user.は、次のように宣言式で使用できます。LOGICAL mask(.user.(3.145))
これはオーバーロードされた組込み演算子とユーザー定義演算子に適用されることに注意してください。