从Fortran中的函数调用接收数组

时间:2017-08-17 12:08:11

标签: fortran intel-fortran

我有一个简单的Fortran函数,它将逗号分隔的字符串转换为字符数组(len = 255)。我无法弄清楚如何创建一个可以接收此函数输出的变量。

这是我的逗号分隔字符串到数组函数:

    function CommaDelimitedStringToArray(commastr) result (slist)

       character(*), intent(in)  :: commastr

       ! Local vars
       character(255), dimension (:), allocatable :: slist
       integer :: scount

       ! Lots of code removed - I set scount to be the number 
       ! of elements in the comma delimited string, with a 
       ! minimum value of 1

       ! Create the slist and populate it...
       allocate (slist(scount))

       ! Lots more code removed.  At the end of this function I know I have
       ! slist defined with the correct size and correct contents

end function CommaDelimitedStringToArray

现在我想实际使用这个功能。我试过这个:

    character(255) :: commastr
    character(255), dimension (:), allocatable :: mylist

    commastr = "this,that,theother,etc"

    mylist = CommaDelimitedStringToArray(trim(commastr))

但是mylist没有从函数调用中接收到数组。

在我的测试中,如果我在调用函数之前将mylist分配给正确的大小,它会正确接收数组。但是,显然,在现实世界中,我在调用函数之前并不知道它的大小。

如何声明/使用mylist以便正确接收数组?

编辑 - 我的编译器在Win 10上运行时报告为“适用于Microsoft Visual Studio 2015的版本16.0.0062.14的Fortran Windows集成的英特尔®ParallelStudio XE 2016 Update 3编译器版”。

编译器标志是:

/ nologo / debug:full / Od / warn:interfaces / module:“Debug \”/ object:“Debug \”/Fd"Debug\vc140.pdb“/ traceback / check:bounds / check:stack / libs :static / threads / dbglibs / c

0 个答案:

没有答案