Fortran/FAQ
本文包含一些关于 Fortran 的常见问题解答 (FAQ) 及其答案。
答:Fortran 并没有过时,而且在不久的将来也不会过时。Fortran 是一种通用编程语言,适用于许多应用程序。然而,它擅长数值计算和高性能计算。它速度快、可移植性好,并且可以无缝处理数组。正因为如此,存在许多用于数值算法的高质量 Fortran 库,它在科学界广泛使用(例如数值天气预报)。该语言本身仍在维护,并定期更新现代功能;最新版本是 Fortran 2018。
答:Oracle Solaris Studio、GNU Fortran、G95 和 Silverfrost(仅限 Windows)是免费的 Fortran 95 编译器,Absoft、IBM、Intel、Lahey、NAG、Pathscale 和 PGI 销售 Fortran 编译器。有关 Fortran 编译器的比较信息,请访问 维基百科。
答:使用“内部写入”创建文件名,例如
write (file_name,"('out_',i2.2,'.txt')") i
答:一种更简洁的方法是
i=<file number>
WRITE(file_name, fmt = '(A4,I0,A4)')'out_',i,'.txt'
这样格式就很清晰,你正在将正确的字符串写入变量。我假设你想要一个整数作为数字。“I”格式语句需要一个整数长度,或者在某些情况下为零。你可能在想 F,其中小数点表示要考虑的小数位数。
答:Gfortran 不接受此块
write(file_name,'cp',(i5.5),'.out') ITN
open (67,file = file_name)
出现错误,文件标签必须是 CHARACTER 类型
其他人可以帮忙吗?
答:请参见上面的答案。基本上,你写入变量 file_name 的方式不正确。
WRITE(file_name,fmt='(A2,I0,A4)')'cp',ITN,'.out'
OPEN(UNIT=67, file=file_name, status='new')
假设 ITN 已声明为整数并被赋予了值。
答:使用“内部读取”或“内部写入”。实际上,你使用一个字符变量作为文件名,并读取或写入 I/O 列表。你编写类似以下的内容
read (character_variable, format) list of variables
将字符串转换为另一种类型,以及
write (character_variable, format) list of variables
从另一种类型转换为字符串,如下面的程序所示
program xconvert_integer_string
character(20) :: cnum
integer :: i
i = 445
write(cnum,'(i5)') i
write(*,'(a)') trim(cnum) ! should output " 445"
write(cnum,'(i5.5)') i
write(*,'(a)') trim(cnum) ! should output "00445"
i = 34
write(cnum,'(i0)') i
write(*,'(a)') trim(cnum) ! should output "34"
end program xconvert_integer_string
此答案基于 Paul van Delst 和 Dick Hendrickson 在 comp.lang.fortran 中的邮件。
答。Fortran 2008 标准提供 execute_command_line
内在过程来进行系统调用。以前的版本没有标准方法来进行系统调用,但许多编译器都有名为“system”或类似名称的扩展。请查阅编译器的文档。在 Fortran 2003 中,可以调用 C 代码,并且可以从 C 中调用操作系统。