Fortran Coder

标题: GFortran编译时的预处理问题 [打印本页]

作者: 小鱼    时间: 2014-4-25 11:29
标题: GFortran编译时的预处理问题
[Fortran] 纯文本查看 复制代码
open(366,file = inpath(1:lenstr(inpath))//
     &    '/atmosphere/cloud.in',status='old',
     &    form='unformatted')

为什么运行之后出现

warning: missing terminating ' character [enabled by default]
运行出来的.f文件显示

open(366,file = inpath(1:lenstr(inpath))                          
                                                                       1
Error: Syntax error in OPEN statement at (1)


请帮忙解决,谢谢!

作者: 楚香饭    时间: 2014-4-25 12:24
Syntax error 是写法不对。看起来像是格式,续行的问题。

我这里是OK的,如果你还是有问题,建议你在这几行代码上截个图。


作者: 小鱼    时间: 2014-4-25 20:54
chuxf 发表于 2014-4-25 12:24
Syntax error 是写法不对。看起来像是格式,续行的问题。

我这里是OK的,如果你还是有问题,建议你在这几 ...

F:\bug.png
open(366,file=inpath(1:lenstr(inpath))//'/atmosphere/cloud.in')
问题是运行后形成的.f ,只能显示open(366,file=inpath(1:lenstr(inpath))导致无法形成.c 文件

bug.png (891 Bytes, 下载次数: 466)

bug.png

作者: 楚香饭    时间: 2014-4-25 20:59
什么叫只能显示 open(366,file=inpath(1:lenstr(inpath))

你为什么要形成 .c 文件?代码里明明是 cloud.in 文件啊
作者: 小鱼    时间: 2014-4-25 21:27
chuxf 发表于 2014-4-25 20:59
什么叫只能显示 open(366,file=inpath(1:lenstr(inpath))

你为什么要形成 .c 文件?代码里明明是 cloud.in ...

错了,是要形成.o文件。这个是从cloud.in文件里读取数据,.F文件运行时要先形成.f文件,再形成.o文件。可是.f文件出现上述问题,导致无法运行
作者: 楚香饭    时间: 2014-4-25 21:30
*.F 形成 *.o 这个过程你不用描述。我知道的。

你只要告诉我错误提示就可以了。

现在,你的Open语句是怎么样的?是否续行了?(因为你一开始给的代码续行了,后来又写成一行了)

最好提供 Open 语句上下10行代码的截图
作者: 小鱼    时间: 2014-4-25 21:35
chuxf 发表于 2014-4-25 21:30
*.F 形成 *.o 这个过程你不用描述。我知道的。

你只要告诉我错误提示就可以了。

不好意思,之前那个又修改了一下,是这个样子的,open执行不了,出现最开始的错误

bug.png (5.42 KB, 下载次数: 507)

bug.png

作者: 楚香饭    时间: 2014-4-25 21:41
检查一下你的 inpath 是否定义为字符串了吧。

我这边都一切正常。要不你再提供一下错误的截图?
作者: 小鱼    时间: 2014-4-25 21:45
本帖最后由 小鱼 于 2014-4-25 21:47 编辑
chuxf 发表于 2014-4-25 21:41
检查一下你的 inpath 是否定义为字符串了吧。

我这边都一切正常。要不你再提供一下错误的截图? ...

atm/atm_hb.f:360.44:

      open(366,file=inpath(1:lenstr(inpath))                           
                                                                         1
Error: Syntax error in OPEN statement at (1)
make: *** [atm/atm_hb.o] Error 1

作者: 楚香饭    时间: 2014-4-25 22:00
能提供错误截图吗?

你的错误提示是
open(366,file=inpath(1:lenstr(inpath))      
有错,而代码里又是
open(366,file=inpath(1:lenstr(inpath))//'/atmosphere/cloud.in')

你确定是同一行?
作者: 小鱼    时间: 2014-4-25 22:06
chuxf 发表于 2014-4-25 22:00
能提供错误截图吗?

你的错误提示是

是的,编译的这个文件只有这段是从文件中获取信息,后面都是对获取信息的处理。怎么修改都是这个错误
作者: 楚香饭    时间: 2014-4-25 22:24
建议以附件形式上传 atm_hb.f 文件
作者: 小鱼    时间: 2014-4-25 22:33
chuxf 发表于 2014-4-25 22:24
建议以附件形式上传 atm_hb.f 文件

能不能加你qq聊阿,我的是642310969
作者: 楚香饭    时间: 2014-4-25 22:34
加本站QQ群:2338021,注意申请理由写 integer f
作者: fcode    时间: 2014-4-30 15:18
经群内朋友们检查,此问题出在使用了 cpp 的预处理,而不是 fpp 的预处理。导致 F 文件向 .f 文件转换时, // 后面的内容被移除。




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