作者ybchen (恶魔也会哭)
看板Fortran
标题[问题] Write格式可浮动化吗
时间Fri Mar 13 17:31:32 2009
目前写程式中,为了将输出的数据做规则排列
所以有将WRITE的格式做设定
但是有其中一组输出,会因为初始输入的计算范围,使得数据组数有变动
所以有利用字串的方式来记录调整格式的范围
其中主要的程式码如下
.................
Write ( x,'(I2,A12)' ) N_Material-2, 'I5,ES17.10E2'
.................
Write(51,'(x)') thick(:,j), R*100
.................
如上所写的,我已经将x设为字串,利用write将他写成格式化输出的写法
其中,前几项都是整数,但是会随着初始输入有不同组数
所以 N_Material-2 就是需要列出的组数
例如 N_Material-2 = 3 ,那 x = 3I5,ES17.10E2
下面那一排,即是利用x的格式输出需要的数据
虽然compile可以过,但是执行程式後,就发生
forrt1: serve <60>: infinite format loop unit 51, file D:\xxxxxxxx
这样的错误讯息
不过如果是 Write(51,'(3I5,ES17.10E2)') thick(:,j), R*100
这样就可以跑完
也就是直接把format写完是可正常执行,但若设定成字串组就会错误
刚刚试了一下 发现真的不行 x是恰好为format指令参数的其中一个
换成h,就连compile都过不去,也就是说似乎一定要直接写format指令
请问有什麽写法可以克服这个问题吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.33.151
1F:→ charlesdc:你先把X印出来看看是否是你要的 这样看起来是没问题 03/13 18:39
2F:→ ybchen:这我有确定 x输出是正确的 03/13 18:46
※ 编辑: ybchen 来自: 140.112.33.151 (03/13 18:57)
3F:→ charlesdc:试试 write(x(1:2),'(I2)')N_Material-2 03/13 19:01
4F:→ charlesdc:记得X要改成 x="??I5,ES17.10E2" 03/13 19:02
5F:→ charlesdc:在不行我就不知了...这方法是可行的但错在哪我不知道 03/13 19:04
6F:→ charlesdc:把X换掉然後写严谨点看看write(*,FMT=变数) x是空格 03/13 19:08
7F:→ charlesdc:Write(51,'(x)')这边表示错了 03/13 19:16
8F:→ charlesdc:我也搞错了. "()"这个要搞到字串里x="(??I5,ES17.10E2)" 03/13 19:22
9F:推 jsb:Write ( x,'(I2,A12)' ) N_Material-2, '(I5,ES17.10E2)' 03/14 01:34
10F:→ jsb:Write (51,x) thick(:,j), R*100 03/14 01:35
11F:→ ybchen:感谢各位 我找到方法了 03/15 15:12
12F:→ ybchen:Write(h,'(A1,I2,A13)') '(',N_Material-2,'I5,ES17.10E2)' 03/15 15:15
13F:→ ybchen:Write(51,h) thick(:,j), R*100 03/15 15:15
14F:推 jsb: 我就是这个意思啦. . . 不小心写错了真抱歉。 03/16 00:39