在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
答案 0 :(得分:6)
查看COMMAND_ARGUMENT_COUNT
和GET_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)