PROGRAM ARRAY3 c c This Program contains a misuse of the ALLOCATE statement c Once you have set space for an array, you can't use ALLOCATE to c stretch the size as more space is needed. c c John Mahaffy 2/2/95 c IMPLICIT NONE INTEGER I,J,IERR,N,NDAT c c Declare A, B, and C to be arrays to be ALLOCATABLE c REAL, ALLOCATABLE :: A(:),B(:),C(:) REAL CSUM,CMAX,CMIN,AVERAGE c c NDAT=10 ALLOCATE (A(1:NDAT),B(NDAT),C(NDAT)) A(1:NDAT) = (/( I, I=1,NDAT)/) B(1:NDAT) = (/(I/3, I=1,NDAT)/) PRINT *, 'ERROR FLAG =', IERR C(1:NDAT)=A(1:NDAT)+B(1:NDAT) CSUM=SUM(C(1:NDAT)) CMIN=MINVAL(C(1:NDAT)) CMAX=MAXVAL(C(1:NDAT)) C AVERAGE=CSUM/NDAT WRITE(*,'(//,'' RESULTS FOR ELEMENTS 1 THROUGH '',I3,'' OF C'')') & NDAT WRITE(6,2002)AVERAGE,CMIN,CMAX 2002 FORMAT(' AVERAGE OF SELECTED ELEMENTS IN C = ', F8.3,/, & ' MINIMUM OF SELECTED ELEMENTS IN C = ', F8.3,/, & ' MAXIMUM OF SELECTED ELEMENTS IN C = ', F8.3) WRITE(6,2003) C(1:NDAT) 2003 FORMAT(' C = ',/,(1P,8E10.2)) c N=NDAT NDAT=NDAT+5 ALLOCATE (A(1:NDAT),B(NDAT),C(NDAT),STAT=IERR) PRINT *, 'ERROR FLAG =', IERR C(N+1:NDAT)=5.0 WRITE(6,2003) C(1:NDAT) STOP END