Command line Fortran命令行参数
在g++中,我使用Command line Fortran命令行参数,command-line,fortran,Command Line,Fortran,在g++中,我使用getopt_long来处理命令行选项。有吗 存在同样的东西吗 我希望能够通过一些Fortran单元测试 目前我有以下几点。大家可以注意到,我很小心 获得关键并重视自己。当使用C++ GETOPTTYLY 是为我做的 i = 1 Do Call Get_command_argument (i, arg) If (Len_trim (arg) == 0) Exit pos = Index (arg, "=") !!$ Long option argument. If (a
getopt_long
来处理命令行选项。有吗
存在同样的东西吗
我希望能够通过一些Fortran单元测试
目前我有以下几点。大家可以注意到,我很小心
获得关键并重视自己。当使用C++ GETOPTTYLY
是为我做的
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
查看
COMMAND\u ARGUMENT\u COUNT
和GET\u COMMAND\u ARGUMENT
。e、 g.,在gfortran手册中。它们是标准的Fortran内部语言。当然,您可以像以前一样使用GET\u COMMAND\u ARGUMENT
,但这是最简单的部分。问题的难点在于根据这些参数字符串用各种数字、逻辑和字符串值填充变量。这就是以下内容的作用:
可以使用名称列表进行简单的参数解析。只需添加开始和结束标记。虽然不太灵活,但非常简单
通过(非常!)短的google搜索getopt
可以发现该库的几个Fortran端口(或包含解析的类似端口):
及
(多亏了阿斯托弗洛伊德)我知道他们。还有其他的吗?当我使用
GET_COMMAND_ARGUMENT
时,我必须自己处理长短选项。库的作用不仅仅是获取参数字符串,而是解析它们并将值分配给数值和其他变量。从下面的评论中,我可以建议您将解析方面做得更明确一些吗?我没有得到要编译的第一个选项,第二个选项只有短选项,第三个选项不再存在。我为Fortran创建了一个getopt模块,其中包含libSUFR v0.7.3中的getopt()/getopt_long()-函数:更新了第三个,感谢您的通知。只是需要找到一个新版本,但很容易。