SUBROUTINE get_lun(lun) c PURPOSE c provide a way to assign fortran logical unit numbers (lun) for c programs to use. Up to 90 luns can be assigned. c c Logical unit numbers assigned are 11 -- 100 c c Once all the available luns have been assigned, further calls c return a value of -1 c c a second entry point, unget_lun makes a previously-assigned c lun once again available for use c c HISTORY c 97.03 Original code written by EAC c 98.06 Documentation expanded by EAC c c======================================================================= IMPLICIT NONE INTEGER*4 lun BYTE lunlist(90) /90*0/ SAVE lunlist INTEGER*2 i i=1 100 CONTINUE IF(lunlist(i) .EQ. 0) GOTO 200 IF(i .EQ. 90) GOTO 300 i= i+1 GOTO 100 200 CONTINUE lunlist(i)= 1 lun= i+10 RETURN 300 CONTINUE WRITE(6,*)'From subroutine get_lun: maximum number of ' WRITE(6,*)' assigned LUNs has been reached. Returning' WRITE(6,*)' a dummy value of -1.' lun= -1 RETURN ENTRY unget_lun(lun) lunlist(lun-10)= 0 RETURN END