回 帖 发 新 帖 刷新版面

主题:请问这种READ,WRITE 怎么理解啊???

READ(10,'(T31,I5)', IOSTAT=InputStatus)
WRITE(*,'(a)',ADVANCE='NO')
是什么意思呢?
不是只有两个的吗?
READ(*,*)   WRITE(*,*)

回复列表 (共9个回复)

沙发

read和write语句中都可以跟很多参数,这样可以对读写有更多的控制,用于读语句时:

iostat
Is the name of a variable to contain the completion status of the I/O operation. Optionally prefaced by IOSTAT=.

advance
Is an advance specifier (ADVANCE=c-expr). If the value of c-expr is 'YES', the statement uses advancing input; if the value is 'NO', the statement uses nonadvancing input. The default value is 'YES'.


ADVANCE='NO'特别有用,有这个参数,执行完这句读写语句后,不换行,下一句读写语句继续往下读。

板凳

THANK YOU,Mr.MLTX!
我在书上也看到了,[em2]

3 楼

请问:
    INTEGER LP
    WRITE(LP, 100)
100  FORMAT(/' IFLAG= -1 ',/' LINE SEARCH FAILED. SEE'
    .          ' DOCUMENTATION OF ROUTINE MCSRCH',/' ERROR RETURN'
    .          ' OF LINE SEARCH: INFO= ',I2,/
    .          ' POSSIBLE CAUSES: FUNCTION OR GRADIENT ARE INCORRECT',/,
    .          ' OR INCORRECT TOLERANCES')
   上面的WRITE()中为什么加LP啊?
   这段代码的含义是什么啊?
   初学者,但是需要!谢谢!

4 楼

这段代码是在LP通道输出几行字符串,其格式和内容由FORMAT给出

LP表示打开的文件通道号,如:

open(1,file='in')
write(1,*) a



integer lp
lp=1
open(lp,file='in')
write(lp,*) a

是等价的


5 楼

哦,谢谢!
您是说,往文件或者管道写是吧!因为原来程序是Linux的。
虽然我现在在Windows下移植为C++代码并且成功了。不过还是想弄明白!
另外顺便问:

Integer I
.....
goto (100,120) I

这里面的goto是不是相当于C++程序的
if (I ==1) goto 100;
if (I ==2) goto 120;
//当然C++中,100与120坐标号需要变换一下,比如L100,L120。
谢谢!我就是这么移植的!

6 楼

你对goto (100,120) I的理解是对的。这是很老的fortran语句了。

7 楼

谢谢老师。
我现在已经成功的完成了这段代码的移植工作!
完全变成C++的了!
其实主要是我从本科开始就没学过Fortran!现在需要了,并且着急才用的!
谢谢老师!
并希望每一个学习Fortran的同学们都学得开心!
我在教课的时候,总是鼓励学生多动手。
我看这里面好多的同学也是动手能力差。
我觉得多动手,多思考,才可能学好一们语言!
再次感谢老师!

8 楼

看来你是真正的老师啊。。。:)
这年头,真假难辨啊,哈哈。

9 楼

呵呵:)
这种问题没有必要弄清楚:)
生活嘛,就象是作项目,能够把自己的思想实现了,怎么高兴怎么来!
:)
各位中秋快乐!

我来回复

您尚未登录,请登录后再回复。点此登录或注册