!Kompilieren mittels
!ifort aufg2.f90 -o aufg2  -L/usr/local/dislin/ -I/usr/local/dislin/ -I/usr/local/dislin/ifc/ -ldislin
!vorher Pfad richtig setzen:
!export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/dislin/
!
PROGRAM aufg2

USE DISLIN
IMPLICIT NONE
INTEGER :: i,iend
INTEGER :: status
REAL :: a,b,h,f,x0,xmax,xmin
REAL,ALLOCATABLE, DIMENSION(:) :: x,t

WRITE(6,*)'h=..?'
READ(5,*)h

WRITE(6,*)'x0=..?'
READ(5,*)x0

WRITE(6,*)'b=..?'
READ(5,*)b

a=0.

iend=INT((b-a)/h)
WRITE(6,*)iend

ALLOCATE(x(1:iend+1),STAT=status)
ALLOCATE(t(1:iend+1),STAT=status)

x=0.
t=0.
x(1)=x0
t(1)=0.
xmax=x(1)
xmin=x(1)

DO i=2,iend+1
   x(i)=x(i-1)+h*f(x(i-1),t(i-1))
   t(i)=t(i-1)+h
   IF(x(i).gt.xmax)THEN
      xmax=x(i)
   ELSE
      xmax=xmax
   ENDIF
   IF(x(i).lt.xmin)THEN
      xmin=x(i)
   ELSE
      xmin=xmin
   ENDIF
ENDDO

!---------------------
   
!!MOEGLICHE DATEI-AUSGABE
!OPEN(9,FILE="aufg2.dat")
!
!DO i=1,iend+1
!   WRITE(9,'(11f12.8,11f12.8)')t(i),x(i)
!ENDDO
!
!CLOSE(9)
!
!----------------------
!DISLIN-AUSGABE

CALL METAFL('XWIN')
CALL SCRMOD('REVERS')
CALL DISINI()

CALL GRAF(a,b+1.,a,(b+1.-a)/10.,xmin,xmax+1.,xmin,(xmax+1.-xmin)/10.)
CALL INCMRK (-1)
CALL MARKER(21)
CALL HSYMBL (20)
CALL CURVE(t,x,iend+1)
CALL ENDGRF()
CALL DISFIN()

DEALLOCATE(x,STAT=status)
DEALLOCATE(t,STAT=status)

!---------------------

END PROGRAM

!----------------------
FUNCTION f(x,t)
REAL :: f

f=t-x**2

RETURN
END FUNCTION