diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2015-01-23 03:37:30 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2015-01-23 03:37:30 +0000 |
commit | bae420fcdb5715f37cb519f898152d8c4a6c394d (patch) | |
tree | 83241f0136b66605d743ffdb091e1f7bf6f7321e /gcc | |
parent | 20056f6002a17c609321d27ecfa6c52fe73e77a1 (diff) | |
download | gcc-bae420fcdb5715f37cb519f898152d8c4a6c394d.zip gcc-bae420fcdb5715f37cb519f898152d8c4a6c394d.tar.gz gcc-bae420fcdb5715f37cb519f898152d8c4a6c394d.tar.bz2 |
re PR fortran/61933 (Inquire on internal units)
2015-01-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/61933
* gfortran.dg/make_unit.f90: New test.
From-SVN: r220026
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/make_unit.f90 | 34 |
2 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a0ee68c..9207685 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2015-01-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/61933 + * gfortran.dg/make_unit.f90: New test. + +2015-01-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/61933 * gfortran.dg/negative_unit_int8.f: Update. 2015-01-22 Jeff Law <law@redhat.com> diff --git a/gcc/testsuite/gfortran.dg/make_unit.f90 b/gcc/testsuite/gfortran.dg/make_unit.f90 new file mode 100644 index 0000000..ffeb5f1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/make_unit.f90 @@ -0,0 +1,34 @@ +! { dg-do run } +! PR61933, useing inquire to get available units. +program makeunit +integer :: ic, istat, nc +logical :: exists, is_open + +if (get_unit_number("foo0.dat") .ne. 10) call abort +if (get_unit_number("foo1.dat") .ne. 11) call abort +if (get_unit_number("foo2.dat") .ne. 12) call abort +if (get_unit_number("foo3.dat") .ne. 13) call abort + +close(unit=12, status="delete") +if (get_unit_number("foo2.dat") .ne. 12) call abort() +close(unit=10, status="delete") +close(unit=11, status="delete") +close(unit=12, status="delete") +close(unit=13, status="delete") + +contains + function get_unit_number(file_name) result(unit_number) + character(len=*), intent(in), optional :: file_name + integer :: unit_number + ! get a new unit number + do unit_number=10,100 + inquire (unit=unit_number,exist=exists,opened=is_open,iostat=istat) + if (exists.and.(.not.is_open).and.(istat == 0)) then + open(unit=unit_number, file=file_name) + return + endif + end do + unit_number = -1 + end function get_unit_number + +end program makeunit |