1! { dg-do run } 2! Test reading/writing of integer, real and character BOZ 3! non-integer BOZ are not valid in standard Fortran, however. 4! PR fortran/29625 5program real_boz 6 implicit none 7 integer(4) :: i,i2 8 real(4) :: r,r2 9 complex(4) :: z,z2 10 character :: c,c2 11 character(len=100) :: str,fmt 12 13 i = 43 14 r = 325.56 15 z = cmplx(14.456, 345342.456) 16 c ='g' 17 18 write(str,'(b0)') i 19 write(fmt,'(a,i0,a)') '(b',len_trim(str),')' 20 read(str,fmt) i2 21 if(i /= i2) call abort() 22 23 write(str,'(o0)') i 24 write(fmt,'(a,i0,a)') '(o',len_trim(str),')' 25 read(str,fmt) i2 26 if(i /= i2) call abort() 27 28 write(str,'(z0)') i 29 write(fmt,'(a,i0,a)') '(z',len_trim(str),')' 30 read(str,fmt) i2 31 if(i /= i2) call abort() 32 33 34 write(str,'(b0)') r 35 write(fmt,'(a,i0,a)') '(b',len_trim(str),')' 36 read(str,fmt) r2 37 if(r /= r2) call abort() 38 39 write(str,'(o0)') r 40 write(fmt,'(a,i0,a)') '(o',len_trim(str),')' 41 read(str,fmt) r2 42 if(r /= r2) call abort() 43 44 write(str,'(z0)') r 45 write(fmt,'(a,i0,a)') '(z',len_trim(str),')' 46 read(str,fmt) r2 47 if(r /= r2) call abort() 48 49 50 write(str,'(b0)') c 51 write(fmt,'(a,i0,a)') '(b',len_trim(str),')' 52 read(str,fmt) c2 53 if(c /= c2) call abort() 54 55 write(str,'(o0)') c 56 write(fmt,'(a,i0,a)') '(o',len_trim(str),')' 57 read(str,fmt) c2 58 if(c /= c2) call abort() 59 60 write(str,'(z0)') c 61 write(fmt,'(a,i0,a)') '(z',len_trim(str),')' 62 read(str,fmt) c2 63 if(c /= c2) call abort() 64 65end program real_boz 66 67