Co-array Fortran

Co-array Fortranは、Fortran 95/2003を並列化を目的として拡張した言語である。以前はF--としても知られ、Robert NumrichとJohn Reidによって開発された。
Co-array Fortranで記述されたプログラムではすべてのスレッドが非同期的に実行されるように扱われる。それぞれのスレッドは"イメージ"と呼ばれる自身のデータオブジェクトを持つ。また、Fortran 95での配列の構文が角括弧と添字を用いてイメージを指定できるように拡張されている。
ISOは2005年5月に次のFortranの標準規格(Fortran 2008)に対してCo-array Fortranを採用することを決定した。
LinuxアーキテクチャにおいてオープンソースのコンパイラでFortran 2008のCo-array Fortranに対応したのはG95が最初である。その他にもCrayなどいくつかの商用コンパイラは以前からCo-array Fortranをサポートしている。
例.
program Hello_World
 implicit none
 integer :: i ! Local variable
 character(len=20) :: name[*] ! scalar coarray
 ! 注意: "name[<index>]" はリモートのイメージ上の変数への
 ! アクセスであるのに対し "name" はローカル変数である
 ! イメージ1上のユーザーから名前の入力を受ける
 if (this_image() == 1) then
 write(*,'(a)',advance='no') 'Enter your name: '
 read(*,'(a)') name
 ! 他のイメージに名前の内容を分配する。
 do i = 2, num_images()
 name[i] = name
 end do
 end if
 sync all ! 確実に同期をとるためにバリアを設ける
 ! すべてノードで名前を表示する
 write(*,'(3a,i0)') 'Hello ',trim(name),' from image ', this_image()
end program Hello_world