Fortran Coder

查看: 13879|回复: 2
打印 上一主题 下一主题

[求助] 数据块子程序赋初值问题

[复制链接]

12

帖子

2

主题

0

精华

入门

F 币
50 元
贡献
31 点
跳转到指定楼层
楼主
发表于 2014-4-10 15:54:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)就能赋初值成功)


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

713

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
612 元
贡献
313 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-4-10 17:16:48 | 只看该作者
1.强烈建议放弃 common
2.强烈建议用 Implicit None
3.您是否没有在子程序中定义 Hin ?

如下代码在我的编译器上没有问题。输出也正确。
[Fortran] 纯文本查看 复制代码
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

12

帖子

2

主题

0

精华

入门

F 币
50 元
贡献
31 点
板凳
 楼主| 发表于 2014-4-10 18:24:33 | 只看该作者
chuxf 发表于 2014-4-10 17:16
1.强烈建议放弃 common
2.强烈建议用 Implicit None
3.您是否没有在子程序中定义 Hin ?

谢谢,问题已经解决,是在数据块子程序中没有定义HIN,至于放弃common以及建议用 Implicit None,因为我在修改源程序,源程序中太多这种语句,所以只好默认了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-21 00:12

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表