The MINLOC function returns the location of the first element in an array having the minimum value of all the elements identified by a mask.

## Syntax

MINLOC (array,dim,mask)

*array* is an INTENT(IN) array of type INTEGER or REAL.

*dim* is an INTENT(IN) scalar INTEGER in the range *dim* ≤ *n**n* is the rank of *array*. The corresponding actual argument must not be an optional dummy argument.

*mask* is an INTENT(IN) scalar or array of type LOGICAL, and must be conformable with *array*.

The result is of type default INTEGER.

If *dim* is present, the result is an array of rank n-1 where *n* is the rank of *array*. The result values are the locations having the minimum value along dimension *dim*.

If *dim* is absent, the result is an array of rank one whose element values are the values of the subscripts of the first element in *array* to have the minimum value of all of the elements of *array*.

If *mask* is present, the elements of *array* for which *mask* is false are not considered.

## Example

integer :: i6(6)=(/-14,3,0,-2,19,1/) integer :: i23(2,3)=reshape((/-14,3,0,-2,19,1/),shape(i23)) write(*,'(2i4)') i23 ! writes -14 3 ! 0 -2 ! 19 1 write(*,*) minloc(i6) ! writes 1 write(*,*) minloc(i23) ! writes 1 1 write(*,*) minloc(i23,1) ! writes 1 2 2 write(*,*) minloc(i23,2) ! writes 1 2 write(*,*) minloc(i23,1,(i23 < 10)) ! writes 1 2 2