Exit

Statement Purpose

The EXIT statement provides a way to leave a do or do while loop before all the iterations of that loop are finished. This statement was introduced in FORTRAN 90 to cut back on the use of unconditional go to statements.

Rules and examples

The EXIT and cycle statements were introduced for the sole reason of replacing go to statements in do loops. These go to's occasionally resulted in some sloppy code and go to's that sometimes branched accidentally to the wrong statement. However, if used carefully there is not much difference between the use of go to's and exit statements. For instance, in FORTRAN 77 a do loop that had an early exit condition might have appeared like the following.
		    do 100 i=1,1000
		      xarray(i) = indata(i)*a
		      k=k+1
		      if(xarray(i).eq.0.or.k.eq.kmax) then 
		        go to 101
		      else if (i.gt.1) then
		        results(i)=xarray(i)+xarray(i-1)
		      else
		        results(i)=xarray(i)
		100 continue
		101 if(i.lt.1000) print *, 'Exited loop early.'
While in FORTRAN 90 the same loop can be written as
		    do 100 i=1,1000
		      xarray(i)=indata(i)*a
		      k = k+1
		      if (xarray(i).eq.0.or.k.eq.kmax) then 
		         exit
		      else if (i.gt.1)
		         results(i)=xarray(i)+xarray(i-1)
		      else
		         results(i)=xarray(i)
		      end if   
		100 continue
		    if (i.lt.1000) print *, 'Exited loop early'
However, there is one further feature of the EXIT statement that is worth noting. The EXIT statement can have a name of a loop placed after it. This can be invaluable if you have several loops imbedded inside of one another. In the following example this feature is used to locate the "first" instance of a match between two arrays.
      iloop: do i=1,n
         jloop: do j=1,m
            if (p1(i,j).eq.p2(i,j)) exit iloop
         end do jloop
      end do iloop

For additional information and examples see

lecture fifteen

example: charvr90.f

Up one level / Home


Written by Jason Wehr : jcw142@psu.edu and Maintained by John Mahaffy : jhm@cac.psu.edu