MINLOC
copyright

green dotMINLOC

書式 MINLOC(ARRAY[,MASK])
機能 MINLOCは同様に、最小の値を調べる。
(1)MAXLOCでMASKを省略した場合、結果は、ARRAYのすべての要素の 最大値に等しい要素の各次元の添字値を要素とする1次元配列とする。
返されたi番目の添字は、1からeiまでの範囲の値とする。
ここでeiは、ARRAYのi番目の次元の大きさとする。
2個以上の要素が最大値になるとき、添字が返される要素は配列要素順序で 最初の要素とする。
ARRAYの大きさが0であるとき、結果の値はコンパイラ依存とする。
(2)MAXLOCでMASKを指定した場合、結果は、MASK中の真である要素に対応する ARRAYのすべての要素の最大値に等しい要素の各次元の添字値を要素とする 1次元配列とする。
返されたi番目の添字は、1からeiの範囲の値とする。
ここでeiは、ARRAYのi番目の次元の大きさとする。
2個以上の要素が最大値になるとき、添字が返される要素は配列要素順序で 最初の要素とする。
要素がないとき(すなわち、ARRAYの大きさが0であるか、 またはMASKのすべての要素の値が偽であるとき)。
結果の値はコンパイラ依存とする。
(3)コンパイラが結果のある要素の値を基本整数型で表現することができないとき、 その要素は不定とする。
引数
ARRAY :整数型,実数型の配列
MASK
(省略可能)
:論理型でARRAYと同じ形状である
戻り値 型、種別型パラメタは基本整数型である。
形状は、ARRAYの次元数に等しい大きさの1次元配列とする。

green dotサンプルプログラム

整数2,3,4,8の数値で最大値と最小値をもっている最初の要素の位置a,bを調べる。
次に6より小さい値で最大値をもっている最初の要素の位置cを調べる。
    INTEGER,DIMENSION(4) :: vect
    INTEGER,DIMENSION(1) :: a,b,c
    LOGICAL,DIMENSION(4) :: mask
    vect=(/2, 3, 4, 8/)
    a=MAXLOC(vect)      ! vect中の最大値8の位置4
    b=MINLOC(vect)      ! vect中の最小値2の位置1
    mask=vect<6         ! vectの要素が6より小さいか?
    c=MAXLOC(vect,mask) ! vect中の6より小さい値の最大値4の位置3
    WRITE(*,*) a,b,c 

実行例
4 1 3
line-end