代码之家  ›  专栏  ›  技术社区  ›  M0M0

FORTRAN77中获取命令行参数的标准方法

  •  0
  • M0M0  · 技术社区  · 1 年前

    这个 gcc manual 提及 getarg 作为gnu扩展。它似乎得到了许多编译器的支持(即相当严格的 f2c 也理解它)。但是 getarg 在FORTRAN77标准中没有提及。那么,在FORTRAN77中是否有任何符合标准的方法来获取命令行参数呢?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Vladimir F Героям слава    1 年前

    不,没有办法。这种与操作系统的交互不包括在古老的FORTRAN 77标准中,必须使用非标准扩展或使用FORTRAN 2003的标准功能来完成,如 How to use command line arguments in Fortran?

        2
  •  0
  •   francescalus    1 年前

    考虑两个程序:

          EXTERNAL GETARG
          CHARACTER*32 ARG
          CALL GETARG(1,ARG)
          END
    

          INTRINSIC GETARG
          CHARACTER*32 ARG
          CALL GETARG(1,ARG)
          END
    

    第二个程序不是合格的F77程序,因为它依赖于非标准的内在程序。但是,第一个?

    还要考虑

          CHARACTER*32 ARG
    C Unit 785 is preconnected to a file with command arguments
          READ(785,*) ARG
          END
    

    第一个和第三个程序引发的问题不是是否有标准一致的方法来获取命令行参数,而是是否有 便携式的 符合标准的方式。 1.

    对于某些系统,可以编写一个读取命令行参数的标准F77程序。编写一个标准的F77程序是不可能的,它(可移植地)由Fortran标准保证访问命令行参数。在F2003之前,Fortran本身没有命令行参数的概念,甚至F2023也不认为处理器支持命令行参数。


    1. 回想一下F77的话:

    由于符合标准的程序可能会对处理器提出不在本标准范围内的要求,或者可能包括不可移植的标准项,例如通过FORTRAN以外的方式定义的外部程序,因此符合本标准并不能确保符合标准的程序在所有或任何符合标准的处理器上一致执行。