猴雨云 发表于 2014-5-19 20:56:43

fortran中call命令

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

楚香饭 发表于 2014-5-19 21:09:42

1.有没有输出,看子程序里的代码,有输出代码被执行就会有输出。否则就没有。
2.子程序与主程序间的数据共享,有多种方式,比如实参虚参,比如返回值,比如common,比如module等。(返回值只是其中一种)
3.严谨的代码,应该任何变量均有定义。
4.固定格式只是写法,与 call 的使用无关。

猴雨云 发表于 2014-5-19 21:49:37

chuxf 发表于 2014-5-19 21:09
1.有没有输出,看子程序里的代码,有输出代码被执行就会有输出。否则就没有。
2.子程序与主程序间的数据共 ...

嗯嗯,刚借书看到实参虚参的传递,用INTENT(INOUT)定义,不过您总结的更透侧,还有common共享数据,真心感谢您的指点,受教了,谢谢。。。。

fcode 发表于 2014-5-19 21:52:06

Intent( INOUT ) 等于没有

猴雨云 发表于 2014-5-19 22:17:22

fcode 发表于 2014-5-19 21:52
Intent( INOUT ) 等于没有

这个定义不是表示形参为输入输出变量吗?

fcode 发表于 2014-5-19 22:19:28

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

默认就是 Intent(INOUT) ,可以忽略。所以没啥用。

猴雨云 发表于 2014-5-20 09:24:30

fcode 发表于 2014-5-19 22:19
默认就是 Intent(INOUT) ,可以忽略。所以没啥用。

嗯嗯,知道了,谢谢指点
页: [1]
查看完整版本: fortran中call命令