module lmdz_new_unit IMPLICIT NONE; PRIVATE PUBLIC new_unit CONTAINS ! Returns an existing unit id that isn't already opened SUBROUTINE new_unit(unit) INTEGER, INTENT(OUT):: unit LOGICAL opened, exist unit = 0 DO INQUIRE(unit=unit, opened=opened, exist=exist) IF (exist .AND. .NOT. opened) RETURN unit = unit + 1 END DO END SUBROUTINE new_unit END MODULE lmdz_new_unit