いつの間にか、intel fortran での maxloc, minloc の mask 全部不成立時のデフォでの挙動が変わっていてちょっと焦りました。
If array has size zero, or every element of mask has the value .FALSE., the value of the result is controlled by compiler option assume [no]old_maxminloc, which can set the value of the result to either 1 or 0.
コンパイラ・オプションで/assume:noold_maxminlocとすると、以下のプログラムで 0 が返されます。
program test implicit none integer :: ia(5), i do i = 1, 5 ia(i) = i end do print *, maxloc(ia, mask = .false.) end program test
規格によると、Fortran2003 では 0 を返すことになっていますが、それ以前は処理系依存だった模様です。
しばらくぶりにリコンパイルして実行したら結果が変わったので困惑しました。