求大大们指教几个Fortran77固定格式的问题!
问题如下:①write(0,101)
101 format(///5x,'please input data filename')
请问write后的“0”指代什么输出通道?format后括号中的“///”是何意?
②write(6,667)
667 format(10x,'value of nodal load'/5x,'x-force',8x,#'z-force',8x,'y-moment')
请问format后括号中的“/”和“#”是何意?
③write(6,719)
719 format(//30x,'nodal equivalent load')
请问format后括号中“//”是何意?
还请各位大大不吝赐教哇!3Q!
语法中,通道号 0 没有特别指定,可能某些编译器上有特别的指定(例如标准输入输出),请查看编译器帮助文档。
/ 的意思是换行。
# 这个格式符在语法中不存在,是非法的写法。你可以考虑:
1.如果是书上的代码,是否是书上拼写错误?
2.你的编译器能否正常编译?
3.是否是续行,但排版错位了? 本帖最后由 McP 于 2015-9-2 23:04 编辑
fcode 发表于 2015-9-2 22:09
语法中,通道号 0 没有特别指定,可能某些编译器上有特别的指定(例如标准输入输出),请查看编译器帮助文 ...
大大晚上好~感谢大大深夜解救小的!
请问大大,用/换行的写法在自由格式中也一样用么?
那①中连续的///是指连着换行么?
确实是书上的写法,但在源程序里是这样的
WRITE(0,50)NE,NP,NR,MT,MX
50 FORMAT(2X,'NUMBER OF ELEMENT NE=',I2/2X,
#'NUMBER OF NODE NP=',I2/2X,
#'NUMBER OF SUPPOT NODE NR=',I2/2X,
#'NUMBER OF MATERIAL SET MT=',I2/2X,
#'NUMBER OF WORKING CASE MX=',I2)
READ(5,*)((AE(I,J),J=1,3),I=1,MT)
WRITE(6,221)
221 FORMAT(2X,'N0. OF SET',2X,'MODULUS OF ELASTICITY',2X,
#'CROSS-AREA',2X,'MOMEMT OF INERTIA')
#用在第六个字符的位置,感觉像是用来换行的,Fortran77中有这种用法么?还看到有用*的(在和#相同的位置上),也是写在续行的开头
编译结果很奇怪,是1 error,0 warning,但是按F4键没有用,没有显示是什么地方出错。
谢谢大大 //// 是连续换行。自由格式也可以使用(或者是格式符跟源代码格式无关)。
FORTRAN 固定格式(其实Fortran90也允许固定格式),续行是通过在第6格写入任意非空格非0字符实现。
遇到 1 error 一定给出错误提示!!这非常重要。以致于没有它,谁也不知道为啥。 fcode 发表于 2015-9-3 06:12
//// 是连续换行。自由格式也可以使用(或者是格式符跟源代码格式无关)。
FORTRAN 固定格式(其实Fortran ...
啊啊啊啊好久没有收到大大回复的提醒,一看原帖好像自己回复失败了。。。sorry
感觉老程序用行首数字跳来跳去简直要疯,大大您看例如:
write(10,100) ((NR(I),I=1,3)
... ...
100 blablabla
... ...
100 blublublu
这样重复出现行首数字的话,write后面是接哪个100呢?
猜测是向下按就近原则。。? 同一个程序单元里,不允许有重复的语句标号。
在新的语法里,应尽可能避免使用语句标号。 fcode 发表于 2015-9-4 13:02
同一个程序单元里,不允许有重复的语句标号。
在新的语法里,应尽可能避免使用语句标号。 ...
恩恩,但是相同的标号出现在不同的子程序里用就OK么? 是的。OK fcode 发表于 2015-9-4 17:03
是的。OK
好嘞~多谢大大!
页:
[1]