SHAPE

問合せ組込み関数 (総称):配列またはスカラ引数の形状を返します。

形式

result = SHAPE (source [, kind])

source
(入力) 任意のデータ型のスカラまたは配列。これは大きさ引継ぎ配列,空状態のポインタ,または割り付けられていない割付け配列であってはなりません。

kind
(省略可能,入力) スカラ整数初期値式。

結果

結果は,source の次元数と等しい大きさを持つ,次元数 1 の基本整数配列です。kind が存在する場合,結果の種別パラメタは kind によって指定されたものになります。kind が存在しなければ,結果のの種別パラメタは基本整数型の種別パラメタになります。プロセッサーが結果の種別で結果の値を表現できない場合,結果は不定になります。

結果の値は source の形状です。

整数の大きさを指定するコンパイラ・オプションの設定は,この関数の結果に影響します。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

SIZE

SHAPE (2) の値は,大きさがゼロの次元数 1 の配列です。

BB (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