数据块子程序赋初值问题
本帖最后由 pass74 于 2014-4-10 15:57 编辑在主程序中有 COMMON/KIO/ KR, KS, KW, KEND, IH, HIN( 200), KOUT 其中HIN定义为字符类型,其他都用隐含I-N规则定义,在数据块子程序中对以上变量赋初值如下:
BLOCK DATA
COMMON/KIO/ KR, KS, KW, KEND, IH, HIN( 200), KOUT
DATA KR/ 5/, KS/ 2/, KW/ 6/, KOUT/ 1/
END
并没有对数组字符数组HIN( 200)赋初值
问题:
程序运行后变量KOUT 的值为0,即赋初值没有成功,请问问题出在哪里?(尝试在公共块去掉字符数组HIN( 200)就能赋初值成功)
1.强烈建议放弃 common
2.强烈建议用 Implicit None
3.您是否没有在子程序中定义 Hin ?
如下代码在我的编译器上没有问题。输出也正确。
program www_fcode_cn
COMMON/KIO/ KR, KS, KW, KEND, IH, HIN( 200), KOUT
character(len=5) Hin
call sub()
write(*,*) KOUT
end program www_fcode_cn
subroutine sub()
COMMON/KIO/ KR, KS, KW, KEND, IH, HIN( 200), KOUT
character(len=5) Hin !// 这句你是不是丢了?
DATA KR/ 5/, KS/ 2/, KW/ 6/, KOUT/ 12/
write(*,*) 'subOK'
end subroutine sub chuxf 发表于 2014-4-10 17:16
1.强烈建议放弃 common
2.强烈建议用 Implicit None
3.您是否没有在子程序中定义 Hin ?
谢谢,问题已经解决,是在数据块子程序中没有定义HIN,至于放弃common以及建议用 Implicit None,因为我在修改源程序,源程序中太多这种语句,所以只好默认了
页:
[1]