c $Header: /usr/people/flittner/radtran/tomrad/pv2.2/src/RCS/get_lun.f,v 2.22 2000/08/30 16:38:09 flittner Exp $ subroutine get_lun (ivalue) C======================================================================C C C C SUBROUTINE : GET_LUN C C C C PURPOSE: To keep logical unit numbers straight, and issues new C C ones when necessary. The entry point FREE_LUN closes C C file and allows the logical unit number to be reused. C C C C USE: C C CALL GET_LUN (IUNIT) C C CALL FREE_LUN (IUNIT) C C C C PARAMETERS : C C C C IUNIT --- In GET_LUN, it is the returned logical unit C C number. In FREE_LUN, it is the input LUN to C C close and to be reused. C C C C SOURCE: DONALD J. RICHARDSON C C HUGHES STX C C C C LANGUAGE: FORTRAN 77 C C C C DATE STARTED : September 9, 1994 C C C C C LATEST REVISION: September 12, 1994 C C C C C C======================================================================C implicit none integer*4 min_lun, max_lun parameter (min_lun = 10, max_lun=100) logical open_stat integer*4 ivalue integer*4 i do i = min_lun, max_lun inquire (i, opened = open_stat) if (.not. open_stat) then ivalue = i return end if end do write (0,*) 'All the Logical Unit Numbers between ',min_lun, * ' and ', max_lun, ' are all in use.' ivalue = -1 return entry free_lun (ivalue) close (ivalue) return end