Fortran Coder

查看: 2634|回复: 3
打印 上一主题 下一主题

[求助] 数组维数是参数的子程序在主程序中的调用问题

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
5 点
跳转到指定楼层
楼主
发表于 2022-7-15 18:30:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
子程序的输入输出参数包含一个数组,数组的维数是一个参数,在主程序中调用的时候显示必须是一个虚拟参数,一个公共块对象,或通过host或use关联访问的对象,问下大佬这个因该怎么解决,附程序代码,很简单的一个例子
subroutine aabs(input,output(ab))    integer ab    DOUBLE PRECISION input,output(ab)    ab=2    do i=1,ab        output(i)=abs(input)    end do    return    end


program test01
     integer ab      DOUBLE PRECISION input,output(ab)    input=-1    call aabs(input,output(ab))     
end program test01


报错信息:error #6219: This variable, used in a specification expression, must be a dummy argument, a COMMON block object, or an object accessible through host or use association.    [AB]




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

2

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
5 点
沙发
 楼主| 发表于 2022-7-15 18:32:33 | 只看该作者
本帖最后由 z871164357 于 2022-7-15 18:33 编辑

F:\Desktop\z1.jpg

z2.jpg (37.2 KB, 下载次数: 96)

z2.jpg

z1.jpg (39.1 KB, 下载次数: 101)

z1.jpg

81

帖子

0

主题

0

精华

专家

F 币
471 元
贡献
232 点

规矩勋章新人勋章元老勋章

QQ
板凳
发表于 2022-7-15 21:43:22 | 只看该作者
[Fortran] 纯文本查看 复制代码
Module aaa
contains
  subroutine aabs(input,output)
    integer ab , i   
    DOUBLE PRECISION input,output(:)
    ab=size(output)
    do i=1,ab
      output(i)=abs(input)  
    end do   
  end subroutine aabs
End Module aaa
  
program test01
  use aaa
  integer , parameter :: n = 2
  DOUBLE PRECISION input,output(n)
  input=-1    
  call aabs(input,output)     
end program test01
彼岸,有永恒的守候...

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
地板
发表于 2022-7-18 20:24:26 | 只看该作者
你没告诉它AB是多少,你这样的output数组用法是固定大小数组 ,可是你并没有给出数组大小。你把integer ab 改成integer,parameter::ab=1 就行了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-20 07:20

Powered by Tencent X3.4

© 2013-2024 Tencent

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