fortran66のブログ

fortran について書きます。

array constructor triplet

暇つぶしにネットにあったコネクションマシンのCM-Fortranのマニュアルを見ていたら、array constructor の節に A = [1:10:2] に類する記述がありました。よもやと思って Intel Fortran で試したところ通るwww 前々から出来たらいいなと思っていた機能なので、今まで気づかなかったのかと焦りました。しかし調べてみるとF2008でも非標準の機能のようです。

ただDEC Fortran(Ver.5)の時代から非標準の拡張として備わっていたようです。この三連符はarray constructorの表記としてきわめて自然な気がするので、是非とも標準規格に入っていただきたいところです。

コネクションマシンのCM-FORTRANのF77からの拡張は、ほぼFortran90の配列操作の部分で、例題などを見てもそのままF90で通りそうな感じです。

http://www.sthmuseum.org/downloads/CM5/GettingStartedinCMFortran.pdf
http://people.csail.mit.edu/bradley/cm5docs/CMFortranProgrammingGuide.pdf
参考: Bryan Carpenter The Development of Data-Parallel Programming
http://www.hpjava.org/talks/beijing/hpf/introduction/introduction.html

実行結果

ソース・プログラム

program test
  implicit none
  integer :: a(6) = [1:12:2], n
  print *, a
  print *
  n = 10
  print *, product([1:n])
  stop
end program test