C $Header: /u/gcmpack/MITgcm/eesupp/src/mdsfindunit.F,v 1.2 2006/08/22 18:57:53 ce107 Exp $
C $Name: $
#include "CPP_EEOPTIONS.h"
subroutine MDSFINDUNIT( iounit, mythid )
C OUT:
C iounit integer - unit number
C
C MDSFINDUNIT returns a valid, unused unit number for f77 I/O
C The routine stops the program is an error occurs in the process
C of searching the I/O channels.
C
C Created: 03/20/99 adcroft@mit.edu
implicit none
#include "EEPARAMS.h"
C Arguments
integer iounit
integer mythid
C Local
integer ii
logical op
integer ios
character*(max_len_mbuf) msgbuf
C ------------------------------------------------------------------
C Sweep through a valid range of unit numbers
iounit=-1
do ii=9,999
if (iounit.eq.-1) then
inquire(unit=ii,iostat=ios,opened=op)
if (ios.ne.0) then
write(msgbuf,'(a,i2.2)')
& ' MDSFINDUNIT: inquiring unit number = ',ii
call PRINT_MESSAGE( msgbuf, standardmessageunit,
& SQUEEZE_RIGHT , mythid)
write(msgbuf,'(a)')
& ' MDSFINDUNIT: inquire statement failed!'
call PRINT_ERROR( msgbuf, mythid )
stop 'ABNORMAL END: S/R MDSFINDUNIT'
endif
if (.NOT. op) then
iounit=ii
endif
endif
enddo
C Was there an available unit number
if (iounit.eq.-1) then
write(msgbuf,'(a)')
& ' MDSFINDUNIT: could not find an available unit number!'
call PRINT_ERROR( msgbuf, mythid )
stop 'ABNORMAL END: S/R MDSFINDUNIT'
endif
C ------------------------------------------------------------------
return
end