我有一个旧的Fortran程序用于从文本文件读取记录。这些记录的格式如下:Fortran读多行记录
record_type field1 field2 ... fieldN ;
这些记录可能分散在多行上,即字符;显示该记录已完成。旧代码是:
2 read(data,"(a130)",end=3)line
shift=adrec(nbrec)-1
read(line,*,end=1)typrec(nbrec),(field(shift+i),i=1,65)
1 do
do j=shift+1,shift+i-1
k=index(field(j),';')
if(k .ne. 0)then
if(k .eq. 1)then
adrec(nbrec+1)=j
else
field(j)(k:)=''
adrec(nbrec+1)=j+1
endif
go to 2
endif
endo
read(data,"(a130)")line
read(line,*,end=1)(field(shift+i),i=1,65)
enddo
3 continue
此代码与英特尔编译器(ifort)原样工作。随着gfortran它失败!第一个问题是,第三行的隐式读取使用ifort时,我等于实际读取的字段数,而在gfortran中它总是给出65。第二个问题是,在相同的隐式读取中,使用ifort , 人物 ;阅读为正常字段,但gfortran被忽略。
任何人都可以帮我解决这两个问题吗?任何其他想法都可以用来代替所有的代码也是受欢迎的。
更换码好想法依靠什么类型的数据更清楚地了解你正在阅读。我猜record_type是某种代码(整数?字符?),这些字段是否为真?整数?混合物 ? record_type确定记录中的字段类型和字段数量吗? –
record_type和字段都是字符(character * 20 typrec(mxrecord),field(mxfield))。根据记录的种类,通过阅读(字段(i),*)var来处理它们。所以,var是实数,整数或char,这取决于我是什么类型的记录。 – electrique