Fortran Coder

标题: fortran中call命令 [打印本页]

作者: 猴雨云    时间: 2014-5-19 20:56
标题: fortran中call命令
我想请教一下大师们,fortran中的call命令就是调用一个子程序然后进行计算,当子程序调用完了后没有任何的输出结果留在主程序里吗?我现在有一个主程序调用一个初始值赋值的子程序,调用格式是CALL INITCOMMON ,如果call命令没有返回值的话,初始值在主程序里面就没有定义了,这是怎么解释该主程序用了CALL命令却有返回值呢?我这的fortran程序全是固定格式,这有影响吗?

作者: 楚香饭    时间: 2014-5-19 21:09
1.有没有输出,看子程序里的代码,有输出代码被执行就会有输出。否则就没有。
2.子程序与主程序间的数据共享,有多种方式,比如实参虚参,比如返回值,比如common,比如module等。(返回值只是其中一种)
3.严谨的代码,应该任何变量均有定义。
4.固定格式只是写法,与 call 的使用无关。
作者: 猴雨云    时间: 2014-5-19 21:49
chuxf 发表于 2014-5-19 21:09
1.有没有输出,看子程序里的代码,有输出代码被执行就会有输出。否则就没有。
2.子程序与主程序间的数据共 ...

嗯嗯,刚借书看到实参虚参的传递,用INTENT(INOUT)定义,不过您总结的更透侧,还有common共享数据,真心感谢您的指点,受教了,谢谢。。。。
作者: fcode    时间: 2014-5-19 21:52
Intent( INOUT ) 等于没有
作者: 猴雨云    时间: 2014-5-19 22:17
fcode 发表于 2014-5-19 21:52
Intent( INOUT ) 等于没有

这个定义不是表示形参为输入输出变量吗?
作者: fcode    时间: 2014-5-19 22:19
猴雨云 发表于 2014-5-19 22:17
这个定义不是表示形参为输入输出变量吗?

默认就是 Intent(INOUT) ,可以忽略。所以没啥用。
作者: 猴雨云    时间: 2014-5-20 09:24
fcode 发表于 2014-5-19 22:19
默认就是 Intent(INOUT) ,可以忽略。所以没啥用。

嗯嗯,知道了,谢谢指点




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