-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Labels
Description
Consider the following code:
module m
type base
character(7) :: c(3) = (/ 'xxxxxxx', 'xxxxxxx', 'xxxxxxx' /)
end type
type nodtio
character(7) :: c(3) = (/ 'xxxxxxx', 'xxxxxxx', 'xxxxxxx' /)
end type
end module
program character002
use m
interface read(formatted)
subroutine readformatted(dtv, unit, iotype, v_list, iostat, iomsg )
import base
class(base), intent(inout) :: dtv
integer, intent(in) :: unit
character(*), intent(in) :: iotype
integer, intent(in) :: v_list(:)
integer, intent(out) :: iostat
character(*), intent(inout) :: iomsg
end subroutine
end interface
integer :: stat
character(150) :: msg = ''
type(base) :: b1
type(nodtio) :: b2
namelist /n1/ b1, b2
open (1, file='character002.1', form='formatted', access='sequential' )
read (1, n1, iostat = stat, iomsg = msg)
print*, b2%c(1), "<"
print*, b2%c(2), "<"
print*, b2%c(3), "<"
end program
subroutine readformatted (dtv, unit, iotype, v_list, iostat, iomsg)
use m, only: base
class(base), intent(inout) :: dtv
integer, intent(in) :: unit
character(*), intent(in) :: iotype
integer, intent(in) :: v_list(:)
integer, intent(out) :: iostat
character(*), intent(inout) :: iomsg
type(base) :: dummy
namelist /dtio/ dummy
read( unit, dtio, iostat = iostat)
dtv%c = dummy%c
end subroutine
The input file character002.1
is
&N1
b1= &dtio
dummy = 'ab
cdefg','
ABC
DE' !<- b1 should be abcdefg, ABCDE__, xxxxxxx
/
b2 = "ABCDEFG
","
abc" !<- b2 should be ABCDEFG abc____, xxxxxxx
/
&N2
b3= &dtio
dummy = "abcdefg","ABCDE"
/
b4 = "ABCDEFG","abc"
/
Flang outputs
> a.out
xxxxxxx<
xxxxxxx<
xxxxxxx<
Where both gfortran and XLF outputs
> a.out
ABCDEFG<
abc <
xxxxxxx<