Fortran命令行参数

时间:2014-12-04 02:22:55

标签: command-line fortran

在g ++中,我使用getopt_long来处理命令行选项。有没有 Gfortran存在同样的事情吗?

我希望能够将aguments传递给一些Fortran单元测试。

目前我有以下内容。人们可以注意到我正在照顾 获得关键和自己的价值。使用C ++时getopt_long 我这样做了。

i = 1

Do

Call Get_command_argument (i, arg)
If (Len_trim (arg) == 0) Exit

pos = Index (arg, "=")

!!$ Long option argument.
If (arg(1:2) == "--") Then
  If (pos == 0) Then
    c = arg
    val = ""
  Else
    c = arg(:pos-1)
    val = arg(pos+1:)
  End If

!!$ Short option argument.
Elseif (arg(1:1) == "-") Then
  c = arg
  val = arg(pos+1:)

!!$ Non option argument.
Else
  c = arg
  val = arg

End If

!!$------------------------------------------------------------ 

Select Case (c)

  Case ("-b","--brief")
    arg_brief = .True.

  Case ("-h","--help")
    arg_help = .True.

  Case ("-v","-V","--version")
    arg_version = .True.

  ! Output model geographical definition
  Case ("-cunit")
    arg_cunit = val

  Case default
    arg_nonopt = Trim (Adjustl (arg))
    Write (*,*) "Warning: Non option argument"

End Select

i = i + 1

End Do

!!$-------------------------------------------------------------

!!$ [TODO] Get numbers from arg_cunit

If (arg_cunit .contains. "-") Then

  If (arg_cunit .contains. ",") Then
    !!$ "-" and "," are present.

  Else
    !!$ "-" only are present. 

  End If

Else If (arg_cunit .contains. ",") Then
  !!$ "," only are present

End If 

2 个答案:

答案 0 :(得分:6)

查看COMMAND_ARGUMENT_COUNTGET_COMMAND_ARGUMENT。例如,在gfortran手册中。它们是标准的Fortran内在函数。

答案 1 :(得分:3)

当然,您可以使用GET_COMMAND_ARGUMENT,但这很容易。问题的难点在于根据这些参数字符串用各种数值,逻辑和字符串值填充变量。这就是以下内容:

可以使用名单进行简单的参数解析。只需添加开始和结束标记即可。但它不是太灵活,但非常简单!

getopt的一个(非常!)短搜索显示了这个库的几个Fortran端口(或类似的包括解析的端口):

http://fortranwiki.org/fortran/show/getopt_long_module

http://www.dominik-epple.de/getoptions/

http://lagrange.mechse.illinois.edu/partmc/partmc-2.4.0/doc/html/getopt_8_f90_source.html

http://libsufr.sourceforge.net/doxygen/getopt_8f90_source.html(感谢AstroFloyd)