! cyclic permutation SUBROUTINE cyclic( q ) IMPLICIT NONE INTEGER, POINTER :: q(:) q = CSHIFT( q, 1 ) ! 要素を循環させる組込み関数 END SUBROUTINE cyclic ! ! main ! PROGRAM main IMPLICIT NONE INTEGER, POINTER :: p(:) INTEGER, TARGET :: x(1:5) = (/ 1, 2, 3, 4, 5 /) INTERFACE ! この場合,引数の属性を教えておく必要がある SUBROUTINE cyclic( q ) INTEGER, POINTER :: q(:) END SUBROUTINE cyclic END INTERFACE PRINT '(1X, 5I4)', x ! 1 2 3 4 5 が出力される p => x CALL cyclic(p) PRINT '(1X, 5I4)', x ! 2 3 4 5 1 が出力される END PROGRAM main