Fortran Coder

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

[子程序] 出现Error: Symbol at (1) has no IMPLICIT type

[复制链接]

57

帖子

15

主题

0

精华

熟手

F 币
242 元
贡献
166 点
跳转到指定楼层
楼主
发表于 2020-3-8 17:10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kyra 于 2020-3-9 15:22 编辑

[Fortran] 纯文本查看 复制代码
subroutine day1year()
implicit none
integer :: year , mon , days
    common year , mon 
    Integer :: DaysInMonth(12) = [31,28,31,30,31,30,31,31,30,31,30,31]
    if ( ( (MOD(year,4)==0).and.(MOD(year,100)/=0) ) .or. (mod(year,400)==0) ) then
      DaysInMonth(2) = 29
    else
      DaysInMonth(2) = 28
    end if
  days = sum( DaysInMonth )
end subroutine day1year
subroutine dayfromyear( year , mon , day )
implicit none
integer :: day , i , daylast
Integer :: DaysInMonth(12) = [31,28,31,30,31,30,31,31,30,31,30,31]
integer :: k
integer :: years(51) = (/(k,k=1957,2007)/)
integer :: sumday = 0
  do i=1,k,1
  call day1year (years(i))
  sumday = sumday + days
  end do
daylast = sum( DaysInMonth(:mon-1) ) + day +sumday
end subroutine

出现Error: Symbol 'year' at (1) has no IMPLICIT type
       Error: Symbol 'mon' at (1) has no IMPLICIT type
      Error: Symbol 'days' at (1) has no IMPLICIT type
在第一个子程序中已经声明了这三个变量,并且设为了全局变量,为什么到第二个子程序中还是显示没有声明类型。

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

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2020-3-9 12:30:33 | 只看该作者
各个子程序,变量不通用。你的就是你的,我的不是你的。

57

帖子

15

主题

0

精华

熟手

F 币
242 元
贡献
166 点
板凳
 楼主| 发表于 2020-3-9 12:58:31 | 只看该作者
li913 发表于 2020-3-9 12:30
各个子程序,变量不通用。你的就是你的,我的不是你的。

好的,谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-23 23:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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