問合せ組込み関数 (総称):配列またはスカラ引数の形状を返します。
形式
result = SHAPE (source [, kind])
source
(入力) 任意のデータ型のスカラまたは配列。これは大きさ引継ぎ配列,空状態のポインタ,または割り付けられていない割付け配列であってはなりません。
kind
(省略可能,入力) スカラ整数初期値式。
結果
結果は,source の次元数と等しい大きさを持つ,次元数 1 の基本整数配列です。kind が存在する場合,結果の種別パラメタは kind によって指定されたものになります。kind が存在しなければ,結果のの種別パラメタは基本整数型の種別パラメタになります。プロセッサーが結果の種別で結果の値を表現できない場合,結果は不定になります。
結果の値は source の形状です。
整数の大きさを指定するコンパイラ・オプションの設定は,この関数の結果に影響します。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
SHAPE (2) の値は,大きさがゼロの次元数 1 の配列です。
B が B (2:4, -3:1) と定義されている場合,SHAPE (B) の値は (3, 5) となります。
以下に他の例を示します。
INTEGER VEC(2) REAL array(3:10, -1:3) VEC = SHAPE(array) WRITE(*,*) VEC ! 8 5 を出力します。 END ! ! 選別値が配列と形状適合かどうか検証します。 REAL, ALLOCATABLE :: A(:,:,:) LOGICAL, ALLOCATABLE :: MASK(:,:,:) INTEGER B(3), C(3) LOGICAL conform ALLOCATE (A(5, 4, 3)) ALLOCATE (MASK(3, 4, 5)) ! MASK と A が割り付けられているかどうか検証します。 ! 割り付けられていれば,それらが同じ形状(形状適合)であることを検証します。 IF(ALLOCATED(A) .AND. ALLOCATED(MASK)) THEN B = SHAPE(A); C = SHAPE(MASK) IF ((B(1) .EQ. C(1)) .AND. (B(2) .EQ. C(2)) & .AND. (B(3) .EQ. C(3))) THEN conform = .TRUE. ELSE conform = .FALSE. END IF END IF WRITE(*,*) conform ! F を出力します。 END