! 例題 9-9 配列要素の循環的置換 [ポインタ引数 ] SUBROUTINE cyclic( q ) IMPLICIT NONE INTEGER, POINTER :: q( : ) q = CSHIFT( q, 1 ) ! 要素を循環させる組込み関数 END SUBROUTINE cyclic ! main PROGRAM ex9_9 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 ex9_9