从Fortran代码中调用可执行文件

时间:2014-07-01 18:10:13

标签: fortran

我正在编写一个名为code.f的Fortran代码。我希望这段代码运行另一个可执行文件,我可以将其存储在与代码相同的目录中(或者在编译时存储为code.f)。

使用以下方法进行编码是否可接受:

    CALL system(./executable < input.inp > output.out)

或者这显然是不好的做法?

************替代************

我有可执行文件的代码exec.f.如果使用code.f编译并使用code.f make文件进行链接,您是否可以建议如何执行此操作,当前的make文件如下所示:

    FFLAGS = $(MYFLGS) -I$(INCDIR) -static
    OBJ =   file1.o file2.o file3.o file4.o
    ...
    ...
    Code:        code.f code.o $(OBJ) par.h
    $(FC) $(FFLAGS) -o $@ code.o $(OBJ) $(LIBS)

更新

是否正确
   OBJ = file1.o file2.o file3.o file4.o exec.f

在输入之后,如何在code.f中调用exec.f中的代码?

如果我需要让我的问题更清楚,请告诉我。非常感谢你的帮助

詹姆斯

2 个答案:

答案 0 :(得分:1)

SYSTEM功能根本不存在,如果总是使用它是一种不好的做法。

关于第二个问题:您不能只将两个可执行文件连接到一个可执行文件,因为它只能包含一个入口点(主程序或PROGRAM)。

总结选项:

  1. PROGRAM中的exec.f更改为SUBROUTINE并从exec.f创建一个库。链接在一起并从Code
  2. 调用库函数
  3. PROGRAM中的exec.f更改为SUBROUTINE,并将exec.f添加到Code目标。从exec.f
  4. 调用Code函数
  5. 使用来自SYSTEM
  6. Code来电

    所有选项均有效且具有不同的用例。

答案 1 :(得分:1)

可接受是一个意见问题。我会尽量避免这种方法,但它可能是解决某些问题的最佳方案。

Fortran 2008提供了内在程序execute_command_line,它比“系统”更加标准。