Fortran Coder

查看: 381|回复: 13

[求助] namelist

[复制链接]

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
发表于 2020-9-19 21:06:25 | 显示全部楼层 |阅读模式
请教大家,我建了一个文档,里面设置了参数,a和b,希望输出,a+b的结果,但是运行出错,问题出在哪里了呢?
[Fortran] 纯文本查看 复制代码
program hello
    implicit none

   integer(kind=4) :: a,b
   namelist /legend/ a,b
   a=0
   b=0
   open(10,file="test01.txt",status="replace")
   read(10,nml=legend)
   write(*,*) a+b
end program


文档的内容如下
&legend
a=1
b=2
回复

使用道具 举报

66

帖子

2

主题

0

精华

专家

F 币
476 元
贡献
217 点

规矩勋章

发表于 2020-9-19 21:35:52 | 显示全部楼层
在Open语句中,Status="replace"会导致”test01.txt"文件被删除,然后产生一个同名的空白文件。
改"replace"为"unknown"或"old"

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-19 21:41:03 | 显示全部楼层
风平老涡 发表于 2020-9-19 21:35
在Open语句中,Status="replace"会导致”test01.txt"文件被删除,然后产生一个同名的空白文件。
改"replace ...

At line 9 of file D:\wendang\fortran\test\20200919\main.f90 (unit = 10, file = 'test01.txt')
Fortran runtime error: End of file

Error termination. Backtrace:

Could not print backtrace: libbacktrace could not find executable to open
#0  0x657724a3
#1  0x6570bf8e
#2  0x65669e92
#3  0x6570d7af
#4  0x6576a12e
#5  0x6578727a
#6  0x6577695e
#7  0x656f9d7f
#8  0x4015aa
#9  0x401652
#10  0x401232

Process returned 2 (0x2)   execution time : 0.027 s
Press any key to continue.

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-19 21:41:47 | 显示全部楼层
胆怯滴大侠 发表于 2020-9-19 21:41
At line 9 of file D:\wendang\fortran\test\20200919\main.f90 (unit = 10, file = 'test01.txt')
Fortr ...

感谢您的回答,可是还是不行,是不是我哪里还有问题啊?

66

帖子

2

主题

0

精华

专家

F 币
476 元
贡献
217 点

规矩勋章

发表于 2020-9-19 22:21:17 | 显示全部楼层
胆怯滴大侠 发表于 2020-9-19 21:41
感谢您的回答,可是还是不行,是不是我哪里还有问题啊?

文件"test01.txt"改为

&legend a=1, b=2 /

每一行结束必须有"/"

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-20 20:02:24 | 显示全部楼层
风平老涡 发表于 2020-9-19 22:21
文件"test01.txt"改为

&legend a=1, b=2 /

[Fortran] 纯文本查看 复制代码
program hello
    implicit none

   integer:: a,b
   namelist /pa /a,b
   open(101,file="test01.txt",status="old")
   read(101,nml=pa)
   write(*,*) a+b
end program

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-20 20:03:14 | 显示全部楼层
风平老涡 发表于 2020-9-19 22:21
文件"test01.txt"改为

&legend a=1, b=2 /

你好,这是改过的txt
&pa  /
       a=1 /
       b=2 /
&end /

20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-20 20:04:36 | 显示全部楼层
胆怯滴大侠 发表于 2020-9-20 20:03
你好,这是改过的txt
&pa  /
       a=1 /

现在得到的结果是错误的,很大,1+2不等于17606072啊

66

帖子

2

主题

0

精华

专家

F 币
476 元
贡献
217 点

规矩勋章

发表于 2020-9-20 21:15:23 | 显示全部楼层
本帖最后由 风平老涡 于 2020-9-20 21:29 编辑
胆怯滴大侠 发表于 2020-9-20 20:04
现在得到的结果是错误的,很大,1+2不等于17606072啊

namelist的变量名不能有空格,namelist /pa /a,b 可改为namelist /pa/a,b。 "test01.txt"文件可改为:

&pa a=1,b=2 /

或者

&pa
a=1, b=2 /

或者

&pa a=1,
b2 /


20

帖子

7

主题

0

精华

熟手

F 币
120 元
贡献
77 点
 楼主| 发表于 2020-9-20 22:05:30 | 显示全部楼层
风平老涡 发表于 2020-9-20 21:15
namelist的变量名不能有空格,namelist /pa /a,b 可改为namelist /pa/a,b。 "test01.txt"文件可改为:

&pa ...

还是不行啊
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2020-10-28 02:08

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表