回 帖 发 新 帖 刷新版面

主题:Fortran主程序上可以带变量吗?

汗,不知道题目的问法准不准确,刚开始学Fortran,现在有个问题就是,我编了个主程序 PROGRAM EX1
能不能写成这种形式呢:PROGRAM EX1(变量1,变量2,变量3,变量4,变量5)?

因为我想用别的程序来调这个程序,要传递变量值的

我知道如果把EX1写成subroutine的话是可以传递变量的,但是程序中可以只有subroutine而没有PROGRAM 吗?

回复列表 (共4个回复)

沙发

标题问得很不恰当。

你描述的是命令行参数。

Fortran2003 有两个函数支持:
COMMAND_ARGUMENT_COUNT 用于得到命令行参数的个数
GET_COMMAND_ARGUMENT 用来得到命令行参数的内容

如果你的编译器不支持Fortran2003语法,你可以尝试以下的扩展函数:
GETARG
IARGC

板凳

我不太明白,LS的能说的详细点吗?谢谢啦~

3 楼

使用GETARG这个函数是不是需要手动键入变量值?

4 楼

给你线索了,你应该去查看帮助文档!

好吧,给你一个例子:

[quote][font=宋体][color=#FF0000]Program [/color][color=#000000]Main
  [/color][color=#FF0000]Implicit None
  Character[/color][color=#000080]([/color][color=#FF0000]Len[/color][color=#000080]=[/color][color=#800080]512[/color][color=#000080]) :: [/color][color=#000000]cStr
  [/color][color=#FF0000]Integer [/color][color=#000080]:: [/color][color=#000000]iNc [/color][color=#000080], [/color][color=#000000]i [/color][color=#000080], [/color][color=#FF0080]iLen
  [/color][color=#FF0000]Logical [/color][color=#000080]:: [/color][color=#000000]bStatus
  iNc [/color][color=#000080]= [/color][color=#000000]Command_Argument_Count [/color][color=#000080]()
  [/color][color=#FF0000]write[/color][color=#000080]( * , * ) [/color][color=#808080]'共有'[/color][color=#000080],[/color][color=#000000]iNc[/color][color=#000080],[/color][color=#808080]'个 参数'
  [/color][color=#FF0000]Do [/color][color=#000000]i [/color][color=#000080]= [/color][color=#800080]1 [/color][color=#000080], [/color][color=#000000]iNc
    [/color][color=#FF0000]Call [/color][color=#000000]Get_Command_Argument [/color][color=#000080]( [/color][color=#000000]i [/color][color=#000080], [/color][color=#000000]cStr [/color][color=#000080], [/color][color=#FF0080]iLen [/color][color=#000080], [/color][color=#000000]bStatus [/color][color=#000080])
    [/color][color=#FF0000]write[/color][color=#000080]( * , * ) [/color][color=#808080]'第' [/color][color=#000080], [/color][color=#000000]i [/color][color=#000080], [/color][color=#808080]'个参数为:' [/color][color=#000080], [/color][color=#FF0080]Trim[/color][color=#000080]( [/color][color=#000000]cStr [/color][color=#000080])
  [/color][color=#FF0000]End Do
End Program [/color][color=#000000]Main[/color][/font][/quote]


编译后运行:
[quote]
F:\test\Debug>console1.exe 1 2 3
 共有           3 个 参数
 第           1 个参数为:1
 第           2 个参数为:2
 第           3 个参数为:3
[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册