Fortran Coder

标题: simply fortran 读入文件问题 [打印本页]

作者: kuba2333    时间: 2018-4-26 11:05
标题: simply fortran 读入文件问题
本人刚从powerstation转入SF,读文件的时候遇到了问题,同样代码在SF中不好使了,看了之前的一篇帖子http://bbs.fcode.cn/thread-1310-1-1.html 还是不知如何解决,请高手帮忙看看。


作者: fcode    时间: 2018-4-26 11:07
read(6,*) TS,XAA11,XAA12,XAA13,XAA22
是否应该为
read(6,*) TS(i),XAA11(i),XAA12(i),XAA13(i),XAA22(i)
作者: kuba2333    时间: 2018-4-26 11:12
fcode 发表于 2018-4-26 11:07
read(6,*) TS,XAA11,XAA12,XAA13,XAA22
是否应该为
read(6,*) TS(i),XAA11(i),XAA12(i),XAA13(i),XAA22(i) ...

感谢大大这么快回复,本来在power里是应该这样写的,SF里继续这样写的话,编译会出错。
==============================================================================
Generating Makefile... Okay
==============================================================================
Compiling .\HELLO.F90
.\HELLO.F90:34.21:

         READ(6,*) TS(i),XAA11(i),XAA12(i),XAA13(i),XAA22(i)         
                     1
Error: Syntax error in READ statement at (1)
Error(E42): Last command making (build\HELLO.o) returned a bad status
Error(E02): Make execution terminated

* Failed *
作者: fcode    时间: 2018-4-26 11:14
所有代码,复制粘贴,不截图
作者: kuba2333    时间: 2018-4-26 11:15
fcode 发表于 2018-4-26 11:14
所有代码,复制粘贴,不截图

OK
[Fortran] 纯文本查看 复制代码

PROGRAM MAIN

INTEGER I,J,K,FLAG
REAL*8 T,N,TH,TE,SITA,KB,P,R0,NA,CMA,CME,CJE,E1,E2,H,PAI,CK,CEE,X(4),KP1,KP2,AS,EXLEFT(4,4),B(4),DX(4),CUP1,CUP2,ZF(4),TOTAL,DENS,EE(4),HAN,\
       CPT,CUP3,CET,CEC,CED,CHV,CHT,DEBYE,B0,B1,ST,ST2,SQT,SQTH,Z0,Z1,ALB0,ALB1,CS,CON1,COL,COL1,COLL11(4,4),COLL12(4,4),COLL13(4,4),\
           COLL22(4,4),COLL14(4,4),COLL15(4,4),TS(298),XAA11(298),XAA12(298),XAA13(298),XAA22(298),XAA_111(298),XAA_112(298),XAA_113(298),\
           XAA_122(298),TS1(48),XEA11(48),XEA12(48),XEA22(48),XEA13(48),XIP,YIP11,YIP12,YIP13,XEE22,XEE23,XEE24,C00,C01,C02,C11,C12,C22,C10,\
           C20,C21,DETE,CC,ECDC,M(4),AHK(3,3),AHK1(4,4),DAHK,DAHK1,HVIC,BHK00(3,3),BHK01(3,3),BHK10(3,3),BHK11(3,3),BHK(6,6),BHK1(7,7),DBHK,\
           DBHK1,TDETH,DETHP,HTHC,THCE,RATA,RATG,BIDC(4,4),F(4,4),FT(4,4),DF,DFC(3,3),DDFC(4,4),ORDC(4,4),Z(4),TEMP(4),ALPHA(4),BATA,APDC(4,4),\
           FF(4,4),FF1(4,4),B33(4),B44(4),Y1(4),Y2(4),DDH1,DDH2,FAH1,FAH2,FAH3,FAE1,FAE2,FAE3,THCRH,THCRE,THCR,TTHC,P0,td        

        kb=1.38e-23
    Na=6.02e23
        CMA=6.628e-26  
        CME=9.1085e-31
        CJE=1.602e-19
        E1=15.76
        E2=27.62
        H=6.6e-34
        PAI=3.1415926
        CK=1.38e-23
        CEE=8.854D-12
        
  OPEN(1,FILE='MOLE FRACTION.DAT')           
  OPEN(2,FILE='COMP.DAT')         
  OPEN(3,FILE='DENS.DAT')
  OPEN(4,FILE='HAN.DAT')
  OPEN(5,FILE='CPT.DAT')
   

