【问题标题】:Can you pass a value from one fortran program to another fortran program?你能把一个fortran程序的值传递给另一个fortran程序吗?
【发布时间】:2013-11-27 16:27:35
【问题描述】:

我有一个在变量中有值的程序。一旦建立了值,我想调用另一个程序并使用变量的值来确定在新程序中的位置。有人知道怎么做吗?

【问题讨论】:

  • 如果你可以让第二个程序成为一个子程序,你可以从第一个程序调用它并通过参数交换信息。否则,请按照 Mark 的说明进行操作。
  • 谢谢,我先试试这个方法,看看效果如何。

标签: fortran fortran90 fortran77


【解决方案1】:

如果您有 Fortran 2008 编译器,您将拥有标准子例程 execute_command_line。这需要一个字符串参数,尤其,表示要执行的命令(以及命令的任何参数),因此您可以很容易地执行另一个读取命令行参数的 Fortran 程序。那个被调用的程序可以使用 Fortran 2003 子例程 get_command_argument 来处理命令行

即使您的编译器不(完全)兼容 Fortran 2008,您也可能会发现它要么实现了这个内在例程,要么提供了(非标准)替代方案。您的编译器文档会启发您。

【讨论】:

  • 我们使用的是 fortran90 编译器...不确定效果如何?
  • 如果您的编译器不支持execute_command_line,您可以尝试使用非标准的system 子例程,如call system('myOtherFortranProgram')
【解决方案2】:

我不知道 fortran。但我会通过命令行参数来做到这一点。想不出一种不接受它们的语言。只要它是所有输入而没有输出就足够了。此外,您可以在接受输入的程序上进行简单的测试运行,因为您可以简单地从命令 shell 中使用测试输入来启动它。

缺点是,您必须将数据转换为字符串并在其他程序中解析。这对于简单类型来说不是什么大问题,但对于复杂数据来说可能会很麻烦。

对于可以写入文件的复杂数据,通过命令行参数提供文件路径并在其他程序中读取文件。基于文件的方法还使其他程序能够在同一文件中返回反馈。

这是 fortran 命令行上的 SO 线程: Fortran: `READ(*,*)` != Command-line arguments. How to use command line arguments?

编辑: 我将输出部分从“将您的数据打印为字符串”改写为“将您的数据转换为字符串”。该部分与链接一起暗示了将数据打印到屏幕并在另一个程序中从那里读取数据的提议。虽然这也可能是一个解决方案,但它不是故意的。

【讨论】:

  • 我有第一个程序写入屏幕的结果。我可以看到这是有效的。第二个程序需要从屏幕上读取该结果,但它没有读取它。我不确定这是否是你的意思,但它似乎应该工作。顺便说一句,我正在使用 AIX 编辑器。
  • 从屏幕上阅读不是我的意思。我提出了与高性能标记相同的解决方案,但提前了 4 分钟,细节更少。由于 Mark 可以列出 Fortran 命令,因此我添加了一个链接来指导您如何使用它们。链接的 SO 线程显示了 get_command_argument 的用法。有关更多信息,您应该谷歌“execute_command_line Fortran”。
猜你喜欢
  • 2013-04-01
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多