Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Fortran从字符串调用子例程_Fortran - Fatal编程技术网

用Fortran从字符串调用子例程

用Fortran从字符串调用子例程,fortran,Fortran,假设我有一个名为“f1”的子例程和一个包含其名称的变量。 因此,类似 subroutine f1(input1, ..., inputN) does something end subroutine f1 subroutine_name = "f1" 我想在subroutine\u name的帮助下调用此子例程 也就是说(根本)类似于: subroutine_name(input1, ..., inputN) 在fortran中,这样的事情可能

假设我有一个名为“f1”的子例程和一个包含其名称的变量。 因此,类似

    subroutine f1(input1, ..., inputN)
       does something
    end subroutine f1

    subroutine_name = "f1"

我想在
subroutine\u name
的帮助下调用此子例程
也就是说(根本)类似于:

   subroutine_name(input1, ..., inputN)
在fortran中,这样的事情可能发生吗?

我是否可以编写一个子例程来检查是否存在具有特定名称的子例程,如果存在,则将一些参数传递给它?

否,至少不简单且可移植。有重复的,你可以用谷歌搜索。你可以有指向子例程的指针(请参阅),并使用这些指针选择要调用的子例程。也许这可以用来解决你的问题?@M.S.B.我会遇到同样的问题,我必须将字符串与指针名称进行比较,不是吗?给出一些上下文:我有一个配置文件(即yaml),其中定义了一组变量以及一组子程序名称及其输入参数。我想定义和初始化相应的变量(我认为这是可行的)并应用子例程。@465b原则上,您可以使用预处理器来完成,但很可能您不想走这条路。关于这一点,我想定义并初始化相应的变量并应用子例程。创建一个路由过程,根据输入数据决定调用哪些过程,对您来说是否有效?类似于
if(proc_name=='f1')调用f1(args)
if(proc_name=='f1')f=>f1
这是一个同样的问题,因为我甚至倾向于以重复的方式结束,但我必须承认一个是关于数据的,一个是关于过程的。当从动态语言移植时,当它使用传统语言中不可用的特性时,您不能期望保持结构。