c===============================================================================
c=======================================================Programa AlmacenarEntero
c===============================================================================
C_______________________________________________________________________________
C
C     Este programa encuentra el primer numero entero que no se puede almacenar
C     exactamente en una variable del tipo REAL*4.
C
C     Nota: El programa se debe compilar sin optimizacion (opcion: -O0) para
C           impedir que el compilador lo corrija.
C_______________________________________________________________________________


      implicit integer*4 (i-n)
      implicit real*4 (a-h,o-z)
      logical  seguir

      parameter (MXINT=2*(2**30-1)+1)     !calculamos (2**31-1) sin overflow

      i=0
      seguir=.TRUE.

      do while(seguir)
        i=i+1
        x=i     !equivale a x=real(i)
        j=x     !equivale a j=int(x)
        seguir=(i.lt.MXINT).and.(i.eq.j)
      enddo

      if (i.ne.j) then
        write(6,100) i,x
  100   format(' Problema en el termino i = ',i20,/
     .         '                   ---> x = ',f30.9)
      else
        write(6,200)
  200   format(' Todos los enteros de tipo INTEGER*4'//
     .         ' caben en un real*4')
      endif

      read(5,'()')

      end
