主题:Fortran主程序上可以带变量吗?
haiyang_zhang
[专家分:0] 发布于 2010-12-24 15:17:00
汗,不知道题目的问法准不准确,刚开始学Fortran,现在有个问题就是,我编了个主程序 PROGRAM EX1
能不能写成这种形式呢:PROGRAM EX1(变量1,变量2,变量3,变量4,变量5)?
因为我想用别的程序来调这个程序,要传递变量值的
我知道如果把EX1写成subroutine的话是可以传递变量的,但是程序中可以只有subroutine而没有PROGRAM 吗?
回复列表 (共4个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2010-12-24 15:48:00
标题问得很不恰当。
你描述的是命令行参数。
Fortran2003 有两个函数支持:
COMMAND_ARGUMENT_COUNT 用于得到命令行参数的个数
GET_COMMAND_ARGUMENT 用来得到命令行参数的内容
如果你的编译器不支持Fortran2003语法,你可以尝试以下的扩展函数:
GETARG
IARGC
板凳
haiyang_zhang [专家分:0] 发布于 2010-12-24 15:53:00
我不太明白,LS的能说的详细点吗?谢谢啦~
3 楼
haiyang_zhang [专家分:0] 发布于 2010-12-24 16:02:00
使用GETARG这个函数是不是需要手动键入变量值?
4 楼
臭石头雪球 [专家分:23030] 发布于 2010-12-24 16:08:00
给你线索了,你应该去查看帮助文档!
好吧,给你一个例子:
[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]
我来回复