PROGRAM C2115
IMPLICIT NONE
INTEGER :: Allocate_status=0
REAL , DIMENSION(:) , POINTER :: X
REAL , DIMENSION(1:10) , TARGET :: Y
INTEGER , PARAMETER :: SIZE=10000000
INTEGER :: I
  ALLOCATE(X(1:SIZE),STAT=Allocate_status)
  IF (allocate_status > 0) THEN
    PRINT *,' Allocate failed. Program ends.'
    STOP
  ENDIF
! initialise the memory that x points to
  DO I=1,SIZE
    X(I)=I
  END DO
! print out the first 10 values
  DO I=1,10
    PRINT *,X(I)
  END DO
! initialise the array y
  DO I=1,10
    Y(I)=I*I
  END DO
! print out y
  DO I=1,10
    PRINT *,Y(I)
  END DO
! x now points to y
  X=>Y
! print out what x now points to
  DO I=1,10
    PRINT *,X(I)
  END DO
! what has happened to the memory that x
! used to point to?
END PROGRAM C2115


