Fortranのmaxloc関数でハマった。

Fortranのmaxloc関数でハマった。maxlocとは

配列中のすべての要素,配列中の要素の組,または配列の指定された次元中の要素の最大値の位置を返します。

http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/az/az08_09.htm

という関数らしいので、便利そうだと思っていたのだが。。。
位置は返すけど、indexは返さないんですね

program mx
  integer,dimension(8   ) :: var1 = (/1,2,3,4,2,8,3,4 /) !  indexは1〜8
  integer,dimension(0:7) :: var2                                       !  indexは0〜7
  var2 = var1
  print *,var1
  print *,var2
  print *,repeat("-",256)
  print *,maxloc(var1,1),var1(maxloc(var1,1))
  print *,maxloc(var2,1),var2(maxloc(var2,1))
end program mx

結果:

           1           2           3           4           2           8           3           4
           1           2           3           4           2           8           3           4
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
           6           8
           6           3

添字が1から始まるとは限らないんだから、これはまずいでしょ。
位置という表現は不正確。せめて、注意書きが欲しい。

過去のコードとの互換性もわかりますけど、deprecatedにして新しい関数作ってくださいよ。