Fortran Coder

查看: 25162|回复: 5
打印 上一主题 下一主题

[子程序] 实参虚参不匹配的问题

[复制链接]

55

帖子

17

主题

0

精华

熟手

F 币
261 元
贡献
169 点
跳转到指定楼层
楼主
发表于 2014-10-25 16:30:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么叫实参什么叫虚参呢,当出现这个问题时错误是实参比虚参多么?
错误        1         error #6784: The number of actual arguments cannot be greater than the number of dummy arguments.   [CANOPY]        C:\B90V4\FOR\B90.FOR        111        
错误        2         error #6634: The shape matching rules of actual arguments and dummy arguments have been violated.   [RELMAI]        C:\B90V4\FOR\B90.FOR        111        




PET.FOR

20.47 KB, 下载次数: 4

错误出在这个sub的第一行

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

55

帖子

17

主题

0

精华

熟手

F 币
261 元
贡献
169 点
沙发
 楼主| 发表于 2014-10-25 16:31:55 | 只看该作者
[Fortran] 纯文本查看 复制代码
 SUBROUTINE CANOPY (DOY, MAXHT, RELHT, MAXLAI, MXMAI,RELLAI,RELMAI, 
     *    SNOW,SNODEN, MXRTLN, MXKPL, CS, DENSEF, HEIGHT, LAI, SAI,
     *   MAI, RTLEN,  RPLANT)
C     canopy parameters
      IMPLICIT NONE
C     input
         INTEGER DOY      ! day of year (first day of DFILE and run)"
         REAL    MAXHT    ! maximum height for the year, m, minimum of 0.01 m
         REAL   RELHT(*)  ! ten pairs of DOY and relative canopy height
         REAL   MAXLAI    ! maximum projected leaf area index for the year,m2/m2
         REAL   MXMAI
         REAL   RELLAI(*) ! ten pairs of DOY and relative LAI
         REAL   RELMAI
         REAL   SNOW      ! water equivalent of snow on the ground, mm
         REAL   SNODEN    ! snow density, mm/mm
         REAL   MXRTLN    ! maximum root length per unit land area, m/m2
         REAL   MXKPL     ! maximum plant conductivity, (mm/d)/MPa
         REAL   CS        ! ratio of projected SAI to canopy height, m-1
         REAL   DENSEF    ! density factor
C     output
         REAL   HEIGHT    ! canopy height above any snow, m, minimum of 0.01 m
         REAL   LAI       ! leaf area index, m2/m2, minimum of 0.00001
         REAL   SAI       ! stem area index, m2/m2
         REAL   MAI
         REAL   RTLEN     ! root length per unit land area, m/m2
         REAL   RPLANT    ! plant resistivity to water flow, MPa d/mm
C     local
         REAL   SNODEP    ! snow depth
         REAL   HNOSNO    ! height of canopy without snow
         REAL   HSNO      ! height of canopy above snow
         REAL   RATIO     ! fraction of canopy above snow
         REAL   RELHIT    ! RELHT for DOY
         REAL   KPL       ! plant conductivity, mm d-1 MPa-1
C     intrinsic
C        REAL, MAX
C     external functions needed
         REAL   INTERP
C
      RELHIT = INTERP(10, RELHT, REAL(DOY))
      SNODEP = .001 * SNOW / SNODEN
      HNOSNO = MAX(.01, RELHIT * MAXHT)
      HSNO = MAX(0., HNOSNO - SNODEP)
      RATIO = HSNO / HNOSNO
      HEIGHT = MAX(.01, HSNO)
C
      LAI = RATIO * DENSEF * INTERP(10, RELLAI, REAL(DOY)) * MAXLAI
      SAI = DENSEF * CS * HEIGHT
      MAI = INTERP(10, RELMAI, REAL(DOY)) * MXMAI
      IF (LAI .LT. .00001) LAI = .00001
C
      RTLEN = DENSEF * RELHIT * MXRTLN
      KPL = DENSEF * RELHIT * MXKPL
      IF (KPL .LT. 1E-08) KPL = 1E-08
      RPLANT = 1. / KPL
C
      END

55

帖子

17

主题

0

精华

熟手

F 币
261 元
贡献
169 点
板凳
 楼主| 发表于 2014-10-25 16:32:21 | 只看该作者
以上是代码部分,附件添加错了

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

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

地板
发表于 2014-10-25 16:37:29 | 只看该作者
经典的举例:

[Fortran] 纯文本查看 复制代码
call 结婚(赵又廷,高圆圆)
call 结婚(张三,李四)

subroutine 结婚(男方,女方)
  男方和女方领结婚证
  男方和女方办酒席
end subroutine 结婚


男方、女方是虚参。
高圆圆、赵又廷、张三、李四 是实参。

你的错误1,是实参虚参个数不一样。比如虚参要求男方女方两个人,你却 call 结婚(张三),少了一个人,或多了一个人,都没法结婚。
错误2,是参数数组的外形不一样。比如虚参要求男方女方都是一个人,你却 call 结婚(SHE,Twins),每个名字都是一个团队,也没法结婚。

55

帖子

17

主题

0

精华

熟手

F 币
261 元
贡献
169 点
5#
 楼主| 发表于 2014-10-25 18:38:10 | 只看该作者
谢谢,果然是she和高圆圆的问题

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
6#
发表于 2014-10-30 09:37:52 | 只看该作者
让我们这些集体婚礼的情何以堪?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-10 09:13

Powered by Tencent X3.4

© 2013-2024 Tencent

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