提问人:Valuex 提问时间:6/2/2013 最后编辑:milancurcicValuex 更新时间:6/4/2013 访问量:6572
缺少子例程的显式接口
Missing explicit interface for subroutine
问:
我只想将一个带有可变行的两列文本文件读入数组。 文本文件的第一列是以秒为单位的时间,第二列是温度。就像这样:
1.1 10
2.1 20
3.2 30
4.2 40
5.3 50
6.3 60
7.4 70
以下是我编写的代码:
module myData type line_info real :: time real :: temp end type type datalink type(line_info) :: time_temp type(datalink), pointer :: next end type type(line_info), allocatable :: FileInfoArr(:) end module program Console1 use myData implicit none ! Variables type(line_info),allocatable :: time_temp_arr(:) !real,allocatable :: File2Arr(:) character (len=80) :: FileFullName="C:\t.txt" call File2Arr(FileFullName,time_temp_arr) End Program Console1 Subroutine File2Arr(FileFullName,InfoArray) use myData character (len=80) :: FileFullName type(line_info),allocatable :: InfoArray(:) type(datalink), pointer :: head type(datalink), pointer :: p integer error,size,i logical alive ! check if file exists inquire(file=FileFullName, exist=alive) if(alive==0) then write(*,*) FileFullName, "doesn't exist." stop end if ! read file using pointer open(10, file=FileFullName, status="old", iostat=error) if(error/=0) then write(*,*) "open file fail!" stop end if allocate(head) nullify(head%next) p=>head size=0 !read(10,"(A80)") tempstr do while(.true.) read(10, fmt=*, iostat=error) p%time_temp if(error/=0) exit size=size+1 allocate(p%next, stat=error) ! add next line if(error/=0) then write(*,*) "Out of memory!" stop end if p=>p%next nullify(p%next) end do !save link info into an array allocate(InfoArray(size)) p=>head i=0 do while(associated(p%next)) i=i+1 InfoArray(i)=p%time_temp p=>p%next !write(*,*) FileInfoArr(i)%time, FileInfoArr(i)%temp end do End Subroutine
当我编译它时,我得到了这个:
错误 #8055:该过程具有一个虚拟参数,该参数具有 ALLOCATABLE、ASYNCHRONOUS、OPTIONAL、POINTER、TARGET、VALUE 或 VOLATILE 属性。原始源中缺少所需的显式接口。[TIME_TEMP_ARR]
关于如何修复此错误的任何想法,感谢您的任何帮助。
答:
3赞
Kyle Kanos
6/2/2013
#1
将子例程放在模块内(并删除该子例程内的行)。它为我编译并运行。File2Arr
MyData
use mydata
1赞
Stefan
6/4/2013
#2
或者,除了将子例程添加到模块中,也可以使用关键字将其直接放入程序中(此处也可以删除子例程中的行)。File2Arr
MyData
CONTAINS
use mydata
评论