fortran66のブログ

fortran について書きます。

配列シフト関数の使用例

ソース・プログラム

    program shift
      implicit none
      integer, parameter :: n = 3
      integer :: ia(n, n)
      integer :: i, j
      character(len = 30) :: fmt
      write(fmt, *) '(', n, 'i5)'
      forall(i = 1:n, j = 1:n) ia(i, j) = i - 1 + 10 * (j - 1)
      print fmt, ia
      print *, '------------------'
      print fmt, cshift(ia, shift = -[0, 1, 2], dim = 2)
      print *, '------------------'
      print fmt, eoshift(ia, shift = 2, boundary = [999, 888, 777], dim = 1)
      stop
    end program shift

実行結果

    0    1    2
   10   11   12
   20   21   22
 ------------------
    0   21   12
   10    1   22
   20   11    2
 ------------------
    2  999  999
   12  888  888
   22  777  777
続行するには何かキーを押してください . . .