OPEN(6,FILE='DATA/HFD Ar-Ar.DAT')
      
           DO I=1,298
         READ(6,*) TS(i),XAA11(i),XAA12(i),XAA13(i),XAA22(i)         
       ENDDO
close(6)      

   17  FORMAT(1024E15.7)

WRITE(*,*)pai

END PROGRAM

作者: kuba2333    时间: 2018-4-26 11:18
fcode 发表于 2018-4-26 11:14
所有代码,复制粘贴,不截图

数据文件在此 HFD AR-AR closed.DAT (22.41 KB, 下载次数: 2)
作者: fcode    时间: 2018-4-26 11:24
看错误要先看第一个。你应该注意到还有前一个错误
Error: Line truncated at (1) [-Werror=line-truncation]

这说明你前面的代码该续行了。

Powerstation 不够严谨,所以超过132列的,也被允许。而 gfortran 严格一些,默认情况下,不允许每行超过132列的长度。

你有两种办法解决:
1. 调整前面定义语句的续行,使得每一行不超过132列。
2. 设置 simply fortran,使之允许 132 列。
方法是:Project,Options,Fortran,Non-standard Line Lenght,输入一个较大的数,比如9999, 然后 OK
如果你没创建工程的话, Project,add files,把源代码文件添加到工程。
然后 Project  , save project
最后 build

作者: kuba2333    时间: 2018-4-26 11:33
fcode 发表于 2018-4-26 11:24
看错误要先看第一个。你应该注意到还有前一个错误
Error: Line truncated at (1) [-Werror=line-truncation ...

啊?我的代码前面有续行的,在定义变量里面,编译的时候没有报这个错啊。。。
作者: kuba2333    时间: 2018-4-26 11:36
fcode 发表于 2018-4-26 11:24
看错误要先看第一个。你应该注意到还有前一个错误
Error: Line truncated at (1) [-Werror=line-truncation ...

我把允许列设为99999,可还是读入数据有问题。。
作者: fcode    时间: 2018-4-26 11:51
现在的问题还原来的问题一样吗?请详细描述,不要只说“有问题”

如果问题不一样了,请及时描述。
作者: fcode    时间: 2018-4-26 12:00
你的代码还有一些问题。
1. 不要使用10以下的通道号。把 Open(6 ,Read(6 , Close(6 这些,都改成16
2. 你读取的文件是 DATA/HFD Ar-Ar.DAT,但给的文件却是 HFD AR-AR closed.DAT ,请保持文件名一致。
作者: kuba2333    时间: 2018-4-26 14:46
fcode 发表于 2018-4-26 12:00
你的代码还有一些问题。
1. 不要使用10以下的通道号。把 Open(6 ,Read(6 , Close(6 这些,都改成16
2. 你 ...

多谢大佬指点,按照你说的把通道号改为16就好了,不过这是为啥呢?
作者: kuba2333    时间: 2018-4-26 14:49
fcode 发表于 2018-4-26 12:00
你的代码还有一些问题。
1. 不要使用10以下的通道号。把 Open(6 ,Read(6 , Close(6 这些,都改成16
2. 你 ...

还有个小问题,怎么显示行号?
作者: kyra    时间: 2018-4-26 14:52
语法规定,10以下通道号为编译器所保留。
gfortran使用6作为标准输出(一般为屏幕),你执行了 close(6),屏幕就不能输出了。

显示行号,Options,Editor,Display,Line Number
作者: kuba2333    时间: 2018-4-26 15:00
kyra 发表于 2018-4-26 14:52
语法规定,10以下通道号为编译器所保留。
gfortran使用6作为标准输出(一般为屏幕),你执行了 close(6), ...

多谢大佬!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2