fortran66のブログ

fortran について書きます。

部分配列の代入と、DO..LOOPの代入の微妙に異なる点

重なった領域をコピーする場合、部分配列の代入は単純なDO..LOOPとは動作が異なります。

■実行結果

■ソース・プログラム

配列生成子にF2003の[,]を使いました。F90の場合はそれぞれ(/,/)となります。

PROGRAM test
  IMPLICIT NONE
  INTEGER :: i, ia(10)
  
  ia = [( i,  i = 1, 10 )] 
  PRINT '(10i3)', ia
  ia(2:10) = ia(1:9)
  PRINT '(10i3/)', ia
  
  
  ia = [( i,  i = 1, 10 )] 
  PRINT '(10i3)', ia
  DO i = 2, 10
   ia(i) = ia(i - 1)
  END DO
  PRINT '(10i3/)', ia

  STOP
END PROGRAM test