]> gcc.gnu.org Git - gcc.git/blame - gcc/testsuite/gfortran.dg/namelist_14.f90
decl.c (gfc_match_old_kind_spec,match_type_spec): Use gfc_std_notify to report nonsta...
[gcc.git] / gcc / testsuite / gfortran.dg / namelist_14.f90
CommitLineData
29dc5138
PT
1!{ dg-do run }
2! Tests various combinations of intrinsic types, derived types, arrays,
3! dummy arguments and common to check nml_get_addr_expr in trans-io.c.
4! See comments below for selection.
5! provided by Paul Thomas - pault@gcc.gnu.org
6
7module global
8 type :: mt
9 integer :: ii(4)
10 end type mt
11end module global
12
13program namelist_14
14 use global
15 common /myc/ cdt
16 integer :: i(2) = (/101,201/)
17 type(mt) :: dt(2)
18 type(mt) :: cdt
df8652dc 19 real(kind=8) :: pi = 3.14159_8
29dc5138
PT
20 character*10 :: chs="singleton"
21 character*10 :: cha(2)=(/"first ","second "/)
22
23 dt = mt ((/99,999,9999,99999/))
24 cdt = mt ((/-99,-999,-9999,-99999/))
25 call foo (i,dt,pi,chs,cha)
26
27contains
28
29 logical function dttest (dt1, dt2)
30 use global
31 type(mt) :: dt1
32 type(mt) :: dt2
33 dttest = any(dt1%ii == dt2%ii)
34 end function dttest
35
36
37 subroutine foo (i, dt, pi, chs, cha)
38 use global
39 common /myc/ cdt
df8652dc 40 real(kind=8) :: pi !local real scalar
29dc5138
PT
41 integer :: i(2) !dummy arg. array
42 integer :: j(2) = (/21, 21/) !equivalenced array
43 integer :: jj ! -||- scalar
44 integer :: ier
45 type(mt) :: dt(2) !dummy arg., derived array
46 type(mt) :: dtl(2) !in-scope derived type array
47 type(mt) :: dts !in-scope derived type
48 type(mt) :: cdt !derived type in common block
49 character*10 :: chs !dummy arg. character var.
50 character*10 :: cha(:) !dummy arg. character array
51 character*10 :: chl="abcdefg" !in-scope character var.
52 equivalence (j,jj)
53 namelist /z/ dt, dtl, dts, cdt, j, jj, i, pi, chs, chl, cha
54
55 dts = mt ((/1, 2, 3, 4/))
56 dtl = mt ((/41, 42, 43, 44/))
57
4cc233c4 58 open (10, status = "scratch", delim='apostrophe')
29dc5138
PT
59 write (10, nml = z, iostat = ier)
60 if (ier /= 0 ) call abort()
61 rewind (10)
62
63 i = 0
64 j = 0
65 jj = 0
66 pi = 0
67 dt = mt ((/0, 0, 0, 0/))
68 dtl = mt ((/0, 0, 0, 0/))
69 dts = mt ((/0, 0, 0, 0/))
70 cdt = mt ((/0, 0, 0, 0/))
71 chs = ""
72 cha = ""
73 chl = ""
74
75 read (10, nml = z, iostat = ier)
76 if (ier /= 0 ) call abort()
77 close (10)
78
79 if (.not.(dttest (dt(1), mt ((/99,999,9999,99999/))) .and. &
80 dttest (dt(2), mt ((/99,999,9999,99999/))) .and. &
81 dttest (dtl(1), mt ((/41, 42, 43, 44/))) .and. &
82 dttest (dtl(2), mt ((/41, 42, 43, 44/))) .and. &
83 dttest (dts, mt ((/1, 2, 3, 4/))) .and. &
84 dttest (cdt, mt ((/-99,-999,-9999,-99999/))) .and. &
85 all (j ==(/21, 21/)) .and. &
86 all (i ==(/101, 201/)) .and. &
87 (pi == 3.14159_8) .and. &
88 (chs == "singleton") .and. &
89 (chl == "abcdefg") .and. &
90 (cha(1)(1:10) == "first ") .and. &
91 (cha(2)(1:10) == "second "))) call abort ()
92
93 end subroutine foo
94end program namelist_14
This page took 0.358451 seconds and 5 git commands to generate.