[Bug fortran/83153] New: Possible run time error in derived type io example - 2
ian at rhymneyconsulting dot co.uk
gcc-bugzilla@gcc.gnu.org
Sat Nov 25 12:28:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83153
Bug ID: 83153
Summary: Possible run time error in derived type io example - 2
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: ian at rhymneyconsulting dot co.uk
Target Milestone: ---
I get a similar error with the following sample code.
Here is the derived type module.
#####
module ch3702_person_module
implicit none
type :: person
character (len=30) :: name
integer :: age
real :: height
real :: weight
contains
procedure :: print_person
generic :: write(formatted) => print_person
procedure :: read_person
generic :: read(formatted) => read_person
end type person
contains
subroutine print_person(p,unit_number,iotype,vlist,iostat,iomsg)
implicit none
class (person) , intent(in) :: p
integer , intent(in) :: unit_number
character (len=*) , intent(in) :: iotype
integer , dimension(:) , intent(in) :: vlist
integer , intent(out) :: iostat
character (len=*) , intent(inout) :: iomsg
character (len=40) :: person_format
write(person_format,10)'(a',vlist(1),&
',' ,&
'i',vlist(2),&
',2x,' ,&
'f',vlist(3),&
'.',vlist(4),&
',2x,' ,&
'f',vlist(5),&
'.0)'
10 format(a,i2,&
a, &
a,i1,&
a, &
a,i1,&
a,i1,&
a, &
a,i1,&
a)
write (unit_number,fmt=person_format) &
p%name,p%age,p%height,p%weight
iostat=0
end subroutine print_person
subroutine read_person(p,unit_number,iotype,vlist,iostat,iomsg)
implicit none
class (person) , intent(inout) :: p
integer , intent(in) :: unit_number
character (len=*) , intent(in) :: iotype
integer , dimension(:) , intent(in) :: vlist
integer , intent(out) :: iostat
character (len=*) , intent(inout) :: iomsg
character (len=40) :: person_format
write(person_format,10)'(a',vlist(1),&
',2x,' ,&
'i',vlist(2),&
',2x,' ,&
'f',vlist(3),&
'.',vlist(4),&
',2x,' ,&
'f',vlist(5),&
'.0)'
10 format(a,i2,&
a, &
a,i1,&
a, &
a,i1,&
a,i1,&
a, &
a,i1,&
a)
read (unit_number,fmt=person_format) &
p%name,p%age,p%height,p%weight
iostat=0
end subroutine read_person
end module ch3702_person_module
#####
Here is the driving program.
#####
include 'ch3702_person_module.f90'
program ch3702
use ch3702_person_module
integer , parameter :: n=4
type (person) , dimension(n) :: p
integer :: i
open(unit=99,file='ch3701_input_file.txt')
do i=1,n
read( 99 , 10 ) p(i)
10 format( DT(30,3,4,2,3) )
write( * , 20 ) p(i)
20 format( DT(20,5,4,2,3) )
end do
end program ch3702
#####
Here is the input file.
I have repeated the inclusion of the file even though it is the same
as in the eariler example.
#####
Zahpod Beeblebrox 42 1.85 75
Ford Prefect 25 1.75 65
Arthur Dent 30 1.72 68
Trillian 30 1.65 45
#####
Here is the error message.
#####
gfortran_ch3702
At line 95 of file ch3702_person_module.f90 (unit = 99, file =
'ch3701_input_file.txt')
Fortran runtime error: End of record
Error termination. Backtrace:
Could not print backtrace: libbacktrace could not find executable to open
#0 0xffffffff
#1 0xffffffff
#2 0xffffffff
#3 0xffffffff
#4 0xffffffff
#5 0xffffffff
#6 0xffffffff
#7 0xffffffff
#8 0xffffffff
#9 0xffffffff
#10 0xffffffff
#11 0xffffffff
#12 0xffffffff
#13 0xffffffff
#14 0xffffffff
#15 0xffffffff
#####
I have two additional examples based on these derived type modules
that work when I only do the writes, with no reads.
#####
More information about the Gcc-bugs
mailing list