作者PTT0207445 (我是乡民)
看板Fortran
标题Re: [问题] f90档编译问题求助
时间Sun Apr 22 03:59:52 2018
按照你上一篇文章的程式码,fortran 90的语法大概像这样:
program hello
!this program will ask name and say hello
character(
25) :: u
WRITE(
*,
*)
'What is your name?(no more than 25 characters)'
READ(
*,
*) u
WRITE(
*,
*)
'Hello! ',
trim(u),
'. How are you?'
end program hello
1.主程式名称是hello,结束时最好用end program hello,明确表示hello结束了。
档名结尾.f 表示程式是fortran 77格式,.f90表示fortran 90格式。
end program hello是fortran 90的语法,end是fortran 77语法。
如果你的档名和实际程式的语法不同的话,照理说应该会向下相容,
但无法向上相容。结果你的错误讯息看起来是编译器找不到程式的结尾。
2.注解请用!,不要用C。
3.宣告的 :: 意思是,::的左边是变数的型态和属性,::的右边是变数名称。
4.NAME在fortran有别的用途,
或许应该避免把变数名称叫做NAME。
5.trim是内建函数,会把传入的字串有空格的尾巴删除。
6.putty只是连线程式,就好像PCMan一样可以用来连批踢踢,你也可以用putty连
上批踢踢,只要把连线通讯协定选为Telnet,主机ptt.cc就可以了。
所以你在putty上用vi写程式,这句话听起来很奇怪。应该说用putty连上某台主机,
或是说透过ssh或telnet连上某台主机,其实可以不用说,因为跟fortran没关系。
7.Fortran是很棒的程式语言,最好从fortran 90开始学,放弃fortran 77。
最後会发现Fortran可能是最快最有效率的,最容易平行化的程式语言。不需要mpi,
不用openmp,Fortran本身语法就能做平行处理,它叫做coarray,语法使用中跨号[*]
※ 引述《takaoclass (高雄级)》之铭言:
: 我是重拾fortran不久的新手,
: 我在putty上用vi编辑器写了一只f90档,
: 用gfortran hello.f90和gfortran -o k.exe hello.f90编译时,
: 都得到以下错误讯息:
: Error: Unexcepted end of file in 'hello.f90'
: 可是我用gfortran指令编译f档却毫无问题,
: 请哪位高手给我指点一下,感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 129.12.199.200
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1524340795.A.2A9.html
1F:推 alen84204: 推个 04/25 03:08
2F:→ noonee: 看目的啦 如果学fortran 是为了用别人的老code 还是学一下 06/02 05:38
3F:→ noonee: 77比较好 XD 06/02 05:38
4F:推 fragmentwing: 咦?刚刚上网查 coarray要2003版才开始支援? 04/18 11:11
5F:→ fragmentwing: 95好像也行 就是没90(虽然我明明记得90/95没差多少 04/18 11:12
6F:→ fragmentwing: 啊) 04/18 11:12